常用docker命令

最近要用docker,在这里记录docker常用命令

启动/停止/重启/杀掉容器

1
docker start/stop/restart/kill 容器name或容器id

示例

1
2
3
4
5
[root@docker ~]# docker start myweb
[root@docker ~]# docker stop myweb
[root@docker ~]# docker restart myweb
[root@docker ~]# docker kill -s kill myweb
参数 -s #向容器发送信号

创建并启动一个新的容器

1
docker run

常用参数
-d #后台运行容器,并返回容器ID
-i #以交互式模式运行容器,常与-t参数同时使用
-t #给容器重新分配一个伪终端,常与-i参数同时使用
–name #给容器指定一个名称
-m #指定容器使用内存的最大值
–net #指定容器使用的网络类型
–link #链接到另一个容器

示例

1
2
3
4
5
6
7
8
[root@docker ~]# docker run -d --name nginx nginx:latest
#后台启动并运行一个名为nginx的容器,运行前它会自动去docker镜像站点下载最新的镜像文件
[root@docker ~]# docker run -d -P 80:80 nginx:latest
#后台启动并运名为nginx的容器,然后将容器的80端口映射到物理机的80端口
[root@docker ~]# docker run -d -v /docker/data:/docker/data -P 80:80 nginx:latest
#后台启动并运名为nginx的容器,然后将容器的80端口映射到物理机的80端口,并且将物理机的/docker/data目录映射到容器的/docker/data
[root@docker ~]# docker run -it nginx:latest /bin/bash
#以交互式模式运行容器,然后在容器内执行/bin/bash命令

删除容器

1
docker rm 容器id或容器name

常用参数
-f #强制删除一个运行中的容器
-l #删除指定的链接
-v #删除与容器关联和卷

示例

1
2
3
4
5
6
[root@docker ~]# docker rm -f mydocker
#强制删除容器mydocker
[root@docker ~]# docker rm -f dockerA dockerB
#强制删除容器dockerA,dockerB
[root@docker ~]# docker rm -v mydocker
#删除容器,并删除容器挂载的数据卷

创建一个新的容器但不启动它

1
docker create

示例

1
2
3
[root@docker ~]# docker create --name myserver nginx:latest
09b93464c2f75b7b69f83d56a9cfc23ceb50a48a9db7652ee4c27e3e2cb1961f
#创建一个名为myserver的容器

在运行的容器中执行命令

1
docker exec

常用参数
-d #在后台运行
-i #保持STDIN打开
-t #分配一个伪终端

示例

1
2
3
4
5
6
[root@docker ~]# docker exec -it mydocker /bin/sh /server/scripts/docker.sh
hello world!!!!!!!!!!
#以交互模式执行容器中的/server/scripts/docker.sh脚本
[root@docker ~]# docker exec -it mydocker /bin/sh
root@b1a0703e41e7:/#
#以交互模式给容器分配一个伪终端连接

列出容器(正在运行)

1
docker ps

常用参数
-a #列出所有容器包括停止的
-f #根据条件过滤显示内容
-l #列出最近创建的容器
-n #列出最近创建的N个容器,N为数字
-q #只显示容器ID
-s #显示总文件大小

