文章最后更新时间:2025年06月12日
一、Docker创建容器并启动
docker run
等于创建加启动,若镜像本地不存在,则会去线上仓库下载镜像
注意:
- 容器内的进程必须处于前台运行状态,否则容器会直接退出!
- 若容器内无进程运行,容器也会挂掉,容器内必须有一个进程在前台运行!
docker run
选项:
-d
:后台运行容器并返回容器ID-i
:以交互方式访问容器,常与-t
搭配使用-t
:为容器分配伪输入终端,常与-i
搭配使用-p
:指定端口映射(宿主机端口:容器端口)-P
:随机端口映射(大写P)
# 运行一个马上挂掉的容器
[root@localhost ~]# docker run ubuntu
[root@localhost ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
8a8243623c23 ubuntu "bash" 6 minutes ago Exited (0) 6 minutes ago
a31847debebf 51086ed63d8c "/docker-entrypoint.…" 16 minutes ago Up 16 minutes 0.0.0.0:80->80/tcp, :::80->80/tcp trusting_ride
7f448c222d1b 51086ed63d8c "/docker-entrypoint.…" 17 minutes ago Exited (127) 17 minutes ago
310d35737694 51086ed63d8c "/docker-entrypoint.…" 18 minutes ago Exited (0) 17 minutes ago
2bb4b292933f nginx "/docker-entrypoint.…" 19 minutes ago Exited (127) 19 minutes ago
6cd00c39af29 nginx "/docker-entrypoint.…" 19 minutes ago Exited (127) 19 minutes ago
d9c990a6b235 nginx "/docker-entrypoint.…" 19 minutes ago Exited (127) 19 minutes ago
7eee30a9c59e nginx "/docker-entrypoint.…" 20 minutes ago Exited (0) 20 minutes ago
f66ffe5ce253 nginx "/docker-entrypoint.…" 21 minutes ago Exited (0) 21 minutes ago nginx
# 运行容器并进入,执行命令
[root@localhost ~]# docker run -it ubuntu bash
root@77712674b6f7:/# cat /etc/lsb-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=22.04
DISTRIB_CODENAME=jammy
DISTRIB_DESCRIPTION="Ubuntu 22.04.1 LTS"
root@77712674b6f7:/#
# docker ps 常用选项
-a # 列出当前所有运行中+历史容器
-l # 显示最近创建的容器
-n # 显示最近N个创建的容器
-q # 只显示容器ID
二、退出容器
exit
:进入容器后exit
退出,容器停止
[root@localhost ~]# docker run -it ubuntu
root@cd8ed364afb2:/# cat /etc/lsb-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=20.04
DISTRIB_CODENAME=focal
DISTRIB_DESCRIPTION="Ubuntu 20.04.3 LTS"
[root@localhost ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
cd8ed364afb2 ubuntu "bash" 41 seconds ago Up 39 seconds intelligent_snyder
# 退出容器
root@cd8ed364afb2:/# exit
exit
[root@localhost ~]#
[root@localhost ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
Ctrl+P+Q
:进入容器后Ctrl+P+Q
退出,容器不停止
[root@localhost ~]# docker run -it ubuntu
root@17b0e93920f4:/# ls /etc/lsb-release
/etc/lsb-release
root@17b0e93920f4:/# cat /etc/lsb-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=20.04
DISTRIB_CODENAME=focal
DISTRIB_DESCRIPTION="Ubuntu 20.04.3 LTS"
root@17b0e93920f4:/# ls /etc/lsb-release [root@localhost ~]#
[root@localhost ~]#
[root@localhost ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
17b0e93920f4 ubuntu "bash" 54 seconds ago Up 53 seconds compassionate_pike
三、容器管理
启动已停止的容器
# docker start 容器ID/容器名字
重启容器
# docker restart 容器ID/容器名字
停止容器
# docker stop 容器ID/容器名字
强制停止容器
# docker kill 容器ID/容器名字
删除单个已停止容器
# docker rm 容器ID
删除多个容器(慎用)
# docker rm -f $(docker ps -aq)
# docker ps -aq | xargs docker rm
查看容器日志
# docker logs 容器ID
查看容器内部细节
# docker inspect 容器ID
复制容器文件到宿主机
# docker cp 容器ID:容器内路径 目的主机路径
[root@localhost ~]# docker exec -it ubuntu1 bash
root@b48ae4cc3481:/# cd /tmp/
root@b48ae4cc3481:/tmp# ls
docker.test
root@b48ae4cc3481:/tmp# echo test >docker.test
root@b48ae4cc3481:/tmp# exit
exit
[root@localhost ~]# docker cp b48ae4cc3481:/tmp/docker.test /tmp
[root@localhost ~]# cat /tmp/docker.test
test
备份整个容器
# docker export 容器ID > 文件名.tar
[root@localhost ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
b48ae4cc3481 ubuntu "bash" About an hour ago Up 6 minutes ubuntu1
[root@localhost ~]# docker export b48ae4cc3481 > /tmp/ubuntu1.tar
[root@localhost ~]# ll /tmp/
总用量 73404
-rw-r--r--. 1 root root 5 10月 19 21:54 docker.test
-rw-r--r--. 1 root root 75159552 10月 19 21:57 ubuntu1.tar
[root@localhost ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
nginx latest 605c77e624dd 9 months ago 141MB
ubuntu latest ba6acccedd29 12 months ago 72.8MB
centos latest 5d0da3dc9764 13 months ago 231MB
# 强制删除镜像
[root@localhost ~]# docker rmi -f ba6acccedd29
Untagged: ubuntu:latest
Untagged: ubuntu@sha256:626ffe58f6e7566e00254b638eb7e0f3b11d4da9675088f4781a50ae288f3322
Deleted: sha256:ba6acccedd2923aee4c2acc6a23780b14ed4b8a5fa4e14e252a23b846df9b6c1
[root@localhost ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
nginx latest 605c77e624dd 9 months ago 141MB
centos latest 5d0da3dc9764 13 months ago 231MB
# 导入备份镜像
# cat 文件名.tar | docker import - 镜像用户名/镜像名:镜像版本号
[root@localhost ~]# cat /tmp/ubuntu1.tar | docker import - ldx/ubuntu1:333
sha256:5d7ff25c881d8dff4b1e82239a8c0f26a75084d4042f7020ccea2187a979430a
[root@localhost ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
ldx/ubuntu1 333 5d7ff25c881d 13 seconds ago 72.8MB
nginx latest 605c77e624dd 9 months ago 141MB
centos latest 5d0da3dc9764 13 months ago 231MB
[root@localhost ~]# docker run -it 5d7ff25c881d bash
root@0bb7ab833453:/# ll /tmp/
total 4
drwxrwxrwt. 2 root root 25 Oct 19 13:51 ./
drwxr-xr-x. 1 root root 18 Oct 19 14:06 ../
-rw-r--r--. 1 root root 5 Oct 19 13:54 docker.test
root@0bb7ab833453:/# cat /tmp/docker.test
test
# 镜像打包(使用镜像名:标签,避免虚悬镜像)
# docker image save 镜像名:标签 > 文件名.tgz
[root@localhost ~]# docker image save 5d7ff25c881d > /tmp/ubuntu2.tgz
[root@localhost ~]# ls /tmp/
docker.test ubuntu1.tar ubuntu2.tgz
# 镜像加载
# docker image load -i 文件名.tgz
# 危险命令(不建议使用)
[root@localhost ~]# docker rm $(docker ps -qa)
2c7204204c05
74481dfbbe48
0bb7ab833453
39174b8eee2b
afe4325f0fd2
[root@localhost ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
[root@localhost ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
ldx/ubuntu1 333 5d7ff25c881d 9 minutes ago 72.8MB
nginx latest 605c77e624dd 9 months ago 141MB
centos latest 5d0da3dc9764 13 months ago 231MB
[root@localhost ~]# docker rmi 5d7ff25c881d
Untagged: ldx/ubuntu1:333
Deleted: sha256:5d7ff25c881d8dff4b1e82239a8c0f26a75084d4042f7020ccea2187a979430a
Deleted: sha256:bff10ec1eac2d4c978d96fe3fcbe5e9eb84a122e90c863c5d8888f0d12b96416
[root@localhost ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
nginx latest 605c77e624dd 9 months ago 141MB
centos latest 5d0da3dc9764 13 months ago 231MB
# 加载镜像(产生虚悬镜像)
[root@localhost ~]# docker image load -i /tmp/ubuntu2.tgz
bff10ec1eac2: Loading layer [==================================================>] 75.16MB/75.16MB
Loaded image ID: sha256:5d7ff25c881d8dff4b1e82239a8c0f26a75084d4042f7020ccea2187a979430a
# 虚悬镜像示例
[root@localhost ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
<none> <none> 5d7ff25c881d 12 minutes ago 72.8MB # 虚悬镜像
nginx latest 605c77e624dd 9 months ago 141MB
centos latest 5d0da3dc9764 13 months ago 231MB
正规镜像备份与加载操作:
[root@localhost ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
<none> <none> 5d7ff25c881d 12 minutes ago 72.8MB
nginx latest 605c77e624dd 9 months ago 141MB
centos latest 5d0da3dc9764 13 months ago 231MB
# 备份镜像(使用镜像名:标签)
[root@localhost ~]# docker image save nginx:latest > /tmp/nginx.tgz
[root@localhost ~]# ll /tmp/
总用量 289300
-rw-r--r--. 1 root root 5 10月 19 21:54 docker.test
-rw-r--r--. 1 root root 145905152 10月 19 22:21 nginx.tgz
-rw-r--r--. 1 root root 75159552 10月 19 21:57 ubuntu1.tar
-rw-r--r--. 1 root root 75166720 10月 19 22:10 ubuntu2.tgz
# 删除原镜像
[root@localhost ~]# docker rmi 605c77e624dd
Untagged: nginx:latest
Untagged: nginx@sha256:0d17b565c37bcbd895e9d92315a05c1c3c9a29f762b011a10c54a66cd53c9b31
Deleted: sha256:605c77e624ddb75e6110f997c58876baa13f8754486b461117934b24a9dc3a85
Deleted: sha256:b625d8e29573fa369e799ca7c5df8b7a902126d2b7cbeb390af59e4b9e1210c5
Deleted: sha256:7850d382fb05e393e211067c5ca0aada2111fcbe550a90fed04d1c634bd31a14
Deleted: sha256:02b80ac2055edd757a996c3d554e6a8906fd3521e14d1227440afd5163a5f1c4
Deleted: sha256:b92aa5824592ecb46e6d169f8e694a99150ccef01a2aabea7b9c02356cdabe7c
Deleted: sha256:780238f18c540007376dd5e904f583896a69fe620876cabc06977a3af4ba4fb5
Deleted: sha256:2edcec3590a4ec7f40cf0743c15d78fb39d8326bc029073b41ef9727da6c851f
[root@localhost ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
<none> <none> 5d7ff25c881d 17 minutes ago 72.8MB
centos latest 5d0da3dc9764 13 months ago 231MB
# 加载备份镜像
[root@localhost ~]# docker image load -i /tmp/nginx.tgz
2edcec3590a4: Loading layer [==================================================>] 83.86MB/83.86MB
e379e8aedd4d: Loading layer [==================================================>] 62MB/62MB
b8d6e692a25e: Loading layer [==================================================>] 3.072kB/3.072kB
f1db227348d0: Loading layer [==================================================>] 4.096kB/4.096kB
32ce5f6a5106: Loading layer [==================================================>] 3.584kB/3.584kB
d874fd2bc83b: Loading layer [==================================================>] 7.168kB/7.168kB
Loaded image: nginx:latest
[root@localhost ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
<none> <none> 5d7ff25c881d 18 minutes ago 72.8MB
nginx latest 605c77e624dd 9 months ago 141MB
centos latest 5d0da3dc9764 13 months ago 231MB
[root@localhost ~]# docker run -d -p 85:80 nginx
b709562cd688a4d60d57ca8c3d3515b7a96373e6c6b4eaab2c0037e4f9d82140
[root@localhost ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
b709562cd688 nginx "/docker-entrypoint.…" 6 seconds ago Up 5 seconds 0.0.0.0:85->80/tcp, :::85->80/tcp awesome_roentgen
四、进入正在运行的容器
docker exec -it
:打开新终端,启动新进程,exit
不停止容器
# docker exec -it 容器ID bash
[root@localhost ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
17b0e93920f4 ubuntu "bash" 14 minutes ago Up 14 minutes compassionate_pike
[root@localhost ~]# docker exec -it 17b0e93920f4 bash
root@17b0e93920f4:/# cat /etc/lsb-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=20.04
DISTRIB_CODENAME=focal
DISTRIB_DESCRIPTION="Ubuntu 20.04.3 LTS"
root@17b0e93920f4:/# exit
exit
[root@localhost ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
17b0e93920f4 ubuntu "bash" 15 minutes ago Up 15 minutes compassionate_pike
docker attach
:进入启动命令终端,无新进程,exit
会停止容器
# docker attach 容器ID
[root@localhost ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
17b0e93920f4 ubuntu "bash" 15 minutes ago Up 15 minutes compassionate_pike
[root@localhost ~]# docker attach 17b0e93920f4
root@17b0e93920f4:/# cat /etc/lsb-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=20.04
DISTRIB_CODENAME=focal
DISTRIB_DESCRIPTION="Ubuntu 20.04.3 LTS"
root@17b0e93920f4:/# exit
exit
[root@localhost ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
文章版权声明:除非注明,否则均为柳三千运维录原创文章,转载或复制请以超链接形式并注明出处。