Docker CLI
1 |
docker [OPTIONS] COMMAND [arg...] |
OPTIONS
--config string
:指定本地客户端配置文件,默认 (“/home/user/.docker”)。
-c, --context string
:要连接到守护程序的上下文的名称(覆盖 DOCKER_HOST 环境变量,默认上下文设置”docker context use”)
-D, --debug
:开启调试模式。
-H, --host list
:指定监听连接地址。
-h, --help
:打印使用方式。
-l, --log-level string
:设置日志级别,(“debug”|”info”|”warn”|”error”|”fatal”) (default “info”)。
--tls
:开启tls,隐含--tlsverify
。
--tlscacert string
:信任的 CA 证书。
--tlscert string
:证书文件路径。
--tlskey string
:key 文件路径。
--tlsverify
-v, --version
:查看版本信息。
COMMAND
attach
当前 shell 下 attach 连接指定运行镜像,退出容器时,容器关闭。
create
创建一个新的容器,同 run,但不启动容器,状态为 Created,通过docker ps -a
可以查看。
1 |
$ docker create --name test_1_nginx nginx |
run
创建一个新的容器并运行一个命令,具体官方参考。
1 |
$ docker run --name test_nginx -d nginx |
常用参数说明:
-c
:设置 CPU 使用权重。-m, --memory=""
:内存限制 (format: <number><optional unit>, where unit = b, k, m or g) 。--cidfile=""
:把容器id写入到指定文件。--cpuset=""
:CPU 绑定。-d
:后台运行容器。--dns
:设置 dns。--init
:该选项在容器内运行带有PID 1的init进程,它转发信号并收集进程。--dns-search
:设置dns域搜索。--env-file
:从指定文件读取变量值。--expose
:指定对外提供服务端口。-h
:设置容器主机名。-i, --interactive
:保持标准输出开启即使没有attached。--link
:添加链接到另外一个容器。--name
:设置容器名。--net
:设置容器网络模式。-P, --publish-all
:自动映射容器对外提供服务的端口。-p, --publish
:指定端口映射(format: ip:hostPort:containerPort | ip::containerPort | hostPort:containerPort)--privileged
:提供更多的权限给容器。--rm
:如果容器退出自动移除。--restart
:该选项定义容器的重新启动策略,设置为always时表示确保Docker守护程序在启动时启动容器,并在容器退出时重新启动它。--security-opt
:安全选项,通过–security-opt选项,运行容器时用户可自定义SELinux和AppArmor卷标和配置。-t, --tty
:分配伪终端。-u, --user
:指定运行容器的用户uid或者用户名。-v, --volume
:挂载卷(from the host:-v /host:/container, from docker: -v /container)--volumes-from
:从指定容器挂载卷。-w, --workdir
:指定容器工作目录。
创建一个 cpu 优先级为 100,内存限制 512MB,主机名为 test1,名为 docker_test 后台运行 bash 的容器。
1 |
$ docker run -t -i -c 100 -m 512MB -h test -d --name="docker_test" ubuntu /bin/bash |
ps
列出容器列表。
1 2 3 |
$ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES ddc9ae8793dc nginx "nginx -g 'daemon off" 4 hours ago Up 4 hours 443/tcp, 0.0.0.0:8081->80/tcp docker_nginx |
cp
从容器中拷贝指定文件或者目录到宿主机中。
1 |
$ docker cp test_nginx:/etc/sysctl.conf /tmp/ |
diff
查看 Docker 容器变化。
1 |
$ docker diff test_nginx |
events
从 Docker 服务获取容器实时事件。
exec
在已存在的容器上运行命令。
1 |
$ docker exec -ti test_nginx /bin/bash |
export
导出容器的内容流作为一个 tar 归档文件(对应 import 命令)。
import
从 tar 包中的内容创建一个新的文件系统映像(对应 export 命令)。
history
展示一个镜像形成历史。
1 |
$ docker history docker_nginx |
images
显示当前系统镜像。
1 2 3 4 5 6 7 8 9 10 |
# 显示当前系统镜像, 不包括过渡层镜像 $ docker images REPOSITORY TAG IMAGE ID CREATED SIZE wordpress latest 368db5c51bcd 4 days ago 420 MB nginx latest e43d811ce2f4 4 days ago 181.4 MB mysql latest cf725f136fd2 4 days ago 383.4 MB ubuntu latest f753707788c5 12 days ago 127.1 MB # 显示当前系统所有镜像, 包括过渡层镜像 $ docker images -a |
info
显示系统相关信息。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
$ docker info Client: Debug Mode: false Server: Containers: 0 Running: 0 Paused: 0 Stopped: 0 Images: 1 Server Version: 19.03.13 Storage Driver: overlay2 Backing Filesystem: extfs Supports d_type: true Native Overlay Diff: true Logging Driver: json-file Cgroup Driver: cgroupfs Plugins: ... |
inspect
查看容器元数据的详细信息。
1 2 3 4 5 |
# 查看完整容器信息 $ docker inspect test_nginx # 查看指定容器信息 $ docker inspect -f '{{.Id}}' test_nginx |
kill
kill 指定 Docker 容器。
1 |
$ docker kill docker_wordpress |
save
保存一个镜像为一个 tar 包(对应 load 命令)。
1 |
$ docker save -o nginx.tar.gz nginx |
load
从一个 tar 包中加载一个镜像(对应 save 命令)。
1 2 |
$ docker load -i nginx.tar.gz Loaded image: nginx:latest |
login
注册或者登陆一个 docker registry 服务器。
1 |
$ docker login 172.17.0.1:5000 -u hello -p world |
logout
从当前 docker registry 退出。
1 |
$ docker logout 172.17.0.1:5000 |
logs
输出当前容器日志信息。
1 2 3 4 5 |
# 输出指定容器的所有日志 $ docker logs docker_nginx # -f 选项可以像 tailf 一样输出日志 $ docker logs docker_nginx -f |
port
查看映射端口对应的容器内部源端口。
1 2 |
$ docker port docker_nginx 80/tcp -> 0.0.0.0:8081 |
pull
从 Docker 镜像源服务器拉取指定镜像或者库镜像。
1 2 3 4 5 |
# 从默认 Registry 进行 PULL 镜像 $ docker pull mysql # 从指定 Registry 进行 PULL 镜像 $ docker pull 172.17.0.1:5000/mysql |
push
推送指定镜像或者库镜像到私有源(可注册 Docker 官方账户,推送到官方自有账户)。
1 |
$ docker push 172.17.0.1:5000/ubuntu |
rename
重命名容器。
1 |
$ docker rename docker_wordpress wordpress |
pause
暂停容器,状态为 Paused。
1 |
$ docker pause docker_nginx |
unpause
取消暂停容器,状态为 Up。
1 |
$ docker unpause docker_nginx |
stop
停止容器,状态为 Exited。
1 |
$ docker stop docker_nginx |
start
启动容器,状态为 Up。
1 |
$ docker start docker_nginx |
restart
重启运行的容器。
1 |
$ docker restart docker_nginx |
rm
删除一个或者多个容器,一般使用都要加上-fv
选项,表示把对应的 volume 也删除。
1 |
$ docker rm -fv test_nginx |
rmi
移除一个或多个镜像(无容器使用该镜像才可删除,否则需删除相关容器才可继续或-f
强制删除)。
1 |
$ docker rmi hello-world |
service
管理 Docker 服务。
search
在 Docker Hub 中搜索镜像。
1 2 3 4 5 6 7 |
# 搜索 Dcoker Hup 中所有的镜像 $ docker search mysql NAME DESCRIPTION STARS OFFICIAL AUTOMATED mysql MySQL is a widely used, open-source relati... 3276 [OK] # 搜索 Docker Hup 中 star 超过 100 的镜像 $ docker search -s 100 ubuntu |
stats
显示一个存活容器的资源使用情况。
1 2 3 |
$ docker stats docker_nginx CONTAINER CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PIDS docker_nginx 0.00% 7.582 MiB / 7.64 GiB 0.10% 2.248 kB / 3.748 kB 6.848 MB / 0 B 0 |
tag
给源中镜像打标签,通过 docker images 查看。
1 |
$ docker tag nginx test_nginx |
top
查看容器中运行的进程信息。
1 2 3 4 |
docker top test_nginx UID PID PPID C STIME TTY TIME CMD root 2747 2732 0 18:30 ? 00:00:00 nginx: master process nginx -g daemon off; 104 2766 2747 0 18:30 ? 00:00:00 nginx: worker process |
update
给一个或多个容器更新配置。
version
查看 Docker 版本号。
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 |
$ docker version Client: Docker Engine - Community Version: 19.03.13 API version: 1.40 Go version: go1.13.15 Git commit: 4484c46d9d Built: Wed Sep 16 17:03:45 2020 OS/Arch: linux/amd64 Experimental: false Server: Docker Engine - Community Engine: Version: 19.03.13 API version: 1.40 (minimum version 1.12) Go version: go1.13.15 Git commit: 4484c46d9d Built: Wed Sep 16 17:02:21 2020 OS/Arch: linux/amd64 Experimental: false containerd: Version: 1.3.7 GitCommit: 8fba4e9a7d01810a393d5d25a3621dc101981175 runc: Version: 1.0.0-rc10 GitCommit: dc9208a3303feef5b3839f4323d9beb36df0a9dd docker-init: Version: 0.18.0 GitCommit: fec3683 |
network
管理 Docker 网络。
swarm
管理 Docker Swarm。
node
管理 Docker Swarm 节点。
volume
管理 Docker 卷。
1 |
$ docker volume ls |
build
通过 Dockerfile 定制镜像,详情看:Docker:使用Dockerfile构建Nginx镜像。
1 |
$ docker build -t test . |
commit
提交当前容器为新的镜像,对一个正在运行的容器进行了配置修改后,可将此容器提交为一个新的容器。Docker:使用Dockerfile构建Nginx镜像。
1 |
$ docker commit -a pengdongwen nginx_01 nginx_10 |
<参考>
https://docs.docker.com/reference/