docker命令及示例

发布时间:2024年01月09日

目录

docker镜像基础管理命令

ls ? ?

pull

save

load

tag

rm

history

import

inspect

prune

docker容器基础管理命令

ls

create

start ?

run

run -env

run -restart

exec ?

attach

docker容器进阶管理命令

cp

stop

rm

inspect

logs

kill

rename

restart

pause

unpause

stats

top

diff

port

prune

wait

export

commit

update


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

文章来源:https://blog.csdn.net/qq_39720314/article/details/135414076
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。