docker介绍
docker架构
docker概念
名称 | 解释 |
---|---|
镜像(Images) | Docker 镜像是用于创建 Docker 容器的模板。 |
容器(Container) | 容器是独立运行的一个或一组应用。 |
客户端(Client) | Docker 客户端通过命令行或者其他工具使用 Docker API 与 Docker 的守护进程通信。 |
主机(Host) | 一个物理或者虚拟的机器用于执行 Docker 守护进程和容器。 |
镜像仓库(Repository) | 用来存储具体的镜像,可以理解为代码控制中的代码仓库。通过tag区分版本号 |
注册服务器(Registry) | 用于管理镜像仓库,起到的是服务器的作用。默认是官方的Docker Hub,可以搭建私有服务器 |
镜像资源分为两类:
- 官方提供的,名称不带前缀,如:
hello-world
- docker用户创建并维护的,名称带用户名前缀,如:
username/hello-world
镜像名完整组成:registryhost/username/repository:tag
即服务主机/用户名/仓库名:版本号
- registryhost不填,则默认为DockerHub
- username不填,则表示docker官方提供的镜像
- tag不填,则默认为latest
下载安装
安装
官网下载安装,按提示一步步完成,国内下载速度慢的话可以使用迅雷。
注:windows下默认安装在C盘,镜像多的话可能会导致C盘越来越大,可以修改镜像存储路径,参考博客
- windows上安装的docker其实本质上还是借助与windows平台的hyper-v技术来创建一个linux虚拟机,你执行的所有命令其实都是在这个虚拟机里执行的,所以所有pull到本地的image都会在虚拟机的Virtual hard disks目录的文件中,这个文件就是虚拟硬盘文件。如果要想改变路径只需要在hyper-v管理器里设置就可以了。默认的安装路径是
C:\Users\Public\Documents\Hyper-V\Virtual hard disks
下。 - 将默认
C:\Users\Public\Documents\Hyper-V\Virtual hard disks\MobyLinuxVM.vhdx
的文件拷贝到想要改变的路径 - 控制面板->管理工具->Hyper-V管理器->右键设置->硬盘驱动器->虚拟硬盘输入为想要保存的路径
- 我试了一下发现重启之后又恢复成原来的路径,解决如下
镜像服务器设置
Perferences… -> Daemon -> Registry mirrors配置
windows:在setting -> Daemon -> Registry mirrors中配置
镜像地址:
- 网易加速器:http://hub-mirror.c.163.com
- 官方中国加速器:https://registry.docker-cn.com
- ustc的镜像:https://docker.mirrors.ustc.edu.cn
- daocloud:https://www.daocloud.io/mirror#accelerator-doc(注册后使用)
常用命令
可视化工具:Kitematic
分类
- 容器生命周期管理:
docker [run|start|stop| restart|kill|rm|pause|unpause]
- 容器操作运维:
docker [ps|inspect|top|attach|events|logs|wait|export|port]
- 容器rootfs命令:
docker [commit|cp|diff]
- 镜像仓库:
docker [login|pull|push|search]
- 本地镜像管理:
docker [images|rmi|tag|build|history|save|import]
- 其他命令:
docker [info|version]
命令
CONTAINER::可以是容器名也可以是容器id
REPOSITORY:仓库名
REGISTRYHOST:服务主机地址
IMAGE:镜像名
TAG:版本号,不填则默认为latest
基本
docker
:查看docker帮助docker <COMMAND> --help
:查看具体命令帮助docker -v
,docker --version
:查看docker版本docker info
:查看docker系统信息docker inspect [OPTIONS] NAME|ID [NAME|ID...]
:获取容器/镜像的元数据。
常用OPTIONS:1
2
3-f :指定返回值的模板文件。
-s :显示总的文件大小。
--type :为指定类型返回JSON。
仓库
docker login -u 用户名 -p 密码
: 登陆到一个Docker镜像仓库,如果未指定镜像仓库地址,默认为官方仓库 Docker Hubdocker logout
: 登出一个Docker镜像仓库,如果未指定镜像仓库地址,默认为官方仓库 Docker Hubdocker search 镜像名
:从Docker Hub查找镜像docker pull [OPTIONS] NAME[:TAG|@DIGEST]
: 从镜像仓库中拉取或者更新指定镜像docker push [OPTIONS] NAME[:TAG]
:将本地的镜像上传到镜像仓库,要先登陆到镜像仓库
容器
docker container ls
或docker ps
:列出运行的容器,加-a或–all可列出所有容器- COMMAND列表示容器启动时执行的命令,加
--no-trunc
选项显示完整命令
- COMMAND列表示容器启动时执行的命令,加
docker create [OPTIONS]
镜像名:创建新容器,但不启动docker run [OPTIONS] 镜像名
:创建新容器并运行
会从本地查找镜像,若不存在,则从默认公共镜像源(DockerHub)下载
常用OPTIONS:
1 | -p: 端口映射,格式为:主机(宿主)端口:容器端口 |
docker start [OPTIONS] CONTAINER [CONTAINER...]
:启动一个或多个已经被停止的容器docker stop [OPTIONS] CONTAINER [CONTAINER...]
:停止一个或多个运行中的容器docker restart [OPTIONS] CONTAINER [CONTAINER...]
:重启一个或多个容器docker kill [OPTIONS] CONTAINER [CONTAINER...]
:杀掉一个或多个运行中的容器docker rm [OPTIONS] CONTAINER [CONTAINER...]
:删除一个或多少容器docker logs [OPTIONS] CONTAINER
:获取容器的日志docker top [OPTIONS] CONTAINER [ps OPTIONS]
:查看容器中运行的进程信息,支持 ps 命令参数。
镜像
docker images
:列出本地镜像docker inspect [OPTIONS] NAME|ID [NAME|ID...]
:获取容器/镜像的元数据
常用OPTIONS:1
2
3-f :指定返回值的模板文件。
-s :显示总的文件大小。
--type :为指定类型返回JSON。
docker build [OPTIONS] PATH | URL | -
:根据Dockerfile构建镜像
常用OPTIONS::
1 | - -t,--tag : 镜像的名字及标签,通常 name:tag 或者 name 格式;可以在一次构建中为一个镜像设置多个标签。 |
docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]
:从容器创建一个新的镜像常用OPTIONS:
1
2
3
4-a :提交的镜像作者;
-c :使用Dockerfile指令来创建镜像;
-m :提交时的说明文字;
-p :在commit时,将容器暂停。docker tag [OPTIONS] IMAGE[:TAG][REGISTRYHOST/][USERNAME/]NAME[:TAG]
:修改镜像的所属仓库docker rmi [OPTIONS] IMAGE [IMAGE...]
:删除一个或多个本地镜像OPTIONS说明:
1
2-f :强制删除;
--no-prune :不移除该镜像的过程镜像,默认移除;
把镜像上传到Docker Hub
注册docker账号
- 输入DockerId(即用户名,英文小写和数字),邮箱,密码
- 邮箱验证
在hub上创建仓库
Create Repository,起名,如hello-world,则路径为username/hello-word
下载镜像
搜索镜像:docker search hello-world
拉取镜像:docker pull hello-world
运行容器
创建新容器并运行:docker run --name my-hello-world -d hello-world
查看容器
docker ps
,docker container ls
:可以看到容器id,容器名称等信息。
创建镜像
基于Dockerfile构建新镜像
待补充//todo
使用commit从容器创建镜像
docker commit -p 容器id/容器名 my-hello-world:v1
查看镜像
查看本地镜像:docker images
可以修改镜像的所属仓库:docker tag [OPTIONS] IMAGE[:TAG] [REGISTRYHOST/][USERNAME/]NAME[:TAG]
登录docker账号
输入docker login
,接着输入用户名和密码
或者在docker图形界面登录
本地镜像上传到镜像仓库
docker push username/my-hello-world:v1
:上传成功后可以到hub上查看是否创建成功
问题记录
原先在windows上用的终端是Git Bash,在使用docker的jenkins容器时,需要docker exec -it jenkins /bin/bash
,进入交互解释器,提示the input device is not a TTY. If you are using mintty, try prefixing the command with 'winpty'
这是由于终端和linux不一样,网上有很多解决办法,说的有点多,弄了一会没弄好就没耐心了,正好我觉得Git Bash不太好用了,如复制粘贴快捷键(一点都不快捷,笔记本的键盘可能会好点)是Ctrl+ins
和Shift+ins
,且命令提示也不是很友好,于是趁此机会换了cmder命令行工具,顺便学习了一下,结果很满意,想看的可以移步这里。
结语
参考资料: