# 容器

# 创建&运行

docker run 【options】 image 【COMMAND】 【ARGS..】

  • OPTIONS:选项,需要重点关注-d,-p,-V,-e,-restarti这几个选项
    • --name="容器新名字" 为容器指定一个名称;
    • -d: 后台运行容器并返回容器ID,也即启动守护式容器(后台运行)
    • -i:以交互模式运行容器,通常与 -t 同时使用;
    • -t:为容器重新分配一个伪输入终端,通常与 -i 同时使用;也即启动交互式容器(前台有伪终端,等待交互);
    • -P: 随机端口映射(大写P)
    • -p: 指定端口映射(小写p)
  • IMAGE:镜像信息,推荐使用镜像名:TAG的写法如果只写镜像名
  • COMMAND:创建容器后要执行的命令
  • ARGS:
    • -i:以交互模式运行,通常与-t同时使用
    • -t:启动容器后,为容器分配一个命令行,通常与-i使用
  1. 默认运行
docker run mysql

docker run mysql:8.0.24
  1. 后台运行
docker run -d mysql:8.0.24
  1. 交互运行 /bin/bash放在镜像后面是命令,这里希望有个交互式的shell,因此用的/bin/bash(可省略成bash)
docker run -d -it mysql:8.0.24 bash

# 容器退出

  • exit:run进去容器,exit退出,容器停止
  • ctrl+p+q:run进去容器,ctrl+p+q退出,容器不停止

# 容器启动

  • 启动已停止运行的容器:docker start 容器ID或者容器名
  • 重启容器:ocker restart 容器ID或者容器名
  • 停止容器:docker stop 容器ID或者容器名
  • 强制停止容器: docker kill 容器ID或容器名

# 删除容器

  • docker rm 容器ID 一次性删除多个容器实例: docker rm -f $(docker ps -a -q)

# 进入容器

docker exec 【选项】 容器ID或容器名 命令 【参数】

docker exec -it b8d17a0865ae bash

# 查看容器日志

docker logs 【选项】 容器id或容器名 -f:查看运行中的日志

# 容器拷贝

docker cp 容器ID:容器内路径 目的主机路径

docker cp b8d17a0865ae /usr/local/a.txt /home/c.txt

# 容器命名

docker run --name 需要定义的容器名 镜像名

docker run -d --name customname mysql

# 重启策略

宿主机冲重启后,需要将docker 重新启动并且一个一个,设置重启策略跟随着宿主机一起启动
用法:docker run --restart 重启策略 镜像名

  • no:(默认)容器退出时不会自动重启。
  • always:容器总是在退出后自动重启。
  • on-failure[:max-retries):容器仅在非正常退出时重启,可以指定最大重试次数。
  • unless-stopped:容器会在退出后白动重启,除非手动停止了容器.
docker run --restart always -d mysql

# 容器导入和导出(导入和导出容器)

docker export 容器ID > 文件名.tar

  • export 导出容器的内容留作为一个tar归档文件[对应import命令]
  • import 从tar包中的内容创建一个新的文件系统再导入为镜像[对应export]
docker export b8d17a0865ae > a.tar.gz