# 容器

#### 博客作者：联系请[点击](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
```


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://hezhiqiang.gitbook.io/about-the-author/yun-yuan-sheng-yun-wei-jiao-cheng/docker-ji-ben-shi-yong/rong-qi.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
