> For the complete documentation index, see [llms.txt](https://hezhiqiang.gitbook.io/about-the-author/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://hezhiqiang.gitbook.io/about-the-author/yun-yuan-sheng-yun-wei-jiao-cheng/docker-ji-ben-shi-yong/rong-qi.md).

# 容器

#### 博客作者：联系请[点击](https://hezhiqiang.gitbook.io/about-the-author/lian-xi-zuo-zhe)，搬运不易，希望请作者喝咖啡，可以点击[联系博客作者](https://hezhiqiang.gitbook.io/about-the-author/lian-xi-zuo-zhe)

> Docker是一个开源的容器化平台，允许开发人员在轻量级的容器中打包和运行应用程序。

## 以下是一些常用的Docker容器操作命令：[​](https://www.bkunyun.com/helpce/docs/2030/about1#%E4%B8%89%E5%B8%B8%E7%94%A8%E7%9A%84-docker%E5%AE%B9%E5%99%A8%E7%9B%B8%E5%85%B3%E6%8C%87%E4%BB%A4)

### 创建容器(create)[​](https://www.bkunyun.com/helpce/docs/2030/about1#1%E5%88%9B%E5%BB%BA%E5%AE%B9%E5%99%A8create) <a href="#id-1-chuang-jian-rong-qi-create" id="id-1-chuang-jian-rong-qi-create"></a>

**docker create ：**&#x521B;建一个新的容器但不启动它;如果本地镜像中有容器，则直接创建，如果本地没有镜像则会去官方下载相应的镜像。

**语法：**[**​**](https://www.bkunyun.com/helpce/docs/2030/about1#%E8%AF%AD%E6%B3%95)

```
docker create [OPTIONS] IMAGE [COMMAND] [ARG...]
```

**示例：**

使用docker镜像ubuntu:20.04创建一个容器,并将容器命名为myubuntu

```
docker create  --name myubuntu  ubuntu:20.04
```

### 查看已创建的容器(ps，ls，list)[​](https://www.bkunyun.com/helpce/docs/2030/about1#2%E6%9F%A5%E7%9C%8B%E5%B7%B2%E5%88%9B%E5%BB%BA%E7%9A%84%E5%AE%B9%E5%99%A8pslslist) <a href="#id-2-cha-kan-yi-chuang-jian-de-rong-qi-pslslist" id="id-2-cha-kan-yi-chuang-jian-de-rong-qi-pslslist"></a>

**docker ps :** 列出容器；"ls", "ps", "list"均是别名信息。

**语法：**[**​**](https://www.bkunyun.com/helpce/docs/2030/about1#%E8%AF%AD%E6%B3%95-1)

```
docker ps [OPTIONS]
```

* **OPTIONS说明：**
  * **-a :** 显示所有的容器，包括未运行的。
  * **-f :** 根据条件过滤显示的内容。
  * **--format :** 指定返回值的模板文件。
  * **-l :** 显示最近创建的容器。
  * **-n :** 列出最近创建的n个容器。
  * **--no-trunc :** 不截断输出。
  * **-q :** 静默模式，只显示容器编号。
  * **-s :** 显示总的文件大小。

**示例：**[**​**](https://www.bkunyun.com/helpce/docs/2030/about1#%E5%AE%9E%E4%BE%8B-1)

列出所有在运行的容器信息。

```
runoob@runoob:~$ docker ps
CONTAINER ID   IMAGE          COMMAND                ...  PORTS                    NAMES
09b93464c2f7   nginx:latest   "nginx -g 'daemon off" ...  80/tcp, 443/tcp          myrunoob
96f7f14e99ab   mysql:5.6      "docker-entrypoint.sh" ...  0.0.0.0:3306->3306/tcp   mymysql
```

* **输出详情介绍：**
  * **CONTAINER ID:** 容器 ID。
  * **IMAGE:** 使用的镜像。
  * **COMMAND:** 容器的初始化命令，该命令和镜像的默认设置有关，当然，在启动容器时我们时可以修改的。
  * **CREATED:** 创建的时间。
  * **STATUS:** 当前的状态。
  * **PORTS:** 对外暴露的端口。
  * **NAMES:** 容器的名称，若不指定，则docker引擎会自动帮咱们随机生成一个容器名称。
* **STATUS状态有七种**
  * created（已创建）
  * restarting（重启中）
  * running（运行中）
  * removing（迁移中）
  * paused（暂停）
  * exited（停止）
  * dead（死亡）

### 运行一个已创建的容器(start),停止一个正在运行的容器(stop),重启容器(restart)[​](https://www.bkunyun.com/helpce/docs/2030/about1#3%E8%BF%90%E8%A1%8C%E4%B8%80%E4%B8%AA%E5%B7%B2%E5%88%9B%E5%BB%BA%E7%9A%84%E5%AE%B9%E5%99%A8start%E5%81%9C%E6%AD%A2%E4%B8%80%E4%B8%AA%E6%AD%A3%E5%9C%A8%E8%BF%90%E8%A1%8C%E7%9A%84%E5%AE%B9%E5%99%A8stop%E9%87%8D%E5%90%AF%E5%AE%B9%E5%99%A8restart) <a href="#id-3-yun-hang-yi-ge-yi-chuang-jian-de-rong-qi-start-ting-zhi-yi-ge-zheng-zai-yun-hang-de-rong-qi-stop-z" id="id-3-yun-hang-yi-ge-yi-chuang-jian-de-rong-qi-start-ting-zhi-yi-ge-zheng-zai-yun-hang-de-rong-qi-stop-z"></a>

* **docker start** :启动一个或多个已经被停止的容器
* **docker stop** :停止一个运行中的容器
* **docker restart** :重启容器

**语法：**[**​**](https://www.bkunyun.com/helpce/docs/2030/about1#%E8%AF%AD%E6%B3%95-2)

```
docker start [OPTIONS] CONTAINER [CONTAINER...]
docker stop [OPTIONS] CONTAINER [CONTAINER...]
docker restart [OPTIONS] CONTAINER [CONTAINER...]
```

**示例：**

启动已被停止的容器myrunoob

```
docker start myrunoob
```

停止运行中的容器myrunoob

```
docker stop myrunoob
```

重启容器myrunoob

```
docker restart myrunoob
```

### 创建并启动一个容器(run，等效于"create + start")[​](https://www.bkunyun.com/helpce/docs/2030/about1#4%E5%88%9B%E5%BB%BA%E5%B9%B6%E5%90%AF%E5%8A%A8%E4%B8%80%E4%B8%AA%E5%AE%B9%E5%99%A8run%E7%AD%89%E6%95%88%E4%BA%8Ecreate--start) <a href="#id-4-chuang-jian-bing-qi-dong-yi-ge-rong-qi-run-deng-xiao-yu-createstart" id="id-4-chuang-jian-bing-qi-dong-yi-ge-rong-qi-run-deng-xiao-yu-createstart"></a>

**docker run ：** 创建一个新的容器并运行一个命令

**语法：**[**​**](https://www.bkunyun.com/helpce/docs/2030/about1#%E8%AF%AD%E6%B3%95-3)

```
docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
```

* **常用OPTIONS说明：**
  * **-i** ：即"interactive"，表示交互式的类型。通常和"-t"选项搭配使用。
  * **-t** ：即"terminal"，表示启动一个终端。通常和"-i"选项搭配使用。
  * **-d** ：让容器在后台运行，默认情况下，容器是在前台(当前终端)运行的，这意味着会阻塞当前终端。
  * **--name** ：创建容器时指定名称。
  * **-P** ：随机端口映射，容器内部端口 **随机** 映射到主机的端口
  * **-p** ：指定端口映射，格式为：**主机(宿主)端口:容器端口**

**示例：**[**​**](https://www.bkunyun.com/helpce/docs/2030/about1#%E5%AE%9E%E4%BE%8B-3)

```
使用docker镜像ubuntu:20.04以后台模式启动一个容器,并将容器命名为myubuntu。
docker run --name myubuntu -d ubuntu:20.04 

使用镜像ubuntu:20.04以后台模式启动一个容器,并将容器的80端口映射到主机随机端口。
docker run -P -d ubuntu:20.04

使用镜像 ubuntu:20.04，以后台模式启动一个容器,将容器的 80 端口映射到主机的 80 端口,主机的目录 /data 映射到容器的 /data。
docker run -p 80:80 -v /data:/data -d ubuntu:20.04

绑定容器的 8080 端口，并将其映射到本地主机 127.0.0.1 的 80 端口上。
docker run -p 127.0.0.1:80:8080/tcp ubuntu bash

使用镜像ubuntu:20.04以交互模式启动一个容器,在容器内执行/bin/bash命令。
docker run -it ubuntu:20.04 /bin/bash
```

### 删除容器(rm)[​](https://www.bkunyun.com/helpce/docs/2030/about1#5%E5%88%A0%E9%99%A4%E5%AE%B9%E5%99%A8rm) <a href="#id-5-shan-chu-rong-qi-rm" id="id-5-shan-chu-rong-qi-rm"></a>

**docker rm ：**&#x5220;除一个或多个容器。

**语法**[**​**](https://www.bkunyun.com/helpce/docs/2030/about1#%E8%AF%AD%E6%B3%95-4)

```
docker rm [OPTIONS] CONTAINER [CONTAINER...]
```

* **OPTIONS说明：**
  * **-f :** 通过 SIGKILL 信号强制删除一个运行中的容器。
  * **-l :** 移除容器间的网络连接，而非容器本身。
  * **-v :** 删除与容器关联的卷。

**示例：**[**​**](https://www.bkunyun.com/helpce/docs/2030/about1#%E5%AE%9E%E4%BE%8B-4)

```
强制删除容器 db01、db02：docker rm -f db01 db02
移除容器 nginx01 对容器 db01 的连接，连接名 db：docker rm -l db 
删除容器 nginx01, 并删除容器挂载的数据卷：docker rm -v nginx01
删除所有已经停止的容器：docker rm $(docker ps -a -q)
```

#### 6.显式正在运行的容器中进程信息(top)[​](https://www.bkunyun.com/helpce/docs/2030/about1#6%E6%98%BE%E5%BC%8F%E6%AD%A3%E5%9C%A8%E8%BF%90%E8%A1%8C%E7%9A%84%E5%AE%B9%E5%99%A8%E4%B8%AD%E8%BF%9B%E7%A8%8B%E4%BF%A1%E6%81%AFtop) <a href="#id-6-xian-shi-zheng-zai-yun-hang-de-rong-qi-zhong-jin-cheng-xin-xi-top" id="id-6-xian-shi-zheng-zai-yun-hang-de-rong-qi-zhong-jin-cheng-xin-xi-top"></a>

**docker top :**&#x67E5;看容器中运行的进程信息，支持 ps 命令参数。

**语法：**[**​**](https://www.bkunyun.com/helpce/docs/2030/about1#%E8%AF%AD%E6%B3%95-5)

```
docker top [OPTIONS] CONTAINER [ps OPTIONS]
```

**容器运行时不一定有/bin/bash终端来交互执行top命令，而且容器还不一定有top命令，可以使用docker top来实现查看container中正在运行的进程。**

**示例：**[**​**](https://www.bkunyun.com/helpce/docs/2030/about1#%E5%AE%9E%E4%BE%8B-5)

```
查看容器mymysql的进程信息。
runoob@runoob:~/mysql$ docker top mymysql
UID    PID    PPID    C      STIME   TTY  TIME       CMD
999    40347  40331   18     00:58   ?    00:00:02   mysqld

查看所有运行容器的进程信息。
for i in  `docker ps |grep Up|awk '{print $1}'`;do echo \ &&docker top $i; done
```

### 获取容器的启动日志(logs)[​](https://www.bkunyun.com/helpce/docs/2030/about1#7%E8%8E%B7%E5%8F%96%E5%AE%B9%E5%99%A8%E7%9A%84%E5%90%AF%E5%8A%A8%E6%97%A5%E5%BF%97logs) <a href="#id-7-huo-qu-rong-qi-de-qi-dong-ri-zhi-logs" id="id-7-huo-qu-rong-qi-de-qi-dong-ri-zhi-logs"></a>

**语法：**[**​**](https://www.bkunyun.com/helpce/docs/2030/about1#%E8%AF%AD%E6%B3%95-6)

```
docker logs [OPTIONS] CONTAINER
```

* **OPTIONS说明：**
  * **-f :** 跟踪日志输出
  * **--since :** 显示某个开始时间的所有日志
  * **-t :** 显示时间戳
  * **--tail :** 仅列出最新N条容器日志

**示例：**[**​**](https://www.bkunyun.com/helpce/docs/2030/about1#%E5%AE%9E%E4%BE%8B-6)

跟踪查看容器mynginx的日志输出。

```
docker logs -f mynginx
```

查看容器mynginx从2022年10月1日后的最新10条日志。

```
docker logs --since="2022-10-01" --tail=10 mynginx
```
