docker命令及示例
目录
docker镜像基础管理命令
docker image COMMAND
ls ? ?
查看本地的镜像列表
举个例子:
[root@gyang ~]# docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
hello-world latest feb5d9fea6a5 17 months ago 13.3kB
pull
从仓库拉取镜像到本地。
举个例子:
[root@gyang ~]# docker image pull mysql:8.0
8.0: Pulling from library/mysql
72a69066d2fe: Pull complete
93619dbc5b36: Pull complete
99da31dd6142: Pull complete
626033c43d70: Pull complete
37d5d7efb64e: Pull complete
ac563158d721: Pull complete
d2ba16033dad: Pull complete
688ba7d5c01a: Pull complete
00e060b6d11d: Pull complete
1c04857f594f: Pull complete
4d7cfa90e6ea: Pull complete
e0431212d27d: Pull complete
Digest: sha256:e9027fe4d91c0153429607251656806cc784e914937271037f7738bd5b8e7709
Status: Downloaded newer image for mysql:8.0
docker.io/library/mysql:8.0
save
将一个镜像导出到一个文件或标准输出。导出镜像。
举个例子:
[root@gyang ~]# docker image save -o mysqltest.tar.gz mysql:8.0
[root@gyang ~]# docker image save mysql:8.0 > mysqltest1.tar.gz
[root@gyang ~]# ll
-rw-r--r-- 1 root root 521025536 Feb 17 21:18 mysqltest1.tar.gz
-rw------- 1 root root 521025536 Feb 17 21:16 mysqltest.tar.gz
load
从一个文件或标准输入读取数据并加载为镜像。导入镜像。
举个例子:
[root@gyang ~]# docker image load -i mysqltest.tar.gz
ad6b69b54919: Loading layer [==================================================>] 72.55MB/72.55MB
fba7b131c5c3: Loading layer [==================================================>] 338.4kB/338.4kB
0798f2528e83: Loading layer [==================================================>] 9.556MB/9.556MB
a0c2a050fee2: Loading layer [==================================================>] 4.202MB/4.202MB
d7a777f6c3a4: Loading layer [==================================================>] 2.048kB/2.048kB
0d17fee8db40: Loading layer [==================================================>] 53.77MB/53.77MB
aad27784b762: Loading layer [==================================================>] 5.632kB/5.632kB
1d1f48e448f9: Loading layer [==================================================>] 3.584kB/3.584kB
c654c2afcbba: Loading layer [==================================================>] 380.5MB/380.5MB
118fee5d988a: Loading layer [==================================================>] 5.632kB/5.632kB
fc8a043a3c75: Loading layer [==================================================>] 17.92kB/17.92kB
d67a9f3f6569: Loading layer [==================================================>] 1.536kB/1.536kB
Loaded image: mysql:8.0
[root@gyang ~]# docker image load -q < mysqltest.tar.gz
Loaded image: mysql:8.0
tag
给镜像起一个别名。
举个例子:
[root@gyang ~]# docker image tag mysql:8.0 gyang-mysql80
rm
删除镜像,支持同时删除多个
举个例子:
[root@gyang ~]# docker image rm gyang-mysql80 mysql:8.0
Untagged: gyang-mysql80:latest
Untagged: mysql:8.0
Deleted: sha256:3218b38490cec8d31976a40b92e09d61377359eab878db49f025e5d464367f3b
Deleted: sha256:aa81ca46575069829fe1b3c654d9e8feb43b4373932159fe2cad1ac13524a2f5
Deleted: sha256:0558823b9fbe967ea6d7174999be3cc9250b3423036370dc1a6888168cbd224d
Deleted: sha256:a46013db1d31231a0e1bac7eeda5ad4786dea0b1773927b45f92ea352a6d7ff9
Deleted: sha256:af161a47bb22852e9e3caf39f1dcd590b64bb8fae54315f9c2e7dc35b025e4e3
Deleted: sha256:feff1495e6982a7e91edc59b96ea74fd80e03674d92c7ec8a502b417268822ff
Deleted: sha256:8805862fcb6ef9deb32d4218e9e6377f35fb351a8be7abafdf1da358b2b287ba
Deleted: sha256:872d2f24c4c64a6795e86958fde075a273c35c82815f0a5025cce41edfef50c7
Deleted: sha256:6fdb3143b79e1be7181d32748dd9d4a845056dfe16ee4c827410e0edef5ad3da
Deleted: sha256:b0527c827c82a8f8f37f706fcb86c420819bb7d707a8de7b664b9ca491c96838
Deleted: sha256:75147f61f29796d6528486d8b1f9fb5d122709ea35620f8ffcea0e0ad2ab0cd0
Deleted: sha256:2938c71ddf01643685879bf182b626f0a53b1356138ef73c40496182e84548aa
Deleted: sha256:ad6b69b549193f81b039a1d478bc896f6e460c77c1849a4374ab95f9a3d2cea2
history
查看镜像的构建历史信息。
import
将一个tar包文件系统导入到本地镜像。没有镜像名称和tag以及CMD或者ENTRYPOINT指令。
inspect
查看镜像的详细信息。
prune
移除没有镜像名称的镜像,清除无用的镜像。
docker容器基础管理命令
docker container COMMAND
ls
查看本地的容器列表。
常用选项:
? -a:
? ?查看所有状态的容器。默认只查看正在运行的容器。
? -q:
? ?只查看容器的ID。
? -l:
? ?查看最新创建的容器信息。
? -s:
? ?查看使用容器的大小。
? --no-trunc:
? ?不截断输出信息。
举个例子:
[root@gyang ~]# docker container ls
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
6d221289b1e4 nginx:1.20.1 "/docker-entrypoint.…" 29 seconds ago Up 28 seconds 0.0.0.0:888->80/tcp, :::888->80/tcp intelligent_ishizaka
[root@gyang ~]# docker container ls -l
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
6d221289b1e4 nginx:1.20.1 "/docker-entrypoint.…" About a minute ago Up About a minute 0.0.0.0:888->80/tcp, :::888->80/tcp intelligent_ishizaka
[root@gyang ~]# docker container ls -a --no-trunc
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
f21026bf6b5d21ab28da4e8c52421ff7721bac1c24ae8519615a787314883b08 hello-world "/hello" 19 seconds ago Exited (0) 17 seconds ago nifty_haslett
6d221289b1e481160cf53ece701d43eca3e36169ff40576ff5dbbb81bf9ed582 nginx:1.20.1 "/docker-entrypoint.sh nginx -g 'daemon off;'" 2 minutes ago Up 2 minutes 0.0.0.0:888->80/tcp, :::888->80/tcp intelligent_ishizaka
60464cbeffeadc9d877352320afb3cb6b2996242ca6de65fe35e3e0a1257d29c nginx:1.20.1 "/docker-entrypoint.sh nginx -g 'daemon off;'" 2 minutes ago Created dazzling_feynman
7d787a484a4a7f04841965e4aa89f57772316838b7c43d070bc82642906a0caa hello-world "/hello" 35 hours ago Exited (0) 35 hours ago determined_nobel
873fac50bdbafee9f4d51db0fffd61d3162b458ad72e6a6bca7e332e60e3d395 hello-world "/hello" 2 days ago Exited (0) 2 days ago happy_shaw
33f395e78b797c263791336eb2cabfc3e2c071e2be1ac594671736bf75885cf0 hello-world "/hello" 2 days ago Exited (0) 2 days ago friendly_snyder
[root@gyang ~]# docker container ls -s
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES SIZE
6d221289b1e4 nginx:1.20.1 "/docker-entrypoint.…" 3 minutes ago Up 3 minutes 0.0.0.0:888->80/tcp, :::888->80/tcp intelligent_ishizaka 1.09kB (virtual 133MB)
create
创建容器。
常用的选项:
? --name:
? ?指定容器的名称。
? -p:
? ?指定端口映射。
举个例子:
[root@gyang ~]# docker container create --name gyang-web -p 888:80 nginx:1.20.1
6e7cc5292fa5c95aaf2c08ad7a57fa43e38c2406a498c5234013be9bcf3085a8
start ?
启动容器。
举个例子:
[root@gyang ~]# docker container start gyang-web
gyang-web
run
创建并启动容器,相当于docker container create + docker container start。
常用选项:
? --name:
? ?指定容器的名称。
? -p:
? ?指定端口映射。
? -d:
? ?放在后台运行容器。
? -i:
? ?分配一个标准输入。
? -t:
? ?分配一个字符终端。
举个例子:
[root@gyang ~]# docker container run --name gyang-centos -itdp 8888:80 centos:7
3cb7f821a8e438dea592a7875f8dcb15280d1b5760bd5e010b116c197f7d91f1
温馨提示:
一旦容器的COMMAND退出,容器运行结束。
run -env
容器传递环境变量。
举个例子:
[root@gyang softwares]# docker container run -m 200m -d --env MYSQL_ROOT_PASSWORD=123 --name mysql01 mysql:8.0
27a075f847e404d10c04ac6120aa86f196ce7634740e47d59344bd3d1be979a5
[root@gyang softwares]# docker container run -m 200m -d --env MYSQL_ALLOW_EMPTY_PASSWORD=yes --name mysql02 mysql:8.0
7d9ac7230186747ed3c6fe26bd3dbad58baa9c397364b809f82a3506d9f7a27a
[root@gyang softwares]# docker container run -m 200m -d --env MYSQL_RANDOM_ROOT_PASSWORD=yes --name mysql03 mysql:8.0
2af3178bedeb69e0ce999f94b765399f97a5eeb0a78976f3140e7f32a582a312
[root@gyang softwares]# docker container run -m 200m -d -e AUTHOR=gyang -e URL=www.gyang.cloud nginx:1.20.1 # 传递多各环境变量案例
1b0ef3bee1ae133aab896da2967daafe514093775e9f48653d270ef27bef6c9e
run -restart
容器的重启策略。
常用选项
? - no
? 容器时始终不重启。
? - on-failure: ??
? 当容器退出指定的次数,就不会尝试重启。
? - always
? 当容器异常退出时,始终重启容器(容器会被拉起)。
? - on-failure ? ? ?
? 当容器异常退出时,始终重启容器(容器会被拉起)。
? - unless-stopped
? 当容器异常退出时,始终重启容器(容器会被拉起)。
? 如果在重启docker服务前,容器已经退出,容器就不会被重启。
举个例子:
[root@gyang ~]# docker container run --name gyang-centos -itdp 8888:80 centos:7
3cb7f821a8e438dea592a7875f8dcb15280d1b5760bd5e010b116c197f7d91f1
[root@gyang ~]# docker container run -id --restart no --name restart-no centos:7
b12fb1dbd766571ca5699b48246c902404afb32bbeb629d493454282b37f9947
[root@gyang ~]# docker container run -id --restart always --name restart-always centos:7
0e638c15be299143b4d768060ab6df9c39ab5916a7f993a495818cd52862268c
[root@gyang ~]# docker container run -id --restart unless-stopped --name restart-unless-stopped centos:7
17828de4363dccd6938cbc9ef6a3f5c40d5d57397390aa2923577d311c6e3acd
[root@gyang ~]# docker container run -id --restart on-failure --name restart-on-failure centos:7
3ed357a19ea2867b6051d2525607605e8f7e7b25f82ef01e6b0af43cc74d7ce7
[root@gyang ~]# docker container run -id --restart on-failure:3 --name restart-on-failure_3 centos:7
9c1adc361fc9aa0bf75eaad7aee7899243c7171b5e7b2b5017234d8bd1ccd448
[root@gyang ~]# docker container ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
9c1adc361fc9 centos:7 "/bin/bash" 9 seconds ago Up 7 seconds restart-on-failure_3
3ed357a19ea2 centos:7 "/bin/bash" 17 seconds ago Up 13 seconds restart-on-failure
17828de4363d centos:7 "/bin/bash" 22 seconds ago Up 21 seconds restart-unless-stopped
0e638c15be29 centos:7 "/bin/bash" 30 seconds ago Up 29 seconds restart-always
b12fb1dbd766 centos:7 "/bin/bash" 48 seconds ago Up 46 seconds restart-no
exec ?
在一个正在运行的容器中执行一条命令。
举个例子:
[root@gyang softwares]# docker exec gyang-os cat /etc/os-release
NAME="CentOS Linux"
VERSION="7 (Core)"
ID="centos"
ID_LIKE="rhel fedora"
VERSION_ID="7"
PRETTY_NAME="CentOS Linux 7 (Core)"
ANSI_COLOR="0;31"
CPE_NAME="cpe:/o:centos:centos:7"
HOME_URL="https://www.centos.org/"
BUG_REPORT_URL="https://bugs.centos.org/"
CENTOS_MANTISBT_PROJECT="CentOS-7"
CENTOS_MANTISBT_PROJECT_VERSION="7"
REDHAT_SUPPORT_PRODUCT="centos"
REDHAT_SUPPORT_PRODUCT_VERSION="7"
[root@gyang softwares]# docker exec gyang-os hostname
8ba59e9759ce
[root@gyang ~]# docker exec -it gyang-os bash # 连接容器进行交互。
[root@8ba59e9759ce /]#
attach
连接容器。并不会产生新的经常。退出时使用"ctrl + p, ctrl + q"。
[root@gyang ~]# docker container attach gyang-os
ps -ef
UID PID PPID C STIME TTY TIME CMD
root 1 0 0 16:10 ? 00:00:00 /bin/bash
root 33 1 0 16:14 ? 00:00:00 ps -ef
docker容器进阶管理命令
cp
用于容器和宿主机之间进行数据拷贝。
举个例子:
[root@gyang ~]# docker container cp gyang-os:/etc/hosts ./ # 将容器的文件拷贝到宿主机
Preparing to copy...
Successfully copied 2.048kB to /root/./
[root@gyang ~]# echo www.gyang.cloud > test.txt
[root@gyang ~]# docker container cp test.txt gyang-os:/ # 将宿主机的文件拷贝到容器
Preparing to copy...
Copying to container - 2.048kB
Successfully copied 2.048kB to gyang-os:/
stop
停止容器运行
举个例子:
[root@gyang ~]# docker container stop gyang-os # 对于centos7容器而言,需要等待10秒左右,其他容器貌似并不需要。
gyang-os
[root@gyang ~]# docker container stop -t 1 gyang-os # 等待1秒就发送kill信号。
gyang-os
rm
删除容器。
举个例子:
[root@gyang ~]# docker container rm -f gyang-os # 强制删除容器。
gyang-os
[root@gyang ~]# docker container rm -f `docker container ps -qa` # 删除所有的容器。
inspect
查看容器的详细信息。
举个例子:
[root@gyang ~]# docker container inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' `docker container ls -lq`
172.17.0.2
[root@gyang ~]# docker container inspect -f '{{.NetworkSettings.IPAddress}}' `docker container ls -lq`
172.17.0.2
参考链接:
docker inspect | Docker Docs
logs
查看容器的日志。
举个例子:
[root@gyang ~]# docker container logs -f -t --since 20m gyang-os # 查看最近20分钟的日志信息。
[root@gyang ~]# docker container logs -f -t --until 10m gyang-os # 查看10分钟之前的日志信息。
kill
用于杀死正在运行的容器。
[root@gyang ~]# docker container kill gyang-os
gyang-os
rename
对容器进行重命名。
举个例子:
[root@gyang ~]# docker container rename gyang-os gyang-os7
restart
重启容器。会重置启动的时间计数器。重启期间服务是无法访问的哟~也可能会导致IP地址发生变化哟!
举个例子:
[root@gyang ~]# docker container restart gyang-os7
gyang-os7
pause
暂停容器运行。相当于虚拟机的挂起动作,不会重置计数器时间哟~
举个例子:
[root@gyang ~]# docker container pause gyang-os7
gyang-os7
unpause
恢复暂停容器。
举个例子:
[root@gyang ~]# docker container unpause gyang-os7
gyang-os7
stats
监控容器的状态信息。
举个例子:
[root@gyang ~]# docker container stats --no-stream # 默认以流的方式输出。
CONTAINER ID NAME CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PIDS
65de38fcd785 gyang-os7 0.00% 1.996MiB / 3.682GiB 0.05% 1.58kB / 1.57kB 0B / 0B 3
top
显示容器中正在运行的进程信息。
举个例子:
[root@gyang ~]# docker container top gyang-web
UID PID PPID C STIME TTY TIME CMD
root 37291 37272 0 12:22 ? 00:00:00 nginx: master process nginx -g daemon off;
101 37335 37291 0 12:22 ? 00:00:00 nginx: worker process
101 37336 37291 0 12:22 ? 00:00:00 nginx: worker process
diff
列出镜像和容器之间发生的变化的文件。
举个例子:
[root@gyang ~]# docker container diff gyang-web
C /run
A /run/nginx.pid
C /var
C /var/cache
C /var/cache/nginx
A /var/cache/nginx/scgi_temp
A /var/cache/nginx/uwsgi_temp
A /var/cache/nginx/client_temp
A /var/cache/nginx/fastcgi_temp
A /var/cache/nginx/proxy_temp
C /etc
C /etc/nginx
C /etc/nginx/conf.d
C /etc/nginx/conf.d/default.conf
port
例如容器的端口映射相关信息。
举个例子:
[root@gyang ~]# docker container port gyang-web
80/tcp -> 0.0.0.0:88
80/tcp -> [::]:88
prune
清楚所有已经退出的容器。
举个例子:
[root@gyang ~]# docker container prune -f
Deleted Containers:
0c4a3bed5b1b6cd35d00ffc539ce3c87b64091f0a1e2f2218c96e41c14432ad3
60c0a15b53a2fe3dc58c623b7b7ed4aff9dcf721538a8952ccc5519763e73856
da4f90ec3e0f44d6929f534de95583b11dad3530d1618ee9b0ca34f857865524
Total reclaimed space: 0B
wait
等待容器退出的状态码。
举个例子:
[root@gyang ~]# docker container wait unruffled_golick
0
export
将容器的文件系统导出到一个tar包文件中。
举个例子:
[root@gyang ~]# docker container export -o nginx-fs.tar.gz dazzling_swartz
commit
将一个容器提交为一个镜像。
举个例子:
[root@gyang ~]# docker container commit dazzling_swartz gyang-web:v0.2
sha256:b6b44da2162490e3391031861b58dd09b71881045e42cb3dd4c5e87990858d42
update
资源限制案例。
举个例子:
[root@gyang ~]# docker container update -m 200m --memory-swap 200m dazzling_swartz
dazzling_swartz
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!