Skip to content

容器

  • 容器(container)的定义和镜像(image)几乎一模一样,也是一堆层的统一视角,唯一区别在于容器的最上面那一层是可读可写的。
  • 运行中的镜像称为容器。

内核选择

  • 容器必须基于linux 内核系统
  • 常见的linux内核系统
    • ubuntu 比较小 更注重用户体验,适合桌面环境以及个人用户
    • centos 比较大 更倾向于企业级服务器应用,稳定性较强 但是免费版不更新维护了
    • debian 底层非常稳定,内核和内存的占用都非常小,在小内存的VPS就可以流畅运行Debian,比如128m的内存,但debian的帮助文档和技术资料比较少。对于小内存,首选debian,对于非常熟悉linux系统的vps高手,首选debian。

创建/启动容器

bash
# 前台交互式终端启动容器
docker run -i -t ubuntu /bin/bash
# 后台默认执行
docker run -itd ubuntu
  • 命令: docker run [options] [image] [command] [args]
    • [options] : 选项
      • --name 容器名称
      • -d : 后台运行容器并返回容器ID。几守护式容器(后台启动)
      • -i 以交互模式运行容器 通常与-t 同时使用
      • -t 为容器重新分配一个伪输入终端,通常与 -i 同时使用
      • -P 大写P 随机端口映射
      • -p 小写p 指定端口映射 主机端口:容器端口
      • -e 设置环境变量
      • -m 设置最大内存
    • image 镜像
    • [command] : 指令
      • /bin/bash 以bash 执行
    • [args] : 参数

列出容器

bash
# 列出运行中的容器
docker ps
# 列出所有的容器(包含未运行的)
docker ps -a

删除容器

bash
# 删除
docker rm [容器ID]
# 强制删除
docker rm -f [容器ID]
# 一次性删除所有容器实例:危险操作
docker rm -rf $(docker ps -a -q)
# 一次性删除所有容器实例:危险操作
docker ps -a -q | xargs docker rm

容器启动/重启/停止

bash
# 启动容器
docker start [容器ID]
# 停止容器
docker stop [容器ID]
# 重启容器
docker restart [容器ID]
# 强制重启容器
docker kill [容器ID]

进入容器

bash
# docker attach [容器ID/名称]
# 直接进入容器启动命令的终端,不会启动新的进行,用exit退出,会导致容器的停止
# 不推荐使用此命令
docker attach [容器ID]

# docker exec [options] [容器ID/名称] [command]
# 是在容器中打开新的终端,并且可以启动新的进程,用exit退出,不会导致容器的停止
# 推荐使用此命令
docker exec -it [容器ID] /bin/bash

查看容器日志

bash
docker logs [容器ID]

查看容器内部信息

bash
docker inspect [容器ID/名称]

拷贝容器文件到目的主机的路径

bash
# docker cp [容器ID]:[容器内路径] [目的主机路径]
docker ps 95cf96470d5e:/usr/local/a.txt /download/a.txt

导入\导出镜像

bash
# 导出镜像
docker export -o ubuntu.tar [容器ID]
# 导入镜像
docker import ubuntu.tar test/ubuntu:v2