所有命令都可以在 Docker 的官方文档1或其他参考网站2中找到完整的说明。
镜像仓库
官网镜像站 Docker Hub
-
pull
从镜像仓库中拉取或者更新指定镜像1
2
3# 不加 tag 默认为拉取 latest(最新) docker pull python docker pull python:2.7.13
-
search
1
2# -s:列出收藏数大于等于 10 的镜像 docker search -s 10 java
容器生命周期管理
运行(创建)3
run
:使用某一镜像创建一个新的容器(并运行一个命令)
1 |
|
BTW,不指定 --name
时 Docker 会生成一个默认的名称,是对科学家的致敬,很有趣,具体可以参考这里。
1 |
|
-i
:以交互模式运行容器;-t
:为容器重新分配一个伪输入终端。对于需要进行交互的容器,这两个参数常常连用。
-w
/ --workdir=""
:指定容器的工作目录(默认起始目录)
镜像名之后跟的是初始运行时的命令。这里表示运行 bash 交互界面,否则若容器没有命令可执行(执行完全部命令)就会停止运行。
后台运行
run
参数 -d
自启动
run
参数 --restart=always
若已经创建容器,可以使用 docker update container_name --restart=always
来更新 restart 策略。
同样地,取消容器的自启动(否则该容器无法被停止,因而也无法被删除)可以使用 docker update container_name --restart=no
来实现。
映射到主机
-
端口映射
run
参数-p
1
2# 将容器的 80 端口映射到主机的 8080 端口 docker run -p 80:8080 nginx
-
目录挂载
run
参数-v
1
2# 将主机当前目录下的 test 目录挂载到容器的 /soft 目录(若不存在都会自动创建) docker run -itv $PWD/test:/soft centos /bin/bash
即使对同一个镜像,每次 run
得到的也是不同的容器。因此这里 run 的含义更倾向于创建并运行。仅创建容器的命令为 create
。
启动时设定的参数如需更改,可以将容器打包(commit)为新的镜像并用其重新创建容器。
启动与停止
docker start
/ stop
/ restart
字面意思。后接容器的 ID 或名字。
另有 docker kill
命令可以强制终止容器。相比之下,stop
能让容器“gracefully shutdown”4。
删除
docker rm
一般情况下只有停止运行后的容器才能被删除。可以通过参数 -f
强制删除一个运行中的容器。
容器操作
-
ps
命令:列出容器1
2# -a : 显示所有的容器,包括未运行的(默认仅列出正在运行的) docker ps -a
-
attach
命令:连接到正在运行中的容器(即重新进入已创建的容器)容器在被
attach
前必须先被start
:1
docker start 739a1e1b0aee && docker attach 739a1e1b0aee
-
cp
命令:在容器与主机之间复制数据1
2docker cp test.js 96f7f14e99ab:/test/ docker cp 96f7f14e99ab:/test/test.js .
-
exec
命令:在运行的容器中执行命令1
2# 在容器内使用 bash 运行脚本 docker exec -it mypy /bin/sh /root/test.sh
关于 attach
和 exec
命令的异同,可以参考 Docker 容器学习梳理 – 容器登陆方法梳理(attach、exec、nsenter)一文。
本地镜像管理
-
docker images
列出本地镜像