IT@程序员猿媛docker

【docker 笔记】docker 基础命令相关整理

2019-05-04  本文已影响27人  58bc06151329

文前说明

作为码农中的一员,需要不断的学习,我工作之余将一些分析总结和学习笔记写成博客与大家一起交流,也希望采用这种方式记录自己的学习之旅。

本文仅供学习交流使用,侵权必删。
不用于商业目的,转载请注明出处。

1. 概述

1.1 依附容器(docker attach)

操作 说明
--detach-keys="" 覆盖键序列分离容器。可以是一个单独的字符 [a-z],也可以是 Ctrl-<value>,<value> 可以是 [a-z]、@、^、[、, 或者 _。
--help 打印帮助信息。
--no-stdin=true|false 不附加输入操作。默认为 false。
--sig-proxy=true|false 代理所有接受到的信号到进程中(仅限非 TTY 模式),SIGCHLD、SIGKILL 和 SIGSTOP 是非代理的,默认为 true。

1.2 构建镜像(docker build)

docker build 反复执行多个命令
参数 说明
--build-arg=[] 设置镜像创建时的变量。
--cpu-shares 设置 cpu 使用权重。
--cpu-period 限制 CPU CFS 周期。
--cpu-quota 限制 CPU CFS 配额。
--cpuset-cpus 指定使用的 CPU id。
--cpuset-mems 指定使用的内存 id。
--disable-content-trust 忽略校验,默认开启。
-f 指定要使用的 Dockerfile 路径。
--force-rm 设置镜像过程中删除中间容器。
--isolation 使用容器隔离技术。
--label=[] 设置镜像使用的元数据。
-m 设置内存最大值。
--memory-swap 设置 Swap 的最大值为内存 +swap," -1 " 表示不限 swap。
--no-cache 创建镜像的过程不使用缓存。
--pull 尝试去更新镜像的新版本。
--quiet, -q 静默模式,成功后只输出镜像 ID。
--rm 设置镜像成功后删除中间容器。
--shm-size 设置 /dev/shm 的大小,默认值是 64M。
--ulimit Ulimit 配置。
--tag, -t 镜像的名字及标签,通常 name:tag 或者 name 格式。可以在一次构建中为一个镜像设置多个标签。
--network 默认 default。在构建期间设置 run 指令的网络模式。
--help 帮助信息。
--build-arg=variable 构建参数。例如 --build-arg=http_proxy="http://some.proxy.url"。
--compress 使用 gzip 压缩生成上下文。默认值 false。
[root@localhost ~]# docker build -t whenry/fedora-jboss .             //标签。
[root@localhost ~]# docker build -f /root/Dockerfile .                //指定 Dockerfile。
[root@localhost ~]# docker build github.com/creack/docker-firefox     //Git
[root@localhost ~]# docker build -f dev/Dockerfile https://10.10.10.1/docker/context.tar.gz
[root@localhost ~]# docker build -t test/myapp .
Sending build context to Docker daemon 2.048 kB
Error response from daemon: Unknown instruction: RUNCMD

1.2.1 Dockerfile 语法

FROM

FROM centos:centos7

MAINTAINER

MAINTAINER "XXX CLOUD DEV" <dev@xxx-cloud.com>

LABEL

LABEL "com.example.vendor"="ACME Incorporated"
LABEL com.example.label-with-value="foo"
LABEL version="1.0"
LABEL description="This text illustrates \
that label-values can span multiple lines."

ENV

ENV OVIRT_FQDN localhost
ENV HOST_INSTALL=true

EXPOSE

EXPOSE 8080 8443

USER

USER root

ADD

ADD test relativeDir/ 
ADD test /relativeDir
ADD http://example.com/foobar /

COPY

COPY supervisord.conf /etc/

RUN

RUN /bin/bash -c 'source $HOME/.bashrc; echo $HOME
RUN ["/bin/bash", "-c", "echo hello"]

CMD

CMD [ "sh", "-c", "echo $HOME"]
CMD [ "echo", "$HOME" ]
CMD bash /sdcvm-setup-run.sh

ENTRYPOINT

ROM ubuntu
ENTRYPOINT ["top", "-b"]
CMD ["-c"]
FROM ubuntu
ENTRYPOINT ["top", "-b"]
CMD ls -al
ENTRYPOINT 和 CMD 的不同组合

VOLUME

VOLUME ["/var/log/"]
VOLUME /var/log
VOLUME /var/log /var/db

WORKDIR

WORKDIR /a
WORKDIR b
WORKDIR c
RUN pwd
ENV DIRPATH /path
WORKDIR $DIRPATH/$DIRNAME
RUN pwd

ARG

[Warning] One or more build-args [varname1] were not consumed.
FROM busybox
ARG user1
ARG user2=someuser

ONBUILD

ONBUILD RUN ls -al

STOPSIGNAL

HEALTHCHECK

OPTIONS 选项 说明
--interval=DURATION 两次检查默认的时间间隔为 30 秒。
--timeout=DURATION 健康检查命令运行超时时长,默认 30 秒。
--retries=N 当连续失败指定次数后,则容器被认为是不健康的,状态为 unhealthy,默认次数是 3。
HEALTHCHECK --interval=5m --timeout=3s \
CMD curl -f http://localhost/ || exit 1

1.3 提交容器(docker commit)

docker commit 转换为只读层
参数 说明
-a, --author string 提交的镜像作者。
-c, --change list 使用 Dockerfile 指令来创建镜像。(可使用的指令有 CMD、ENTRYPOINT、ENV、EXPOSE、LABEL、ONBUILD、USER、VOLUME、WORKDIR)
-m, --message string 提交时的说明文字。
-p, --pause 在 commit 时,将容器暂停。
--help 帮助信息。
[root@localhost ~]# docker commit -a "xxx.com" -m "my apache" a404c6c174a2  mymysql:v1 
sha256:37af1236adef1544e8886be23010b66577647a40bc02c0885a6600b33ee28057
[root@localhost ~]# docker images mymysql:v1
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
mymysql             v1                  37af1236adef        15 seconds ago      329 MB

1.4 复制(docker cp)

参数 说明
-L, --follow-link 保持源目标中的链接。
-a, --archive 存档模式(复制所有 uid/gid 信息)。
--help 帮助信息。
[root@localhost ~]# docker cp sharp_ptolemy:/tmp/foo/myfile.txt /test        //从容器到本地
[root@localhost ~]# docker cp /config/. myappcontainer:/etc/my-app.d         //从本地到容器

1.5 创建容器(docker create)

docker create 添加一个可读写层
常用参数 说明
-i, --interactive=false 打开 STDIN,用于控制台交互,通常与 -t 同时使用。
-t, --tty=false 为容器重新分配一个伪输入终端,通常与 -i 同时使用,默认为 false。
-u, --user="" 指定容器的用户。(用户名或者 UID)
-a, --attach=[] 登录容器(必须是以 docker run -d 启动的容器),可以选择 STDIN、STDOUT 或者 STDERR。
-w, --workdir="" 指定容器的工作目录。
-c, --cpu-shares=0 设置容器 CPU 权重,在 CPU 共享场景中使用。
-e, --env=[] 指定环境变量,容器中可以使用该环境变量。
-m, --memory="" 指定容器的内存上限。
-P, --publish-all=false 将所有公开端口发布到随机端口。
-p, --publish=[] 指定容器暴露的端口,默认为 [],端口映射,格式为:主机(宿主)端口:容器端口
-h, --hostname="" 指定容器的主机名。
-v, --volume=[] 给容器挂载存储卷,挂载到容器的某个目录。
--volumes-from=[] 给容器挂载其他容器上的卷,挂载到容器的某个目录。
--cap-add=[] 添加权限。
--cap-drop=[] 删除权限。
--cidfile="" 运行容器后,在指定文件中写入容器 PID 值,一种典型的监控系统用法。
--cpuset="" 设置容器可以使用的 CPU,此参数可以用来容器独占 CPU。
--device=[] 添加主机设备给容器,相当于设备直通。
--dns=[] 指定容器的 dns 服务器。
--dns-search=[] 指定容器的 dns 搜索域名,写入到容器的 /etc/resolv.conf 文件。
--entrypoint="" 覆盖 image 的入口点。
--env-file=[] 指定环境变量文件,文件格式为每行一个环境变量。
--expose=[] 指定容器暴露的端口,即修改镜像的暴露端口。
--link=[] 指定容器间的关联,使用其他容器的 IP、env 等信息。
--lxc-conf=[] 指定容器的配置文件,只有在指定 --exec-driver=lxc 时使用。
--name="" 指定容器名字,后续可以通过名字进行容器管理,links 特性需要使用名字。
--net="bridge" 容器网络设置(bridge:使用 docker daemon 指定的网桥、host:容器使用主机的网络、container:NAME_or_ID:使用其他容器的网络,共享 IP 和 PORT 等网络资源、none:容器使用自己的网络(类似 --net=bridge),但是不进行配置。)
--privileged=false 指定容器是否为特权容器,特权容器拥有所有的 capabilities。
--restart="no" 指定容器停止后的重启策略,no:容器退出时不重启、on-failure:容器故障退出(返回值非零)时重启、always:容器退出时总是重启。
--rm=false 指定容器停止后自动删除容器(不支持以 docker run -d 启动的容器)。
--sig-proxy=true 设置由代理接受并处理信号,但是 SIGCHLD、SIGSTOP 和 SIGKILL 不能被代理。
--help 帮助信息。
-l, --label list 在容器上设置元数据(默认值为[])。
[root@localhost ~]# docker create  --name myrunoob  nginx:latest      
09b93464c2f75b7b69f83d56a9cfc23ceb50a48a9db7652ee4c27e3e2cb1961f

1.6 运行容器(docker run)

docker run docker run 命令流程
常用参数 说明
-d, --detach=false 后台运行容器,并返回容器 ID。
--read-only=true|false 将容器的根文件系统安装为只读。
[root@localhost ~]# docker run --read-only --tmpfs /run --tmpfs /tmp -i -t fedora /bin/bash

退出状态

退出码 说明
125 错误发生在 Docker 守护进程本身。
126 容器命令执行失败(例如没有权限)。
127 容器命令不能找到。

1.7 容器变化(docker diff)

参数 说明
--help 帮助信息
[root@localhost ~]# docker diff 1fdfd1f54c1b
C /dev
C /dev/console
C /dev/core
C /dev/stdout
C /dev/fd
C /dev/ptmx
C /dev/stderr
C /dev/stdin
C /run
A /run/nginx.pid
C /var/lib/nginx/tmp
A /var/lib/nginx/tmp/client_body
A /var/lib/nginx/tmp/fastcgi
A /var/lib/nginx/tmp/proxy
A /var/lib/nginx/tmp/scgi
A /var/lib/nginx/tmp/uwsgi
C /var/log/nginx
A /var/log/nginx/access.log
A /var/log/nginx/error.log

1.8 容器事件(docker events)

参数 说明
-f, --filter filter 根据条件过滤事件。
--format string 使用给定的模板格式化输出。
--help 帮助信息。
--since string 从指定的时间戳后显示所有事件。
--until string 流水时间显示到指定的时间为止。

filter

[root@localhost ~]# docker events --since '2015-01-28'
2015-01-28T20:25:38.000000000-08:00 c21f6c22ba27: (from whenry/testimage:latest) create
2015-01-28T20:25:38.000000000-08:00 c21f6c22ba27: (from whenry/testimage:latest) start
2015-01-28T20:25:39.000000000-08:00 c21f6c22ba27: (from whenry/testimage:latest) create
2015-01-28T20:25:39.000000000-08:00 c21f6c22ba27: (from whenry/testimage:latest) start
2015-01-28T20:25:40.000000000-08:00 c21f6c22ba27: (from whenry/testimage:latest) die
2015-01-28T20:25:42.000000000-08:00 c21f6c22ba27: (from whenry/testimage:latest) stop
2015-01-28T20:25:45.000000000-08:00 c21f6c22ba27: (from whenry/testimage:latest) start
2015-01-28T20:25:45.000000000-08:00 c21f6c22ba27: (from whenry/testimage:latest) die
2015-01-28T20:25:46.000000000-08:00 c21f6c22ba27: (from whenry/testimage:latest) stop
[root@localhost ~]# docker events --filter 'type=container' --format 'Type={{.Type}}  Status={{.Status}}  ID={{.ID}}'
Type=container  Status=create  ID=2ee349dac409e97974ce8d01b70d250b85e0ba8189299c126a87812311951e26
Type=container  Status=attach  ID=2ee349dac409e97974ce8d01b70d250b85e0ba8189299c126a87812311951e26
 Type=container  Status=start  ID=2ee349dac409e97974ce8d01b70d250b85e0ba8189299c126a87812311951e26
Type=container  Status=resize  ID=2ee349dac409e97974ce8d01b70d250b85e0ba8189299c126a87812311951e26
Type=container  Status=die  ID=2ee349dac409e97974ce8d01b70d250b85e0ba8189299c126a87812311951e26
Type=container  Status=destroy  ID=2ee349dac409e97974ce8d01b70d250b85e0ba8189299c126a87812311951e26

1.9 进入容器(docker exec)

docker exec
参数 说明
-d, --detach 分离模式,在后台运行。默认 false。
--detach-keys string 覆盖键序列分离容器。可以是一个单独的字符 [a-z],也可以是 Ctrl-<value>,<value> 可以是 [a-z]、@、^、[、, 或者 _。
-e, --env=[] 指定环境变量,容器中可以使用该环境变量。
--help 帮助信息。
-i, --interactive 即使没有附加也保持 STDIN 打开。
--privileged 授予命令扩展权限。默认 false。
-t, --tty 分配一个伪终端。
-u, --user="" 指定容器的用户。(用户名或者 UID)
[root@localhost ~]# docker exec -i -t  mynginx /bin/bash
root@b1a0703e41e7:/#

1.10 导出容器(docker export)

docker export
参数 说明
-o, --output string 将输出内容写到文件,而不是 STDOUT。
--help 帮助信息。
[root@localhost ~]# docker export angry_bell > angry_bell.tar
[root@localhost ~]# docker export --output=angry_bell-latest.tar angry_bell

1.11 查看镜像历史(docker history)

docker history
参数 说明
--help 帮助信息。
-H, --human=true|false 以可读的格式打印镜像大小和日期,默认为 true。
--no-trunc=true|false 显示完整的提交记录。默认为 false。
-q, --quiet=true|false 仅列出提交记录 ID。
[root@localhost ~]# docker history fedora
IMAGE          CREATED          CREATED BY                                      SIZE                COMMENT
105182bb5e8b   5 days ago       /bin/sh -c #(nop) ADD file:71356d2ad59aa3119d   372.7 MB
73bd853d2ea5   13 days ago      /bin/sh -c #(nop) MAINTAINER Lokesh Mandvekar   0 B
511136ea3c5a   10 months ago                                                    0 B                 Imported from -

1.12 查看镜像(docker images)

docker images
参数 说明
-a, --all=true|false 列出本地所有的镜像(含中间映像层,默认情况下,过滤掉中间映像层),默认 false。
--digests=true|false 显示镜像的摘要信息。默认 false。
-f, --filter=[] 显示满足条件的镜像。
--format="TEMPLATE" 指定返回值的模板文件。
--no-trunc=true|false 显示完整的提交记录。默认为 false。
-q, --quiet=true|false 仅列出提交记录 ID。
--help 帮助信息。

filter

format

[root@localhost ~]# docker images --format "table {{.ID}}\t{{.Repository}}\t{{.Tag}}"
IMAGE ID            REPOSITORY                TAG
77af4d6b9913        <none>                    <none>
b6fa739cedf5        committ                   latest
78a85c484bad        ipbabble                  <none>
30557a29d5ab        docker                    latest
5ed6274db6ce        <none>                    <none>
746b819f315e        postgres                  9
746b819f315e        postgres                  9.3
746b819f315e        postgres                  9.3.5
746b819f315e        postgres                  latest

1.13 导入容器(docker import)

参数 说明
-c, --change=[] 应用 Docker 指令创建镜像。
-m, --message="" 提交时的说明文字。
--help 帮助信息。
[root@localhost ~]# docker import http://example.com/exampleimage.tgz example/imagerepo
[root@localhost ~]# docker import /path/to/exampleimage.tgz

1.14 查看 Docker 信息(docker info)

参数 说明
--help 帮助信息。
-f, --format="TEMPLATE" 指定返回值的模板文件。
[root@localhost ~]# docker -D info
Containers: 4
 Running: 0
 Paused: 0
 Stopped: 4
Images: 1
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: df5c38a9167e87f53a9894d77c0950e178a745e7 (expected: 9df8b306d01f59d3a8029be411de015b7304dd8f)
init version: fec3683b971d9c3ef73f284f176672c44b448662 (expected: 949e6facb77383876aeff8a6944dde66b3089574)
Security Options:
 seccomp
  WARNING: You're not using the default seccomp profile
  Profile: /etc/docker/seccomp.json
 selinux
Kernel Version: 3.10.0-957.el7.x86_64
Operating System: CentOS Linux 7 (Core)
OSType: linux
Architecture: x86_64
Number of Docker Hooks: 3
CPUs: 2
Total Memory: 3.683 GiB
Name: localhost.localdomain
ID: C7UM:TFRF:I5DQ:3VED:GNY5:HGR7:666X:INRQ:GEFN:KFOV:REGQ:3XTN
Docker Root Dir: /var/lib/docker
Debug Mode (client): true
Debug Mode (server): false
Registry: https://index.docker.io/v1/
Experimental: false
Insecure Registries:
 127.0.0.0/8
Live Restore Enabled: false
Registries: docker.io (secure)
WARNING: Your kernel does not support swap limit capabilities. Limitation discarded.
WARNING: No swap limit support

1.15 查看详细信息(docker inspect)

docker inspect
参数 说明
--help 帮助信息。
-f, --format="TEMPLATE" 指定返回值的模板文件。
-s, --size 如果 type 为容器,则显示文件总大小。
--type=container|image|network|node|service|task|volume 返回指定类型的 JSON,允许值为镜像、容器、网络、节点、服务、任务和卷。
[root@localhost ~]# docker inspect --type=image rhel7
[
{
 "Id": "fe01a428b9d9de35d29531e9994157978e8c48fa693e1bf1d221dffbbb67b170",
"Parent": "10acc31def5d6f249b548e01e8ffbaccfd61af0240c17315a7ad393d022c5ca2",
....
}
]
[root@localhost ~]# docker inspect --format='{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' d2cc496561d6
172.17.0.2
[root@localhost ~]# docker inspect --format='{{range $p, $conf := .NetworkSettings.Ports}} \
{{$p}} -> {{(index $conf 0).HostPort}} {{end}}' d2cc496561d6
80/tcp -> 80
[root@localhost ~]# docker inspect -s d2cc496561d6
[
{
"SizeRw": 0,
"SizeRootFs": 972,
}
]

1.16 杀掉运行容器(docker kill)

docker kill
参数 说明
--help 帮助信息。
-s, --signal="KILL" 指定发送信号,默认为 KILL。
[root@localhost ~]# docker kill -s KILL mynginx
mynginx
[root@localhost ~]# docker kill --signal=SIGHUP my_container
[root@localhost ~]# docker kill --signal=HUP my_container
[root@localhost ~]# docker kill --signal=1 my_container

1.17 导入镜像(docker load)

参数 说明
--help 帮助信息。
-i, --input="" 从存档文件而不是 STDIN 读取。存档可以用 gzip、bzip 或 xz 压缩。
-q, --quiet 精简输出。
[root@localhost ~]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
busybox             latest              769b9341d937        7 weeks ago         2.489 MB
[root@localhost ~]# docker load --input fedora.tar
# […]
Loaded image: fedora:rawhide
# […]
Loaded image: fedora:20
# […]
[root@localhost ~]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
busybox             latest              769b9341d937        7 weeks ago         2.489 MB
fedora              rawhide             0d20aec6529d        7 weeks ago         387 MB
fedora              20                  58394af37342        7 weeks ago         385.5 MB
fedora              heisenbug           58394af37342        7 weeks ago         385.5 MB
fedora              latest              58394af37342        7 weeks ago         385.5 MB
[root@localhost ~]# docker load < fedora.tar

1.18 登录仓库(docker login)

参数 说明
--help 帮助信息。
-p, --password="" 登录密码。
-u, --username="" 登录用户名。
[root@localhost ~]# docker login localhost:8080
[root@localhost ~]# docker login docker.io
Login with your Docker ID to push and pull images from Docker Hub. If you don't have a Docker ID, head over to https://hub.docker.com to create one.
Username:

1.19 登出仓库(docker logout)

[root@localhost ~]# docker logout localhost:8080

1.20 查看容器日志(docker logs)

参数 说明
--help 帮助信息。
--details=true|false 显示详细日志信息。
-f, --follow=true|false 跟踪日志输出(持续输出),默认 false。
--since="" 显示某个开始时间的所有日志。
-t, --timestamps=true|false 显示时间戳,默认 false。
--tail="all" 仅列出最新 N 条容器日志,默认 all。
[root@localhost ~]# docker logs -f mynginx
192.168.239.1 - - [10/Jul/2016:16:53:33 +0000] "GET / HTTP/1.1" 200 612 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.93 Safari/537.36" "-"
2016/07/10 16:53:33 [error] 5#5: *1 open() "/usr/share/nginx/html/favicon.ico" failed (2: No such file or directory), client: 192.168.239.1, server: localhost, request: "GET /favicon.ico HTTP/1.1", host: "192.168.239.130", referrer: "http://192.168.239.130/"
192.168.239.1 - - [10/Jul/2016:16:53:33 +0000] "GET /favicon.ico HTTP/1.1" 404 571 "http://192.168.239.130/" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.93 Safari/537.36" "-"
192.168.239.1 - - [10/Jul/2016:16:53:59 +0000] "GET / HTTP/1.1" 304 0 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.93 Safari/537.36" "-"
...

1.21 暂停容器(docker pause)

docker pause
参数 说明
--help 帮助信息。
[root@localhost ~]# docker pause db01

1.22 恢复容器(docker unpause)

参数 说明
--help 帮助信息。
[root@localhost ~]# docker unpause db01

1.23 查看端口信息(docker port)

参数 说明
--help 帮助信息。
[root@localhost ~]# docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS                                            NAMES
b650456536c7        busybox:latest      top                 54 minutes ago      Up 54 minutes       0.0.0.0:1234->9876/tcp, 0.0.0.0:4321->7890/tcp   test
[root@localhost ~]# docker port test
7890/tcp -> 0.0.0.0:4321
9876/tcp -> 0.0.0.0:1234
[root@localhost ~]# docker port test 7890/tcp
0.0.0.0:4321
[root@localhost ~]# docker port test 7890
0.0.0.0:4321

1.24 查看本地容器信息(docker ps)

docker ps
参数 说明
-a, --all=true|false 列出所有容器。默认为 false,只列出了正在运行的容器。
-f, --filter=[] 根据条件过滤事件。
--format="TEMPLATE" 使用给定的模板格式化输出。
-l, --latest=true|false 仅显示最新创建的容器(包括所有状态),默认为 false。
-n=-1 显示最近创建的 N 个容器(包括所有状态)。
--no-trunc=true|false 不截断输出,默认为 false。
-q, --quiet=true|false 静默输出,只显示容器编号。
-s, --size=true|false 显示总的文件大小。
--help 帮助信息。

filter

format

[root@localhost ~]# docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                   PORTS               NAMES
1c4bb11dfdb3        hello-world         "/hello"            2 hours ago         Exited (0) 2 hours ago                       eloquent_minsky
acbc7fa4cb8c        hello-world         "/hello"            12 days ago         Exited (0) 12 days ago                       sleepy_mccarthy
f77dbc06cf99        hello-world         "/hello"            12 days ago         Exited (0) 12 days ago                       amazing_cori
d2a233491403        hello-world         "/hello"            12 days ago         Exited (0) 12 days ago                       sleepy_allen
2567131e0130        hello-world         "/hello"            12 days ago         Exited (0) 12 days ago                       competent_turing
[root@localhost ~]# docker ps -a -q
1c4bb11dfdb3
acbc7fa4cb8c
f77dbc06cf99
d2a233491403
2567131e0130

1.24 拉取镜像(docker pull)

参数 说明
-a, --all=true|false 拉取所有标记镜像,默认为 false。
--help 帮助信息。
--disable-content-trust=false 校验镜像。
--platform 如果服务器支持多平台,则设置平台。
[root@localhost ~]# docker pull java

1.25 推送镜像(docker push)

参数 说明
--disable-content-trust=false 校验镜像。
[root@localhost ~]# docker tag rhel-httpd registry-host:5000/myadmin/rhel-httpd
[root@localhost ~]# docker push registry-host:5000/myadmin/rhel-httpd

1.26 重命名容器(docker rename)

[root@localhost ~]# docker rename my_container my_new_container

1.27 重启容器(docker restart)

参数 说明
--help 帮助信息。
-t, --time=10 kill 容器之前尝试停止的秒数(宽限期),一旦容器 kill,将重新启动,默认为 10 秒。
[root@localhost ~]# docker restart my_container

1.28 删除容器(docker rm)

docker rm
参数 说明
--help 帮助信息。
-f, --force=true|false 强制删除一个正在运行的容器(使用 SIGKILL),默认为 false。
-l, --link=true|false 删除容器间的关联,而不删除基础容器。默认为 false。
-v, --volumes=true|false 删除与容器关联的卷(默认删除容器不会删除卷),默认为 false。
[root@localhost ~]# docker rm /redis
[root@localhost ~]# docker rm --link /webapp/redis
[root@localhost ~]# docker rm --force redis
[root@localhost ~]# docker rm $(docker ps -a -q)
[root@localhost ~]# docker rm -v redis

1.28 删除镜像(docker rmi)

docker rmi
参数 说明
--help 帮助信息。
-f, --force=true|false 强制删除(正在运行的容器使用了该镜像),只会删除镜像标签,不会影响运行的容器,默认为 false,可以通过 commit 提交容器为镜像,使镜像恢复。
--no-prune=true|false 不删除未标记的父级。默认为 false。
[root@localhost ~]# docker images
REPOSITORY                TAG                 IMAGE ID            CREATED             SIZE
test1                     latest              fd484f19954f        23 seconds ago      7 B (virtual 4.964 MB)
test                      latest              fd484f19954f        23 seconds ago      7 B (virtual 4.964 MB)
test2                     latest              fd484f19954f        23 seconds ago      7 B (virtual 4.964 MB)
[root@localhost ~]# docker rmi -f fd484f19954f
Untagged: test1:latest
Untagged: test:latest
Untagged: test2:latest
Deleted: fd484f19954f4920da7ff372b5067f5b7ddb2fd3830cecd17b96ea9e286ba5b8

1.29 导出镜像(docker save)

docker save
参数 说明
--help 帮助信息。
-o, --output="" 输出文件,而不是 STDOUT。
[root@localhost ~]# docker save fedora > fedora-all.tar
[root@localhost ~]# docker save --output=fedora-latest.tar fedora:latest
[root@localhost ~]# ls -sh fedora-all.tar
721M fedora-all.tar
[root@localhost ~]# ls -sh fedora-latest.tar
367M fedora-latest.tar

1.30 搜索镜像(docker search)

参数 说明
--help 帮助信息。
-f, --filter=[] 根据条件过滤事件。
--no-index=true|false 不在输出中包含索引名。按注册名称对结果排序。
--limit=LIMIT 返回的搜索结果的最大值。默认值为 25。
--no-trunc=true|false 显示完整的镜像描述。
--automated 只列出自动构建类型的镜像。
--stars , -s 列出收藏数不小于指定值的镜像。

filter

[root@localhost ~]# docker search --filter=starts=3 fedora
INDEX      NAME                            DESCRIPTION                                    STARS OFFICIAL  AUTOMATED
docker.io  docker.io/mattdm/fedora         A basic Fedora image corresponding roughly...  50
docker.io  docker.io/fedora                (Semi) Official Fedora base image.             38
docker.io  docker.io/mattdm/fedora-small   A small Fedora image on which to build. Co...  8
docker.io  docker.io/goldmann/wildfly      A WildFly application server running on a ...  3               [OK]
[root@localhost ~]# docker search --filter=is-automated=true --filter=starts=1 fedora
INDEX      NAME                         DESCRIPTION                                     STARS OFFICIAL  AUTOMATED
docker.io  docker.io/goldmann/wildfly   A WildFly application server running on a ...   3               [OK]
docker.io  docker.io/tutum/fedora-20    Fedora 20 image with SSH access. For the r...   1               [OK]

1.31 启动容器(docker start)

docker start
参数 说明
--help 帮助信息。
-a, --attach=true|false 附加容器的 STDOUT、STDERR 和转发的所有信号到进程中。默认为 false。
--detach-keys="" 覆盖键序列分离容器。可以是一个单独的字符 [a-z],也可以是 Ctrl-<value>,<value> 可以是 [a-z]、@、^、[、, 或者 _。
-i, --interactive=false 即使没有附加也保持 STDIN 打开。默认为 false。
--checkpoint 从此检查点还原。
--checkpoint-dir 使用自定义检查点存储目录。
[root@localhost ~]# docker start my_container

1.32 查看容器状态(docker stats)

参数 说明
--help 帮助信息。
--all , -a 显示所有容器状态信息(默认只显示运行状态)。
--no-stream=true|false 禁用流式处理状态并只拉取第一个返回,默认为 false。
--format="TEMPLATE" 使用给定的模板格式化输出。
--no-trunc 显示完整的描述。

format

[root@localhost ~]# docker stats
CONTAINER           CPU %               MEM USAGE / LIMIT     MEM %               NET I/O             BLOCK I/O
1285939c1fd3        0.07%               796 KiB / 64 MiB        1.21%               788 B / 648 B       3.568 MB / 512 KB
9c76f7834ae2        0.07%               2.746 MiB / 64 MiB      4.29%               1.266 KB / 648 B    12.4 MB / 0 B
d1ea048f04e4        0.03%               4.583 MiB / 64 MiB      6.30%               2.854 KB / 648 B    27.7 MB / 0 B

1.33 停止容器(docker stop)

docker stop
参数 说明
--help 帮助信息。
-t, --time=10 在 kill 容器之前等待容器停止的秒数(宽限期)。默认值为 10 秒。
[root@localhost ~]# docker stop my_container

1.34 设置镜像标签(docker tag)

参数 说明
--help 帮助信息。

NAME

TAG

[root@localhost ~]# docker tag 0e5574283393 fedora/httpd:version1.0
[root@localhost ~]# docker tag 0e5574283393 myregistryhost:5000/fedora/httpd:version1.0

1.35 查看容器进程(docker top)

[root@localhost ~]# docker top 8601afda2b -x
PID      TTY       STAT       TIME         COMMAND
16623    ?         Ss         0:00         sleep 99999

1.36 更新容器(docker update)

参数 说明
--help 帮助信息。
--blkio-weight=0 块 IO 权重,范围 10~1000。
--cpu-shares=0 CPU 共享。
--cpu-period=0 限制 CPU CFS(完全公平调度程序)周期。限制容器的 CPU 使用。这个标志告诉内核将容器的 CPU 使用限制在指定的时间段内。
--cpu-quota=0 限制 CPU CFS 配额。
--cpu-rt-period=0 以微秒为单位限制 CPU 的实时周期,限制容器的实时CPU使用。这个标志告诉内核将容器的实时 CPU 使用限制在指定的时间段内。
--cpu-rt-runtime=0 以微秒为单位限制 CPU 实时运行时间,限制容器的实时 CPU 使用。此标志告诉内核限制给定 CPU 周期内实时任务可能消耗的时间量。跨容器的所有运行时的总和不能超过分配给父 cgroup 的额度。
--cpuset-cpus="" 允许执行的 CPU(0-3、0、1)。
--cpuset-mems="" 允许执行的内存节点(mems)(0-3、0、1)。仅对 NUMA 系统有效。
--kernel-memory="" 内核内存限制(格式:<number>[<unit>],单位可以为 b,k,m 和 g)。
-m, --memory="" 内存限制(格式:<number>[<unit>],单位可以为 b,k,m 和 g)。
--memory-reservation="" 内存软限制(格式:<number>[<unit>],单位可以为 b,k,m 和 g)。
--memory-swap="" 总内存限制(内存 + 交换)。
--restart="" 容器退出时要应用的重新启动策略(no(不重启)、on-failure[:max-retry](失败时:最大重试数)、always(始终重启)、unless-stopped(除非停止))。
[root@localhost ~]# docker update --cpu-shares 512 -m 300M abebf7571666 hopeful_morse
[root@localhost ~]# docker update --kernel-memory 80M test
[root@localhost ~]# docker update --restart=on-failure:3 abebf7571666 hopeful_morse

--memory

1.37 查看 Docker 版本(docker version)

参数 说明
--help 帮助信息。
--format="TEMPLATE" 使用给定的模板格式化输出。
[root@localhost ~]# docker version
Client:
 Version:         1.13.1
 API version:     1.26
 Package version: docker-1.13.1-94.gitb2f74b2.el7.centos.x86_64
 Go version:      go1.10.3
 Git commit:      b2f74b2/1.13.1
 Built:           Tue Mar 12 10:27:24 2019
 OS/Arch:         linux/amd64

Server:
 Version:         1.13.1
 API version:     1.26 (minimum version 1.12)
 Package version: docker-1.13.1-94.gitb2f74b2.el7.centos.x86_64
 Go version:      go1.10.3
 Git commit:      b2f74b2/1.13.1
 Built:           Tue Mar 12 10:27:24 2019
 OS/Arch:         linux/amd64
 Experimental:    false
[root@localhost ~]# docker version --format '{{.Server.Version}}'
1.13.1
[root@localhost ~]# docker version --format '{{json .}}'
{"Client":{"Version":"1.13.1","ApiVersion":"1.26","GitCommit":"b2f74b2/1.13.1","GoVersion":"go1.10.3","Os":"linux","Arch":"amd64","BuildTime":"Tue Mar 12 10:27:24 2019","PkgVersion":"docker-1.13.1-94.gitb2f74b2.el7.centos.x86_64"},"Server":{"Version":"1.13.1","ApiVersion":"1.26","MinAPIVersion":"1.12","GitCommit":"b2f74b2/1.13.1","GoVersion":"go1.10.3","Os":"linux","Arch":"amd64","KernelVersion":"3.10.0-957.el7.x86_64","BuildTime":"Tue Mar 12 10:27:24 2019","PkgVersion":"docker-1.13.1-94.gitb2f74b2.el7.centos.x86_64"}}

1.38 设置等待(docker wait)

参数 说明
--help 帮助信息。
[root@localhost ~]# docker run -d fedora sleep 99
079b83f558a2bc52ecad6b2a5de13622d584e6bb1aea058c11b36511e85e7622
[root@localhost ~]# docker wait 079b83f558a2bc
0

参考资料

http://dockone.io/article/783

上一篇 下一篇

猜你喜欢

热点阅读