四时宝库

程序员的知识宝库

Docker 备忘录 - 03. 常用命令(docker volume 备份)

一、镜像

# 搜索镜像
docker search <镜像名称>
# 搜索镜像,只显示前 5 条
docker search <镜像名称> --limit 5

# 拉取最新版本的镜像
docker pull <镜像名称>
# 拉取指定版本的镜像
# 可以在 dockerhub 上查看镜像有哪些版本
docker pull <镜像名称>:<版本tag>

# 查看本地所有镜像
docker images
# 查看本地所有镜像,包括中间层
docker images -a
# 只显示镜像的ID
docker images -q

# 查看镜像的详细信息
docker image inspect <镜像名称>

# 删除镜像
docker rmi <镜像ID>
# 删除指定版本的镜像
docker rmi <镜像ID>:<版本tag>
# 删除多个
docker rmi <镜像ID1> <镜像ID2>
# 强制删除
docker rmi -f <镜像ID>
# 删除所有镜像
docker rmi -f $(docker images -qa)
# 删除所有未使用的镜像
docker image prune

# 保存镜像到 tar 包
docker save -o /opt/liwy_image.tar \
<镜像ID>:<版本tag>
# 加载镜像文件
docker load -i /opt/liwy_image.tar

# 查询虚悬镜像
docker image ls -f dangling=true
# 删除所有的虚悬镜像
docker image prune \
--filter "dangling=true"

虚悬镜像(dangling image):镜像名、标签都是 <none> 的镜像。通常是由于构建过程中出现了某些问题的时候,产生的异常镜像。虚悬镜像的产生概率不高,但其可能会对系统造成一些潜在的风险。因此,一旦发现虚悬镜像,应立即删除。

二、容器

1. 创建与启动新容器

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

# 以交互的方式启动 ubuntu
# 这里的 /bin/bash 可以简写为 bash
# 或缺省则默认为 bash
docker run -it --name liwy-ubuntu \
ubuntu /bin/bash

# 以后台方式运行 redis
docker run -d --name liwy-redis redis

# 设置端口映射,
# 冒号前面为主机端口,后面为容器端口
docker run -d -p 6379:6379 \
--name liwy-redis redis

# 设置多个端口映射
docker run -it -p 80:80 -p 8080:8080 \
--name liwy-ubuntu ubuntu bash
  • --name :指定容器名称,省略则由系统默认生成。
  • -i :交互模式,使容器保持打开状态,通常与 -t 结合使用。
  • -t :分配一个伪终端,通常与 -i 结合使用。
  • -d :守护模式,后台运行并返回容器ID。
  • -p :指定容器公开的端口映射到主机的指定端口
  • -P :将容器所有公开的端口映射到主机的随机端口

2. 查看容器列表

# 查看运行中的容器
docker ps
# 查看所有容器,包括停止的
docker ps -a
# 查看最近创建的容器
docker ps -l
# 查看容器,只显示容器编号
docker ps -q
# 查看最近5个创建的容器
docker ps -n 5

3. 退出与进入运行中的容器

# 直接退出容器,容器会停止
exit
# 退出容器,容器不会停止
Ctrl + p + q  

# 进入容器(在运行中的容器中执行命令)
docker exec -it <容器ID或名称> bash
# 进入容器(附加本地的标准输入输出流到运行中的容器)
docker attach <容器ID或名称>
  • docker attach :会直接进入容器启动命令的终端,不会启动新的进程,所以用 exit 退出,会导致容器停止;
  • docekr exec :在容器中打开新的终端,是启动了新的进程,所以用 exit 退出容器,不会导致容器停止。

4. 停止与启动容器

# 启动已经停止的容器
docker start <容器ID/名称>
# 重启容器
docker restart <容器ID/名称>
# 停止容器
docker stop <容器ID/名称>
# 强制停止容器
docker kill <容器ID/名称>
  • docker stop :较温柔,它会给容器发送一个 TERM 信号,给容器充足的时间(默认10秒)保存数据,让容器自动安全的停止运行,超时后再给系统发送 SIGKILL 的系统信号强行 kill 掉进程,最后转变为 stop 状态。
  • docker kill :较生猛,它会直接给系统发送 SIGKILL 的系统信号强行 kill 掉进程。

5. 删除容器

# 删除已停止的容器
docker rm <容器ID/名称>
# 强制删除容器,运行中的也可以删除
docker rm -f <容器ID/名称>
# 删除全部容器
docker rm -f $(docker ps -qa)

6. 重启策略

# 启动容器时设置容器重启策略
docker run -d -p 6379:6379 \
--restart=always \
--name liwy-redis redis

# 已启动的容器可以通过 update 修改重启策略
docker update \
--restart=always <容器ID/名称>
  • no :默认策略,在容器退出时不进行重启。
  • always :无论容器退出状态如何,都会尝试重启容器。
  • on-failure :只有在容器以非零状态码退出时才尝试重启容器。
  • unless-stopped :在容器退出或守护进程重启时,都尝试重启容器,除非用户明确停止了容器。

7. 查看容器日志

# 查看容器日志信息
docker logs <容器ID/名称>
# 循环打印日志信息
docker logs -f <容器ID/名称>

8. 拷贝文件

# 将宿主机的文件拷贝到容器
docker cp <宿主机路径> <容器ID>:<容器内路径>
# 将容器的文件拷贝到宿主机
docker cp <容器ID>:<容器内路径> <宿主机路径>

9. 导入导出容器

# 导出容器到 tar 包
docker export <容器ID/名称> > 文件.tar
# 从 tar 包导入为镜像
docker import 文件.tar <镜像名称>:<版本标签>

10. 查看容器信息

# 查看容器详细信息
docker inspect <容器ID/名称>
# 查看容器运行状态
docker top <容器ID/名称>

三、其他命令

# 查看概要信息
docker info

# 查看 Docker 系统资源使用情况
# 包括各个镜像、容器和数据卷所占用的空间等
docker system df

# 查看帮助文档
docker --help

# 查看具体命令的帮助文档
docker <具体命令> --help

发表评论:

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言
    友情链接