Docker常见命令(总结)
- [1、Docker 安装与启动](#1、Docker 安装与启动)
-
- [1.1、Docker 安装](#1.1、Docker 安装)
- 1.2、设置镜像加速源
- [1.3、Docker 的启动与停止](#1.3、Docker 的启动与停止)
- [1.4、Docker 常用命令](#1.4、Docker 常用命令)
- 1.5、Dockerfile
-
- [1.5.1、Dockerfile 是什么](#1.5.1、Dockerfile 是什么)
- [1.5.2、Dockerfile 常用的命令](#1.5.2、Dockerfile 常用的命令)
- [2、docker-compose 安装与使用](#2、docker-compose 安装与使用)
-
- [2.1、docker-compose 简介](#2.1、docker-compose 简介)
- [2.2、docker-compose 安装](#2.2、docker-compose 安装)
- [2.3、docker-compose 常见命令](#2.3、docker-compose 常见命令)
1、Docker 安装与启动
1.1、Docker 安装
Docker 官方建议在 Ubuntu 中安装,因为 Docker 是基于 Ubuntu 发布的,一般出现的问题 Ubuntu 是最先更新或者打补丁。由于笔者常用的是CentOS7,因此以下所有内容是在CentOS7中操作。
1. yum 包更新到最新
sudo yum update
2. 安装需要的软件包, yum-util 提供yum-config-manager功能,另外两个是devicemapper驱动依赖的
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
3. 设置yum源
sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
4. 安装docker
sudo yum install docker-ce
5. 查看docker版本
docker -v
1.2、设置镜像加速源
ustc 的 docker 镜像加速器速度很快。ustc docker mirror 的优势之一就是不需要注册,是真正的公共服务。https://lug.ustc.edu.cn/wiki/mirrors/help/docker
编辑该文件:
vi /etc/docker/daemon.json
在该文件中输入如下内容:
{
"registry-mirrors": ["https://docker.mirrors.ustc.edu.cn"]
}
如果无法使用上述镜像源加速器,可以使用下面的(当前 2026年1月6 可用)
{
"registry-mirrors": [
"https://docker.nju.edu.cn",
"https://docker.m.daocloud.io",
"https://docker.mirrors.sjtug.sjtu.edu.cn/",
"https://docker.xuanyuan.me",
"http://mirrors.ustc.edu.cn"
]
}
1.3、Docker 的启动与停止
1. 启动docker
systemctl start docker
2. 停止docker
systemctl stop docker
3. 重启docker
systemctl restart docker
4. 查看docker状态
systemctl status docker
5. 开机启动
systemctl enable docker
6. 查看docker概要信息
docker info
7. 查看docker帮助文档
docker --help
1.4、Docker 常用命令
1.4.1、镜像相关命令
1. 查看镜像
docker images
查看所有镜像返回结果:
powershell
[root@minio-2 ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
docker.xuanyuan.me/library/mysql 5.7 5107333e08a8 2 years ago 501MB
nginx latest 605c77e624dd 4 years ago 141MB
calico/node v3.9.6 15f795b449d2 5 years ago 195MB
calico/pod2daemon-flexvol v3.9.6 63fbf227cf10 5 years ago 9.78MB
REPOSITORY:镜像名称
TAG:镜像标签
IMAGE ID:镜像ID
CREATED:镜像的创建日期(不是获取该镜像的日期)
SIZE:镜像大小
这些镜像都是存储在Docker宿主机的 /var/lib/docker 目录下
2. 搜索镜像(如果无法使用公共仓库不可用)
docker search 镜像名称
3. 拉取镜像
docker pull 镜像名称
例如拉取镜像:docker pull docker.xuanyuan.me/library/mysql:5.7
powershell
[root@minio-2 ~]# docker pull docker.xuanyuan.me/library/mysql:5.7
5.7: Pulling from library/mysql
20e4dcae4c69: Pull complete
1c56c3d4ce74: Pull complete
e9f03a1c24ce: Pull complete
68c3898c2015: Pull complete
6b95a940e7b6: Pull complete
90986bb8de6e: Pull complete
ae71319cb779: Pull complete
ffc89e9dfd88: Pull complete
43d05e938198: Pull complete
064b2d298fba: Pull complete
df9a4d85569b: Pull complete
Digest: sha256:4bc6bc963e6d8443453676cae56536f4b8156d78bae03c0145cbe47c2aad73bb
Status: Downloaded newer image for docker.xuanyuan.me/library/mysql:5.7
docker.xuanyuan.me/library/mysql:5.7
4. 删除镜像
powershell
docker rmi 镜像ID/REPOSITORY
删除操作示例如下:
powershell
[root@minio-2 ~]# docker rmi nginx:latest
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
5. 给镜像重新打tag
powershell
docker tag [原镜像名称]:[原标签] [新镜像名称]:[新标签]
给 quay.nju.edu.cn/prometheus/prometheus 打tag 之前
powershell
[root@minio-2 dockerjdk8]# docker images;
REPOSITORY TAG IMAGE ID CREATED SIZE
mynginx_i latest 40189ae6dd93 2 hours ago 152MB
m.daocloud.io/docker.io/library/nginx latest 058f4935d1cb 8 days ago 152MB
quay.nju.edu.cn/prometheus/prometheus latest 20a11eec2fec 3 weeks ago 378MB
docker.xuanyuan.me/library/mysql 5.7 5107333e08a8 2 years ago 501MB
grafana/grafana 10.2.0 2fbe6143d3ba 2 years ago 399MB
给 quay.nju.edu.cn/prometheus/prometheus 打tag 之后
powershell
[root@minio-2 dockerjdk8]# docker tag quay.nju.edu.cn/prometheus/prometheus:latest prometheues:latest
[root@minio-2 dockerjdk8]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
mynginx_i latest 40189ae6dd93 2 hours ago 152MB
m.daocloud.io/docker.io/library/nginx latest 058f4935d1cb 8 days ago 152MB
prometheues latest 20a11eec2fec 3 weeks ago 378MB
quay.nju.edu.cn/prometheus/prometheus latest 20a11eec2fec 3 weeks ago 378MB
docker.xuanyuan.me/library/mysql 5.7 5107333e08a8 2 years ago 501MB
grafana/grafana 10.2.0 2fbe6143d3ba 2 years ago 399MB
1.4.2、容器相关命令
1. 查看正在运行的容器
powershell
docker ps
示例命令如下:
powershell
[root@minio-2 ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
fb307951dff0 m.daocloud.io/docker.io/library/nginx "/docker-entrypoint...." 4 seconds ago Up 4 seconds 0.0.0.0:80->80/tcp mynginx
2. 查看所有的容器
powershell
docker ps -a
示例命令如下:
powershell
[root@minio-2 ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
fb307951dff0 m.daocloud.io/docker.io/library/nginx "/docker-entrypoint...." 4 minutes ago Up 4 minutes 0.0.0.0:80->80/tcp mynginx
3. 查看最后一次运行的容器
powershell
docker ps -l
示例命令如下:
powershell
[root@minio-2 ~]# docker ps -l
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
fb307951dff0 m.daocloud.io/docker.io/library/nginx "/docker-entrypoint...." 5 minutes ago Up 5 minutes 0.0.0.0:80->80/tcp mynginx
4. 停止容器
powershell
docker stop 容器名称(或者容器ID)
示例命令如下:
powershell
[root@minio-2 ~]# docker stop fb307951dff0
fb307951dff0
5. 查看停止的容器
powershell
docker ps -f status=exited
示例命令如下:
powershell
[root@minio-2 ~]# docker ps -f status=exited
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
fb307951dff0 m.daocloud.io/docker.io/library/nginx "/docker-entrypoint...." 12 minutes ago Exited (0) 18 seconds ago mynginx
6. 开启容器
powershell
docker start 容器名称(或者容器ID)
示例命令如下:
powershell
[root@minio-2 ~]# docker start fb307951dff0
fb307951dff0
[root@minio-2 ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
fb307951dff0 m.daocloud.io/docker.io/library/nginx "/docker-entrypoint...." 15 minutes ago Up 17 seconds 0.0.0.0:80->80/tcp mynginx
7. 创建容器
创建容器常用的参数说明:
创建容器命令:docker run
-i:表示运行容器
-t:表示容器启动后会进入其命令行。加入这两个参数后,容器创建就能登录进去。即分配一个伪终端。
--name :为创建的容器命名。
-v:表示目录映射关系(前者是宿主机目录,后者是映射到宿主机上的目录),可以使用多个-v做多个目录或文件映射。注意:最好做目录映射,在宿主机上做修改,然后共享到容器上。
-d:在run后面加上-d参数,则会创建一个守护式容器在后台运行(这样创建容器后不会自动登录容器,如果只加-i -t两个参数,创建后就会自动进去容器)。
-p:表示端口映射,前者是宿主机端口,后者是容器内的映射端口。可以使用多个-p做多个端口映射
(1)交互方式创建容器
powershell
docker run -it --name=容器名称 镜像名称:标签 /bin/bash
示例如下:
powershell
docker run -it --name=mynginx-test m.daocloud.io/docker.io/library/nginx /bin/bash
(2)守护进程方式创建容器
powershell
docker run -di --name=容器名称 镜像名称:标签
示例如下:
powershell
docker run -di --name=mynginx -p 80:80 m.daocloud.io/docker.io/library/nginx
8. 文件拷贝
文件拷贝进容器命令:
powershell
docker cp 需要拷贝的文件或目录 容器名称:容器目录
文件拷贝出容器命令:
powershell
docker cp 容器名称:容器目录 需要拷贝的文件或目录
示例如下:
powershell
[root@minio-2 ~]# docker cp anaconda-ks.cfg mynginx:/
Successfully copied 3.58kB to mynginx:/
[root@minio-2 ~]# docker cp mynginx:/anaconda-ks.cfg anaconda-ks-tmp.cfg
Successfully copied 3.58kB to /root/anaconda-ks-tmp.cfg
[root@minio-2 ~]# ls -l
总用量 44
-rw------- 1 root root 1588 8月 4 2020 anaconda-ks.cfg
-rw------- 1 root root 1588 8月 4 2020 anaconda-ks-tmp.cfg
-rw-r--r--. 1 root root 1619 8月 4 2020 initial-setup-ks.cfg
-rwxr-xr-x 1 root root 578 11月 8 2022 kubeadm.sh
-rw-r--r--. 1 root root 28561 1月 10 2021 zookeeper.out
drwxr-xr-x. 2 root root 6 8月 4 2020 公共
drwxr-xr-x. 2 root root 6 8月 4 2020 模板
drwxr-xr-x. 2 root root 6 8月 4 2020 视频
drwxr-xr-x. 2 root root 6 8月 4 2020 图片
drwxr-xr-x. 2 root root 6 8月 4 2020 文档
drwxr-xr-x. 2 root root 6 8月 4 2020 下载
drwxr-xr-x. 2 root root 6 8月 4 2020 音乐
drwxr-xr-x. 2 root root 29 8月 5 2020 桌面
9. 删除容器
powershell
docker rm 容器名称(容器ID)
示例如下:
powershell
[root@minio-2 ~]# docker rm fb307951dff0
fb307951dff0
10. 查看容器IP地址
可以查看容器运行的各种数据:
powershell
docker inspect 容器名称(容器ID)
可以直接使用下面命令直接输出IP地址
powershell
docker inspect --format='{{.NetworkSettings.IPAddress}}' 容器名称(容器ID
示例如下:
powershell
[root@minio-2 ~]# docker inspect --format='{{.NetworkSettings.IPAddress}}' mynginx
172.17.0.2
11. 登录容器命令
powershell
docker exec -it 容器名称(容器ID) /bin/bash
示例如下:
powershell
[root@minio-2 ~]# docker exec -it mynginx /bin/bash
root@11525fe33b02:/# ls -l
total 8
-rw------- 1 root root 1588 Aug 3 2020 anaconda-ks.cfg
lrwxrwxrwx 1 root root 7 Nov 7 17:40 bin -> usr/bin
drwxr-xr-x 2 root root 6 Nov 7 17:40 boot
drwxr-xr-x 5 root root 340 Jan 7 02:24 dev
drwxr-xr-x 1 root root 41 Dec 29 23:22 docker-entrypoint.d
-rwxr-xr-x 1 root root 1620 Dec 29 23:21 docker-entrypoint.sh
drwxr-xr-x 1 root root 19 Jan 7 02:24 etc
drwxr-xr-x 2 root root 6 Nov 7 17:40 home
lrwxrwxrwx 1 root root 7 Nov 7 17:40 lib -> usr/lib
lrwxrwxrwx 1 root root 9 Nov 7 17:40 lib64 -> usr/lib64
drwxr-xr-x 2 root root 6 Dec 29 00:00 media
drwxr-xr-x 2 root root 6 Dec 29 00:00 mnt
drwxr-xr-x 2 root root 6 Dec 29 00:00 opt
dr-xr-xr-x 194 root root 0 Jan 7 02:24 proc
drwx------ 2 root root 37 Dec 29 00:00 root
drwxr-xr-x 1 root root 23 Jan 7 02:24 run
lrwxrwxrwx 1 root root 8 Nov 7 17:40 sbin -> usr/sbin
drwxr-xr-x 2 root root 6 Dec 29 00:00 srv
dr-xr-xr-x 13 root root 0 Jan 7 02:24 sys
drwxrwxrwt 2 root root 6 Dec 29 00:00 tmp
drwxr-xr-x 1 root root 66 Dec 29 00:00 usr
drwxr-xr-x 1 root root 19 Dec 29 00:00 var
12. 目录挂载
创建容器的时候,将宿主机的目录与容器内的目录进行映射,这样我们就可以通过修改宿主机某个目录的文件从而去影响容器。创建容器 添加-v参数 后边为 宿主机目录:容器目录,例如:
powershell
[root@minio-2 data]# docker run -di --name=mynginx -p 80:80 -v /root/data:/home m.daocloud.io/docker.io/library/nginx
9be00a5ff39d51459cc8c9a42f09ff187e7debdf33bdc3272fc13988092d0b40
[root@minio-2 data]# ls -l
总用量 4
-rw------- 1 root root 1588 1月 7 11:38 anaconda-ks-tmp.cfg
[root@minio-2 data]# docker exec -it mynginx /bin/bash
root@9be00a5ff39d:/# cd home
root@9be00a5ff39d:/home# ls -l
total 4
-rw------- 1 root root 1588 Jan 7 03:38 anaconda-ks-tmp.cfg
13. 容器存为镜像
powershell
docker commit mynginx mynginx_i
示例如下:
powershell
[root@minio-2 data]# docker commit mynginx mynginx_i
sha256:40189ae6dd9381bd2b8b34721121fd2a64731fbb4616b1026795fd6c54e8a237
[root@minio-2 data]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
mynginx_i latest 40189ae6dd93 5 seconds ago 152MB
m.daocloud.io/docker.io/library/nginx latest 058f4935d1cb 8 days ago 152MB
quay.nju.edu.cn/prometheus/prometheus latest 20a11eec2fec 3 weeks ago 378MB
docker.xuanyuan.me/library/mysql 5.7 5107333e08a8 2 years ago 501MB
grafana/grafana 10.2.0 2fbe6143d3ba 2 years ago 399MB
quay.nju.edu.cn/prometheus/node-exporter v1.6.0 173d3570a5af 2 years ago 22.7MB
gcr.nju.edu.cn/cadvisor/cadvisor v0.39.3 fb99a30037d4 4 years ago 87MB
calico/node v3.9.6 15f795b449d2 5 years ago 195MB
14. 容器保存为tar
powershell
docker save -o mynginx.tar mynginx_i
15. 容器加载恢复
先删除原来的镜像 mynginx_i,然后使用 load 命令导入
powershell
[root@minio-2 images]# docker rmi mynginx_i
Untagged: mynginx_i:latest
Deleted: sha256:40189ae6dd9381bd2b8b34721121fd2a64731fbb4616b1026795fd6c54e8a237
Deleted: sha256:48e9b8deb435104ce291ffb2239430b478b1e6b3f7f6b27bf69833d37c5cd684
[root@minio-2 images]# docker load -i mynginx.tar
cfb00dcfbc41: Loading layer [==================================================>] 14.34kB/14.34kB
Loaded image: mynginx_i:latest
[root@minio-2 images]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
mynginx_i latest 40189ae6dd93 4 minutes ago 152MB
m.daocloud.io/docker.io/library/nginx latest 058f4935d1cb 8 days ago 152MB
quay.nju.edu.cn/prometheus/prometheus latest 20a11eec2fec 3 weeks ago 378MB
docker.xuanyuan.me/library/mysql 5.7 5107333e08a8 2 years ago 501MB
grafana/grafana 10.2.0 2fbe6143d3ba 2 years ago 399MB
quay.nju.edu.cn/prometheus/node-exporter v1.6.0 173d3570a5af 2 years ago 22.7MB
gcr.nju.edu.cn/cadvisor/cadvisor v0.39.3 fb99a30037d4 4 years ago 87MB
1.5、Dockerfile
1.5.1、Dockerfile 是什么
Dockerfile 是由一系列命令和参数构成的脚本,这些命令应用于基础镜像并最终创建一个新的镜像。
1、开发人员:可以为开发团队提供一个完全一致的开发环境;
2、测试人员:可以直接拿开发时所构建的镜像或者通过 Dockerfile 文件构建一个新的镜像开始工作了;
3、运维人员:在部署时,可以实现应用的无缝移植。
1.5.2、Dockerfile 常用的命令

Dockerfile示例:
powershell
#依赖镜像名称和ID
FROM centos:7
#指定镜像创建者信息
MAINTAINER leo825
#切换工作目录
WORKDIR /usr
RUN mkdir /usr/local/java
#ADD 是相对路径jar,把java添加到容器中
ADD jdk-8u261-linux-x64.tar.gz /usr/local/java/
#配置java环境变量
ENV JAVA_HOME /usr/local/java/jdk1.8.0_261
ENV JRE_HOME $JAVA_HOME/jre
ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib:$CLASSPATH
ENV PATH $JAVA_HOME/bin:$PATH
执行命令构建镜像
powershell
docker build -t='dockerjdk1.8' .
查看惊醒是否构建完成
powershell
docker images
powershell
[root@minio-2 dockerjdk8]# docker build -t='dockerjdk1.8' .
[+] Building 9.9s (9/9) FINISHED docker:default
=> [internal] load build definition from Dockerfile 0.0s
=> => transferring dockerfile: 495B 0.0s
=> [internal] load metadata for docker.io/library/centos:7 0.0s
=> [internal] load .dockerignore 0.0s
=> => transferring context: 2B 0.0s
=> [1/4] FROM docker.io/library/centos:7 0.0s
=> [internal] load build context 2.7s
=> => transferring context: 143.14MB 2.7s
=> [2/4] WORKDIR /usr 0.1s
=> [3/4] RUN mkdir /usr/local/java 0.8s
=> [4/4] ADD jdk-8u261-linux-x64.tar.gz /usr/local/java/ 4.2s
=> exporting to image 2.8s
=> => exporting layers 2.8s
=> => writing image sha256:fbb25061812559f14ea6f1f3fca00c0b5cd6e8ab550d31cdfa05ec5ea789598f 0.0s
=> => naming to docker.io/library/dockerjdk1.8 0.0s
[root@minio-2 dockerjdk8]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
dockerjdk1.8 latest fbb250618125 9 seconds ago 556MB
mynginx_i latest 40189ae6dd93 2 hours ago 152MB
2、docker-compose 安装与使用
2.1、docker-compose 简介
Docker Compose是一种用于定义和运行多容器Docker应用程序的工具。通过一个 docker-compose.yml 文件,您可以配置应用程序需要的所有服务(例如:Web服务器、数据库、缓存等)并轻松管理它们。
Docker Compose 使用的三个步骤:
- 使用 Dockerfile 定义应用程序的环境。
- 使用 docker-compose.yml,定义构成应用程序的服务,这样它们可以在隔离环境中一起运行。
- 最后,执行 docker-compose up 命令来启动并运行整个应用程序。
2.2、docker-compose 安装
离线从官方下载 docker-compose 到本地,下载地址:https://github.com/docker/compose/
然后将文件放到:/usr/local/bin/
powershell
[root@minio-2 bin]# mv docker-compose-linux-x86_64 docker-compose
[root@minio-2 bin]# chmod +x /usr/local/bin/docker-compose
[root@minio-2 bin]# docker-compose --version
Docker Compose version v2.20.1
通过 docker-compose 编排一系列环境进行一键快速部署运行,小白运维神器:
powershell
# 安装git命令: yum install -y git
git clone https://gitee.com/zhengqingya/docker-compose.git
cd docker-compose/Linux
详细使用:
powershell
https://gitee.com/zhengqingya/docker-compose
2.3、docker-compose 常见命令
1. docker-compose up 命令
powershell
docker-compose up [options]
功能:
- 创建并启动服务(容器):如果服务尚未创建,docker-compose up -d 会根据 docker-compose.yml
- 文件中的定义创建并启动这些服务。 后台运行:-d 参数表示"detached"模式,即以分离模式运行,服务会在后台运行,不会占用当前终端。
- 重新创建容器:如果服务已经存在且正在运行,docker-compose up -d 会先停止并删除现有的容器,然后重新创建并启动新的容器。
- 构建镜像:如果配置文件中指定了 build 指令,docker-compose up -d 会先构建所需的 Docker 镜像。
- 检查配置:在启动服务之前,docker-compose up -d 会检查并验证 docker-compose.yml 文件中的配置。
2. docker-compose down 命令
powershell
docker-compose down [options]
功能:
- docker-compose down -v 命令用于停止并移除使用 docker-compose.yml 文件定义的所有容器、网络、卷(通过 -v 参数指定的数据卷)以及默认的网络桥接。
- 使用 -v 参数会删除所有命名的数据卷。这可能会导致数据丢失,因此在执行前请确保已经做好了必要的备份。
使用场景:
- 适用于彻底清理环境,例如在开发过程中需要重置环境或者测试不同配置时。
- 完全重置环境:当你需要完全重置开发环境,确保没有任何遗留数据时,可以使用 docker-compose down -v。
- 测试环境清理:在自动化测试中,每次测试结束后使用 docker-compose down -v 可以确保环境干净,不受上次测试的影响。
- 部署前清理:在部署新版本应用之前,使用 docker-compose down -v 可以确保没有旧版本的残留数据。
选项:
-
--rmi :删除镜像。type 可以是以下值之一:
all:删除所有服务的镜像。
local:仅删除那些不带有 :(表示镜像标签)或 latest 标签的镜像(通常是构建时创建的镜像)。
-
-v 或 --volumes:移除所有为服务定义的卷(包括默认卷和命名卷)。
-
--rmi-all:等同于 --rmi all,删除所有服务的镜像。
-
-h, --help:显示帮助信息。
示例:
1)停止并移除容器、网络和默认网络
powershell
docker-compose down
2)停止并移除容器、网络、卷以及镜像
powershell
docker-compose down --volumes --rmi all
3)仅移除构建时创建的本地镜像
powershell
docker-compose down --rmi local
4)指定配置文件
powershell
docker-compose -f my-compose-file.yml down
注意事项:
- 使用 docker-compose down --volumes 会删除所有在 docker-compose.yml 文件中定义的卷,包括默认卷和命名卷。如果你不想删除这些卷,请不要使用这个选项。
- 删除镜像操作是不可逆的,请确保在删除镜像之前备份必要的数据。
- 如果你使用 Docker Compose 来管理多个环境(例如开发、测试和生产环境),请确保你在正确的环境中运行 docker-compose down 命令,以避免误删重要数据。
3. docker-compose stop 命令
powershell
docker-compose stop
停止 Compose 应用相关的所有容器,但不会删除它们。
被停止的应用可以很容易地通过 docker-compose restart 命令重新启动。
docker-compose stop 命令用于停止通过 docker-compose.yml 文件定义并启动的所有容器。这个命令不会移除容器、网络或卷,它只是停止了容器的运行。
4. docker-compose start 命令
powershell
docker-compose start
docker-compose start 命令用于启动之前已经创建但已停止的容器。
5. docker-compose restart 命令
powershell
docker-compose restart
重启已停止的 Compose 应用。
如果用户在停止该应用后对其进行了变更,那么变更的内容不会反映在重启后的应用中,这时需要重新部署应用使变更生效。
6. docker-compose ps 命令
powershell
docker-compose ps
用于列出 Compose 应用中的各个容器。
输出内容包括当前状态、容器运行的命令以及网络端口。
7. docker-compose rm 命令
用于删除已停止的 Compose 应用。它会删除容器和网络,但是不会删除卷和镜像。
语法:
powershell
docker-compose rm [OPTIONS] [SERVICE...]
选项:
- -f, --file FILE:指定使用的 Compose 配置文件,默认为 docker-compose.yml。
- -v, --volumes:删除容器的同时删除由 docker-compose.yml 文件定义的卷(如果它们存在并且是容器专用的)。
- -a, --all:删除所有服务容器,而不仅仅是停止的容器。默认情况下,docker-compose rm 只删除停止的容器。
- --rmi TYPE:删除镜像。这个选项会删除构建镜像时产生的中间镜像和构建缓存。TYPE 可以是 all(删除所有镜像)、local(只删除本地镜像)或 built(只删除通过 docker-compose 构建的镜像)。
- -s, --stop:在删除容器之前先停止它们。这是默认行为,可以通过添加 --no-stop 标志来覆盖。
- --no-stop:在删除容器之前不停止它们(通常与 -f 一起使用)。
示例:
1)删除所有停止的容器
powershell
docker-compose rm
这个命令会删除所有在 docker-compose.yml 文件中定义且当前已停止的容器。
2)删除所有容器
powershell
docker-compose rm -a
这个命令会删除所有在 docker-compose.yml 文件中定义的容器,无论它们是运行中的还是已停止的。
3)删除容器和卷
powershell
docker-compose rm -v
这个命令会删除所有已停止的容器以及由 docker-compose.yml 文件定义的卷(如果它们存在并且是容器专用的)。
4)使用指定的 Compose 配置文件
powershell
docker-compose -f my-compose.yml rm
这个命令会使用 my-compose.yml 文件来删除容器。
5)删除镜像
powershell
docker-compose rm --rmi local
这个命令会删除所有通过 docker-compose 构建且在本地存在的镜像。
注意事项:
- 使用 docker-compose rm 命令时,请确保你确实想要删除这些容器,因为删除后的数据(除非已备份到卷中)将不可恢复。
- 如果容器正在运行,你需要先停止它们,或者使用 -s 或 --stop 选项来确保在删除之前先停止它们。
8. docker-compose logs 命令
docker-compose logs 命令用于查看 Docker Compose 应用中各个服务的日志。这个命令非常有用,因为它可以帮助你诊断问题或监视服务的行为。
基本用法:
powershell
docker-compose logs [options] [SERVICE...]
SERVICE(可选):指定要查看日志的服务名称。如果未指定,则显示所有服务的日志。
常用选项:
- --follow, -f:实时跟踪日志输出,类似于 tail -f。
- --tail, -t "all":显示日志的最后几行。默认值是 all,也可以指定一个数字。
- --no-color:禁用颜色输出,使日志更适合重定向到文件或其他工具。
- --timestamps, -T:在日志输出中包含时间戳。
示例:
1)查看所有服务的日志
powershell
docker-compose logs
2)查看特定服务的日志
powershell
docker-compose logs web
3)查看特定服务的最后10行日志
powershell
docker-compose logs --tail 10 web
4)查看所有服务的日志并包含时间戳
powershell
docker-compose logs -T
9. 使用多个Compose文件
可以将配置拆分为多个文件:
powershell
docker-compose -f docker-compose.yml -f docker-compose.prod.yml up