跳转至

Docker容器基本使用

概要: 学习Docker容器启动、停止、删除等基本操作

创建时间: 2023.08.03 00:35:12

更新时间: 2023.08.03 00:48:39

启动容器

Bash
sudo docker run -i -t ubuntu /bin/bash

说明

  1. 参数-i:保证容器开启STDIN,可以进行持久化的命令行交互操作
  2. 参数-t:告诉Docker为创建的容器分配一个伪tty终端
  3. 参数-i-t可以连写为-it
  4. 镜像ubuntu如果本地不存在,则会从Docker Hub下载并保存到本地
  5. Docker使用镜像创建新的容器后,执行/bin/bash命令,进入了容器内部的shell

使用容器

检查容器进程

Bash
ps -aux

在容器内安装软件

Bash
apt-get update && apt-get install vim

列出容器

Bash
1
2
3
docker ps     # 列出正在运行的容器
docker ps -a  # 列出所有容器
docker ps -l  # 列出最后一个运行的容器

注意,指代容器的三种方式

  1. 短的UUID,即docker ps命令下的${CONTAINER ID}字段
  2. 长的UUID,在容器对应的文件夹内可以发现
  3. 容器名称,即docker ps命令下的${NAMES}字段

重命名容器

Bash
sudo docker run --name lzwang_container -it ubuntu /bin/bash

启停容器

启动已经停止的容器

Bash
sudo docker start lzwang_container  # 使用容器名称启动
sudo docker start 6cb71ec36ae1      # 使用容器ID启动

重启容器

手动重启容器

Bash
sudo docker restart lzwang_container  # 使用容器名称重启
sudo docker restart 6cb71ec36ae1      # 使用容器ID重启
创建自动重启的容器
Bash
sudo docker run --restart=always --name lzwang_container -d  # 总是自动重启
sudo docker run --restart=on-failure:5 --name lzwang_container -d  # 最多重启5次

停止已启动的容器

Bash
sudo docker stop lzwang_container  # 使用容器名称停止
sudo docker stop 6cb71ec36ae1      # 使用容器ID停止

使用守护式容器

创建守护式容器

Bash
sudo docker run --name lzwang_container_2 -it -d ubuntu /bin/bash

查看守护式容器进程

Bash
sudo docker top lzwang_container_2

查看容器日志

Bash
1
2
3
4
5
6
sudo docker run --name lzwang_container_2 -it -d ubuntu /bin/bash -c "while true; do echo hello world; sleep 1; done"

sudo docker logs lzwang_container_2
sudo docker logs -f lzwang_container_2   # 参数 -f 表示跟踪 log 输出
sudo docker logs -tf lzwang_container_2  # 参数 -t 表示打上时间戳,跟踪 log 输出
sudo docker logs --tail 10 -f lzwang_container_2  # 参数 --tail 10,获取日志最后10行内容

深入查看容器

Bash
sudo docker inspect lzwang_container_2

提示

inspect参数后可以接多个容器,空格分割

删除容器

删除单个容器

删除已停止的容器

Bash
sudo docker rm lzwang_container_2  # 使用名称删除
sudo docker rm c507aa019948        # 使用ID删除
删除正在运行的容器
Bash
sudo docker rm -f lzwang_container_2  # 使用名称删除
sudo docker rm -f c507aa019948        # 使用ID删除

删除所有容器

Bash
sudo docker rm `sudo docker ps -a -q` # 不包含已启动的容器
sudo docker rm -f `sudo docker ps -a -q` # 包含已启动的容器

参考