Docker - 命令大全
docker 常用的命令以及示例。
参考资料
基本命令
`uname -r` :查看内核
`systemctl start docker`: 启动docker镜像
`docker version` :查看docker版本
`docker info`:查看docker详细信息
`docker --help`:查看docker命令
1
2
3
4
5
2
3
4
5
镜像命令
docker images # 查看镜像列表
docker pull 镜像名称或ID # 拉取镜像到本地
docker push keke/unbantu-test:lastest # 上传镜像到仓库
docker save -o 导出的路径 镜像ID # 保存到本地镜像
docker load -i 镜像路径 # 加载本地镜像
docker tag 镜像ID 新镜像名称:版本 # 修改镜像名称
docker rmi 镜像名称或ID # 删除一个或者多个镜像
# 通过容器创建镜像:从已经创建的容器中更新镜像,并且提交这个镜像 使用 Dockerfile 指令来创建一个新的镜像 下面通过已存在的容器创建一个新的镜像。
docker commit -m="First Image" -a="keke" 7a15f99695c0 keke/unbantu:17.10.0
上面命令参数说明:
-m 提交的描述信息
-a 指定镜像作者
7a15f99695c0 :记住这个是容器id,不是镜像id
keke/unbantu:17.10.0: 创建的目标镜像名
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
容器命令
创建一个新的容器并运行一个命令
docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
1
OPTIONS说明:
- -a stdin: 指定标准输入输出内容类型,可选 STDIN/STDOUT/STDERR 三项;
- -d: 后台运行容器,并返回容器ID;
- -i: 以交互模式运行容器,通常与 -t 同时使用;
- -P: 随机端口映射,容器内部端口随机映射到主机的端口
- -p: 指定端口映射,格式为:主机(宿主)端口:容器端口
- -t: 为容器重新分配一个伪输入终端,通常与 -i 同时使用;
- --name="nginx-lb": 为容器指定一个名称;
- --dns 8.8.8.8: 指定容器使用的DNS服务器,默认和宿主一致;
- --dns-search example.com: 指定容器DNS搜索域名,默认和宿主一致;
- -h "mars": 指定容器的hostname;
- -e username="ritchie": 设置环境变量;
- --env-file=[]: 从指定文件读入环境变量;
- --cpuset="0-2" or --cpuset="0,1,2": 绑定容器到指定CPU运行;
- -m :设置容器使用内存最大值;
- --net="bridge": 指定容器的网络连接类型,支持 bridge/host/none/container: 四种类型;
- --link=[]: 添加链接到另一个容器;
- --expose=[]: 开放一个端口或一组端口;
- --volume , -v: 绑定一个卷
docker run 镜像ID|镜像名称[:tag] # 启动容器
docker run 镜像ID yum install -y -name # 在容器中安装新的程序:在执行 yum 命令的时候,要带上-y参数
docker run 镜像ID echo "hello wrold" # 在容器中运行"echo"命令,输出"hello world"
docker run -it 镜像ID /bin/bash # 交互式进入容器中
1
2
3
4
2
3
4
列出所有容器的ID:
docker ps -qa
1
OPTIONS说明:
- -a :显示所有的容器,包括未运行的。
- -f :根据条件过滤显示的内容。
- --format :指定返回值的模板文件。
- -l :显示最近创建的容器。
- -n :列出最近创建的n个容器。
- --no-trunc :不截断输出。
- -q :静默模式,只显示容器编号。
- -s :显示总的文件大小。
docker ps # 列出当前所有正在运行的容器
docker ps -qa # 列出所有容器的ID
docker ps -n 5 # 列出最近创建的5个容器信息
docker ps -f id=5b6 # 按id过滤
docker ps -f name=nginx # 按name过滤
docker ps -f status=running # 按status过滤
1
2
3
4
5
6
7
2
3
4
5
6
7
获取容器/镜像的元数据:
docker inspect --format='{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' mymysql
172.17.0.3
docker inspect mysql:5.6
[
{
"Id": "sha256:2c0964ec182ae9a045f866bbc2553087f6e42bfc16074a74fb820af235f070ec",
"RepoTags": [
"mysql:5.6"
],
"RepoDigests": [],
...
1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
执行容器中的shell:
docker exec -i 镜像ID /bin/bash -c "/home/build.sh"
1
OPTIONS说明:
- d :分离模式: 在后台运行
- i :即使没有附加也保持STDIN 打开
- t :分配一个伪终端
操作容器
# 启动、停止、重启、杀死某个docker 容器
docker start 容器ID
docker stop 容器ID
docker restart 容器ID
docker kill 容器ID
docker rm Name/ID # 删除容器
docker rm -f Name/ID # 强制删除某个容器
docker rm $(docker ps -qa) # 删除所有容器
docker rm $(docker ps -q -f status=exited) # 删除所有状态为exit的容器
docker pause # 暂停容器中所有的进程。
docker unpause # 恢复容器中所有的进程。
docker create # 创建一个新的容器但不启动它
docker top Name/ID # 查看容器内运行的进程
docker attach Name/ID # 连接到正在运行中的容器
docker wait Name/ID # 阻塞运行直到容器停止,然后打印出它的退出代码。
docker cp NameID:容器内的文件路径 宿主机路径 # 从容器里面拷贝文件/目录到本地一个路径
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
从服务器获取实时事件:
docker events [OPTIONS]
1
OPTIONS说明:
- -f :根据条件过滤事件;
- --since :从指定的时间戳后显示所有事件;
- --until :流水时间显示到指定的时间为止;
docker events -f "image"="mysql:5.6" --since="2016-07-01"
1
查看容器日志
docker logs [OPTIONS] CONTAINER
1
OPTIONS说明:
- -f : 跟踪日志输出
- --since :显示某个开始时间的所有日志
- -t : 显示时间戳
- --tail :仅列出最新N条容器日志
docker logs --since="2016-07-01" --tail=10 mynginx #查看容器mynginx从2016年7月1日后的最新10条日志
1