示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
[root@docker ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
bd96d72ed9c7 google/cadvisor "/usr/bin/cadvisor..." 47 hours ago Up 47 hours 0.0.0.0:8082->8080/tcp cadvisor
665563143eb7 grafana/grafana "/run.sh" 2 days ago Up 2 days 0.0.0.0:3000->3000/tcp grafana
f2304dad5855 tutum/influxdb "/run.sh" 2 days ago Up 2 days 0.0.0.0:8083->8083/tcp, 0.0.0.0:8086->8086/tcp influxdb
#列出正在运行的容器
[root@docker ~]# docker ps -n 2
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
bd96d72ed9c7 google/cadvisor "/usr/bin/cadvisor..." 47 hours ago Up 47 hours 0.0.0.0:8082->8080/tcp cadvisor
665563143eb7 grafana/grafana "/run.sh" 2 days ago Up 2 days 0.0.0.0:3000->3000/tcp grafana
#列出最近创建的2个容器
[root@docker ~]# docker ps -a -q
bd96d72ed9c7
665563143eb7
f2304dad5855
9921d2660307
#显示所有容器的ID

获取容器的元数据

1
docker inspect

常用参数
-f #指定返回值格式或模板文件
-s #显示总文件大小
–type #为指定类型返回JSON

示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
[root@docker ~]# docker inspect bd96d72ed9c7
[
{
"Id": "bd96d72ed9c713591ba8db0ed4c0ae2689188255da71033c7bced6bb34aa8542",
"Created": "2018-05-23T09:22:10.633809699Z",
"Path": "/usr/bin/cadvisor",
"Args": [
"-logtostderr",
"-storage_driver=influxdb",
"-storage_driver_db=cadvisor",
"-storage_driver_host=192.168.3.82:8086"
],
"State": {
"Status": "running",
"Running": true,
"Paused": false,
"Restarting": false,
"OOMKilled": false,
"Dead": false,
"Pid": 17589,
"ExitCode": 0,
"Error": "",
"StartedAt": "2018-05-23T09:22:10.769771142Z",
"FinishedAt": "0001-01-01T00:00:00Z"
},
"Image": "sha256:75f88e3ec333cbb410297e4f40297ac615e076b4a50aeeae49f287093ff01ab1",
"ResolvConfPath": "/var/lib/docker/containers/bd96d72ed9c713591ba8db0ed4c0ae2689188255da71033c7bced6bb34aa8542/resolv.conf",
"HostnamePath": "/var/lib/docker/containers/bd96d72ed9c713591ba8db0ed4c0ae2689188255da71033c7bced6bb34aa8542/hostname",
"HostsPath": "/var/lib/docker/containers/bd96d72ed9c713591ba8db0ed4c0ae2689188255da71033c7bced6bb34aa8542/hosts",
"LogPath": "",
"Name": "/cadvisor",
"RestartCount": 0,
"Driver": "overlay2",
"MountLabel": "",
"ProcessLabel": "",
"AppArmorProfile": "",
"ExecIDs": null,
"HostConfig": {
"Binds": [
"/:/rootfs,ro",
"/var/run:/var/run",
-------------------------------------------省略部分内容
#获取容器ID为bd96d72ed9c7的元数据信息
[root@docker ~]# docker inspect --format='{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' cadvisor
172.17.0.3
[root@docker ~]# docker inspect --format='{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' influxdb
172.17.0.2
#获取容器名为influxdb\cadvisor的IP地址

获取容器的日志

1
docker logs

常用参数
-f #跟踪日志输出
-t #显示时间戳
–tail #只显示最新n条容器日志
–since #显示某个开始时间的所有日志

实例操作如下:

1
2
3
4
5
6
[root@docker ~]# docker logs -f cadvisor
I0523 09:22:10.794233 1 storagedriver.go:48] Using backend storage type "influxdb"
I0523 09:22:10.794295 1 storagedriver.go:50] Caching stats in memory for 2m0s
I0523 09:22:10.794551 1 manager.go:151] cAdvisor running in container: "/sys/fs/cgroup/cpuacct,cpu"
I0523 09:22:10.810585 1 fs.go:139] Filesystem UUIDs: map[]
#跟踪查看容器cadvisor的日志

显示指定容器的端口映射

1
docker port

示例

1
2
3
[root@docker ~]# docker port cadvisor
8080/tcp -> 0.0.0.0:8082
#显示cadvisor容器的端口映射信息

用已存在的容器重新创建一个新的镜像

1
docker commit

常用参数
-a #提交的镜像作者
-c #使用Dockerfile指令来创建镜像
-m #提交时附上说明文字
-p #在commit时,将容器暂停

示例:

1
2
3
4
5
6
[root@docker ~]# docker commit -a "mingongge" -m "add a new images" bd96d72ed9c7  newdocker_images:v1.0.0
sha256:20ee805752cb7cae660fbae89d7c6ea4a9c6372f16a6cb079ecf6c79f87ed8c9
[root@docker ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
newdocker_images v1.0.0 20ee805752cb 7 seconds ago 62.2 MB
#将容器bd96d72ed9c7重新生成一个新的镜像名为newdocker_images

容器与物理主机之间拷贝文件

1
docker cp

示例

1
2
3
4
5
6
[root@docker ~]# docker cp /data/index.html bd96d72ed9c7:/web/
#将物理主机中的/data/index.html拷贝到容器bd96d72ed9c7:/web/目录下
[root@docker ~]# docker cp /data/index.html bd96d72ed9c7:/web/index.php
#将物理主机中的/data/index.html拷贝到容器bd96d72ed9c7:/web/目录下并改名为index.php
[root@docker ~]# docker cp bd96d72ed9c7:/web /data/
#拷贝容器bd96d72ed9c7:/web/目录到物理主机中的/data/目录下

登录与登出容器镜像仓库

1
2
docker login       #登陆到一个Docker镜像仓库,如果未指定镜像仓库地址,默认为官方仓库 Docker Hub
docker logout #登出一个Docker镜像仓库,如果未指定镜像仓库地址,默认为官方仓库 Docker Hub

常用参数
-u #登陆的用户名
-p #登陆的密码

示例

1
2
3
4
5
[root@docker ~]# docker login -u username -p password
Login Succeeded
[root@docker ~]# docker logout
Removing login credentials for https://index.docker.io/v1/
#登录与登出默认的容器镜像仓库

从镜像仓库中拉取或上传镜像

1
2
docker pull    #从镜像仓库中拉取或者更新指定镜像
docker push #将本地的镜像上传到镜像仓库,要先登陆到镜像仓库

示例:

1
2
3
4
5
6
7
8
9
10
[root@docker ~]# docker  pull  nginx
Using default tag: latest
Trying to pull repository docker.io/library/nginx ...
latest: Pulling from docker.io/library/nginx
f2aa67a397c4: Already exists
3c091c23e29d: Pulling fs layer
4a99993b8636: Pulling fs layer
#从镜像仓库中拉取或者更新指定镜像,输出信息如上
[root@docker ~]# docker push newdocker_images:v1.0.0
#上传镜像到镜像仓库上

显示系统本地容器镜像文件

1
docker images

常用参数
-a #列出所有的镜像(含中间映像层,默认,过滤掉中间映像层);
–digests #显示镜像的摘要信息;
-f #显示满足条件的镜像;
–format #指定返回值的模板文件;
–no-trunc #显示完整的镜像信息;
-q #只显示镜像ID。

示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
[root@docker ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
newdocker_images v1.0.0 20ee805752cb 28 minutes ago 62.2 MB
docker.io/grafana/grafana latest 4700307f41f2 9 days ago 238 MB
registry.jumpserver.org/public/guacamole 1.0.0 6300349f2642 2 months ago 1.23 GB
docker.io/google/cadvisor latest 75f88e3ec333 5 months ago 62.2 MB
docker.io/tutum/influxdb latest c061e5808198 19 months ago 290 MB
#列出本地所有的镜像
[root@docker ~]# docker images -q
20ee805752cb
4700307f41f2
6300349f2642
75f88e3ec333
c061e5808198
#只显示容器ID
[root@docker ~]# docker images --digests
REPOSITORY TAG DIGEST IMAGE ID CREATED SIZE
newdocker_images v1.0.0 <none> 20ee805752cb 32 minutes ago 62.2 MB
docker.io/grafana/grafana latest sha256:364bec4a39ecbec744ea4270aae35f6554eb6f2047b3ee08f7b5f1134857c32c 4700307f41f2 9 days ago 238 MB
registry.jumpserver.org/public/guacamole 1.0.0 sha256:ea862bb2e83b648701655c27900bca14b0ab7ab9d4572e716c25a816dc55307b 6300349f2642 2 months ago 1.23 GB
docker.io/google/cadvisor latest sha256:9e347affc725efd3bfe95aa69362cf833aa810f84e6cb9eed1cb65c35216632a 75f88e3ec333 5 months ago 62.2 MB
docker.io/tutum/influxdb latest sha256:5b7c5e318303ad059f3d1a73d084c12cb39ae4f35f7391b79b0ff2c0ba45304b c061e5808198 19 months ago 290 MB
[root@docker ~]# docker images --no-trunc
REPOSITORY TAG IMAGE ID CREATED SIZE
newdocker_images v1.0.0 sha256:20ee805752cb7cae660fbae89d7c6ea4a9c6372f16a6cb079ecf6c79f87ed8c9 32 minutes ago 62.2 MB
docker.io/grafana/grafana latest sha256:4700307f41f249630f6d772638ad8d32c7d7e3ec86c324d449d5e21076991bb7 9 days ago 238 MB
registry.jumpserver.org/public/guacamole 1.0.0 sha256:6300349f264218e783cd2bd6f7863d356ac8d5ac05a62584cb4680af7ebec292 2 months ago 1.23 GB
docker.io/google/cadvisor latest sha256:75f88e3ec333cbb410297e4f40297ac615e076b4a50aeeae49f287093ff01ab1 5 months ago 62.2 MB
docker.io/tutum/influxdb latest sha256:c061e580819875fad91910841fd3fc53893524bbb9326a68b2470861633aebb1 19 months ago 290 MB
#可以对比下两个参数显示的不同信息

删除镜像

1
docker rmi

常用参数
-f #强制删除

标记本地镜像

1
docker tag

示例

1
2
3
4
5
6
7
8
9
[root@docker ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
newdocker_images v1.1.0 858cbd9ba687 39 seconds ago 62.2 MB
[root@docker ~]# docker tag newdocker_images:v1.1.0 newdocker_images:v2
[root@docker ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
newdocker_images v1.1.0 858cbd9ba687 4 minutes ago 62.2 MB
newdocker_images v2 858cbd9ba687 4 minutes ago 62.2 MB
#从结果可以看出两个容器的ID是一样的,只是TAG改变了,类似于linux中文件与文件的硬链接一样,其两者的inode号相同。

使用Dockerfile创建镜像

1
docker build

常用参数
-f #指定要使用的Dockerfile路径
–label=[] #设置镜像使用的元数据;
-m #设置内存最大值
–memory-swap #设置Swap的最大值为内存+swap,”-1”表示不限swap
–no-cache #创建镜像的过程不使用缓存
–pull #尝试去更新镜像的新版本
-q #安静模式,成功后只输出镜像ID
–rm #设置镜像成功后删除中间容器
–ulimit #Ulimit配置

查看指定镜像的创建历史

1
docker history

常用参数
-H #以可读的格式打印镜像大小和日期,默认为true;
–no-trunc #显示完整的提交记录;
-q #仅列出提交记录ID。

示例

1
2
3
4
5
6
7
8
9
10
11
[root@docker ~]# docker history newdocker_images:v2
IMAGE CREATED CREATED BY SIZE COMMENT
858cbd9ba687 32 minutes ago -storage_driver=influxdb -storage_driver_d... 0 B add new images
75f88e3ec333 5 months ago /bin/sh -c #(nop) ENTRYPOINT ["/usr/bin/c... 0 B
<missing> 5 months ago /bin/sh -c #(nop) EXPOSE 8080/tcp 0 B
<missing> 5 months ago /bin/sh -c #(nop) ADD file:e138bb5c0c12107... 26.5 MB
<missing> 5 months ago /bin/sh -c apk --no-cache add ca-certifica... 30.9 MB
<missing> 5 months ago /bin/sh -c #(nop) ENV GLIBC_VERSION=2.23-r3 0 B
<missing> 5 months ago /bin/sh -c #(nop) MAINTAINER dengnan@goog... 0 B
<missing> 5 months ago /bin/sh -c #(nop) CMD ["/bin/sh"] 0 B
<missing> 5 months ago /bin/sh -c #(nop) ADD file:c05a199f603e2a9... 4.82 MB

显示 Docker 系统信息,包括镜像和容器数

1
docker info

示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
[root@docker ~]# docker info
Containers: 4
Running: 3
Paused: 0
Stopped: 1
Images: 5
Server Version: 1.13.1
Storage Driver: overlay2
Backing Filesystem: xfs
Supports d_type: true
Native Overlay Diff: true
Logging Driver: journald
Cgroup Driver: systemd
Plugins:
Volume: local
Network: bridge host macvlan null overlay
Swarm: inactive
Runtimes: docker-runc runc
Default Runtime: docker-runc
Init Binary: /usr/libexec/docker/docker-init-current
containerd version: (expected: aa8187dbd3b7ad67d8e5e3a15115d3eef43a7ed1)
runc version: e9c345b3f906d5dc5e8100b05ce37073a811c74a (expected: 9df8b306d01f59d3a8029be411de015b7304dd8f)
init version: 5b117de7f824f3d3825737cf09581645abbe35d4 (expected: 949e6facb77383876aeff8a6944dde66b3089574)
Security Options:
seccomp
WARNING: You're not using the default seccomp profile
Profile: /etc/docker/seccomp.json
Kernel Version: 3.10.0-693.el7.x86_64
Operating System: CentOS Linux 7 (Core)
OSType: linux
Architecture: x86_64
Number of Docker Hooks: 3
CPUs: 1
Total Memory: 7.64 GiB
Name: docker
ID: K7N6:CHF5:KAZP:QFDB:VYBP:IWMW:7VMV:L4TB:OJD2:SEZI:YRRR:4TJN
Docker Root Dir: /var/lib/docker
Debug Mode (client): false
Debug Mode (server): false
Registry: https://index.docker.io/v1/
WARNING: bridge-nf-call-iptables is disabled
WARNING: bridge-nf-call-ip6tables is disabled
Experimental: false
Insecure Registries:
127.0.0.0/8
Live Restore Enabled: false
Registries: docker.io (secure)

显示 Docker 版本信息

1
docker version

示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
[root@docker ~]# docker version
Client:
Version: 18.05.0-ce
API version: 1.37
Go version: go1.9.5
Git commit: f150324
Built: Wed May 9 22:16:25 2018
OS/Arch: linux/amd64
Experimental: false
Orchestrator: swarm

Server:
Engine:
Version: 18.05.0-ce
API version: 1.37 (minimum version 1.12)
Go version: go1.9.5
Git commit: f150324
Built: Wed May 9 22:14:32 2018
OS/Arch: linux/amd64
Experimental: false
打赏

请我喝杯咖啡吧~

支付宝
微信