- 前言
- 1. 镜像相关
- 1.1 docker search 搜索镜像
- 1.2 docker pull 拉取镜像
- 1.3 docker image 管理镜像
- 1.4 镜像的更新
- 2. 容器相关
- 2.1 docker run 运行容器
- 2.2 docker ps 查看容器
- 2.3 docker container 管理容器
Docker 中比较关键的概念是镜像与容器,容器基于镜像而创建,但是一旦容器创建运行之后与镜像就没有太大依赖了,二者的关系可理解如下:
1. 镜像相关 1.1 docker search 搜索镜像
- 镜像
未运行的程序包,类似安装软件时需要的安装文件- 容器
容器基于镜像创建,可以看作运行中的程序,也就是进程
执行 docker search nginx 命令可搜索 nginx 的镜像,示例如下
1.2 docker pull 拉取镜像执行 docker pull nginx 默认拉最新版本的 nginx 镜像,示例如下
1.3 docker image 管理镜像docker image 命令用于管理本地的镜像,常用 OPTIONS 参数如下表格
| OPTION | 功能 |
|---|---|
| ls | 列出所有镜像,与命令docker images功能相同 |
| rm | 删除镜像 |
| build | 依据 Dockerfile 文件构建镜像 |
| history | 查看镜像的历史,如docker image history nginx:latest |
| inspect | 查看镜像的详细信息 |
在已有镜像的基础上进行修改更新,这部分读者如感兴趣可参考 Docker 使用-将容器打成镜像 ,此处不再赘述
2. 容器相关 2.1 docker run 运行容器获取到镜像文件后,需要使用 docker run 命令基于镜像创建容器才能使程序运行起来,以下是创建一个 nginx 容器并启动的示例,该命令的重点如下
docker run -d -p 80:80/tcp --name nginx-web -v /Users/nathan/tool/docker_nginx/conf/nginx.conf:/etc/nginx/nginx.conf -v /Users/nathan/tool/docker_nginx/logs:/var/log/nginx nginx:1.21.0
2.2 docker ps 查看容器
- -d: 设置容器后台运行
- -p: 本机:容器端口映射, 将本地的80端口映射到容器内部的80端口,并显式指定传输协议
- –name: 容器命名,需保持唯一
- -v: 本机:容器映射目录,此处需保证本机文件及目录已经存在,/etc/nginx/nginx.conf 为容器内部 nginx 默认配置文件
- 命令最后一个nginx:1.21.0是使用的镜像的名称
另外也可以使用 –net 来指定容器的网络模式,示例格式为 –net=host
host 模式
容器与宿主机在同一个网络中,但没有独立 IP 地址,容器与宿主机通信无须进行 NAT 转换,没有性能损耗container 模式
使用 –net=container:NAME_or_ID 指定,与 host 模式类似,只不过新创建的容器和已经存在的一个容器共享一个网络,而不是和宿主机共享none 模式
将容器放置在它自己的网络栈中,但是并不进行任何配置。实际上这个模式关闭了容器的网络功能,在容器并不需要网络(例如只需要写磁盘的批处理任务)时是有用的bridge 模式
默认模式。容器有独立 IP 地址,并连接到 docker0 虚拟网卡,通过 docker0 网桥以及 Iptables nat 表配置与宿主机通信
docker ps 命令默认列出运行中的容器,其常用 OPTIONS 参数如下表格,读者可大致参考
| OPTION | 功能 |
|---|---|
| -a | 列出所有容器,包括非运行状态 |
| -f | 过滤符合条件的容器,需后接参数,如 docker ps -af name=nginx |
| -n | 列出最后创建的 n 个容器,需后接参数,如docker ps -n 2 |
docker container 可用于管理本地的容器,其常用 OPTIONS 参数如下表格
| OPTION | 功能 |
|---|---|
| ls | 列出所有运行状态的容器 |
| cp | 在宿主机和容器之间复制文件,第一个文件/目录为源,第二个文件/目录为目标,如docker cp ef4335b8d7ba:/etc/nginx/nginx.conf ./conf |
| rm | 删除容器 |
| start | 启动容器 |
| logs | 查看容器输出日志,排查容器未运行等问题时非常有用 |
| stop | 停止运行的容器 |
| restart | 重启容器 |
| exec | 在运行的容器中执行命令,如docker container exec -it eda05ad514f8 /bin/sh,该命令与docker exec -it eda05ad514f8 /bin/sh功能相同 |
| inspect | 查看容器的详细信息 |



