镜像

  • 是一个特殊的文件系统,不包含任何的动态数据。构建后不再发生改变
  • 采用 Union FS技术,分层构建。便于在基础层定制私有化内容

容器

  • 实质是一个进程。区别于普通进程,容器进程运行于属于自己的独立的 命名空间
  • 镜像与容器的关系,可类比为 实例 的关系。容器是镜像运行时的实体
  • 容器运行时,是以镜像为基础层,在其上创建一个当前 容器的存储层
  • 容器储存层 生命周期跟随容器,应保持无状态化,不应写入任何数据
  • 文件、数据写入应使用 数据卷(Volume),或直接绑定宿主目录。

docker Registry

  • 一个docker Registry包含多个 仓库(Repository),每个仓库可以包含多个 标签(Tag);每个标签对应一个镜像。
  • <仓库名>:<标签>的形式来指定镜像,默认 lasted
  • 镜像加速器,指国内云服务商针对 Docker Hub提供 的 镜像服务(Registry Mirror)
  • 示例:在 Perferences -> Daemon -> Registry mirrors。在列表中填写加速器地址 Docker 官方提供的中国 registry mirror,并重启docker即可

一些基础命令

  1. # 登录
  2. docker login -u username -p password -e email
  3. # 查看版本
  4. docker version
  5. # 搜索镜像
  6. docker search
  7. # 拉取镜像
  8. docker pull
  9. # 列出容器,常用选项: -a 显示所有容器,包括未运行的; -l 显示最近创建的容器(最新一个); -s 显示总的文件大小
  10. docker ps
  11. # 运行容器
  12. docker run
  13. # docker commit, 保存对当前容器的修改用以生成一个新的容器,与 docker tag 有异同
  14. # option 可选:-a: 提交的作者; -c: 使用Dockerfile指令来创建镜像; -m: 提交时的说明文字; -p: 在commit时,暂停容器
  15. docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]
  16. # docker inspect, 获取容器、镜像的详细数据
  17. # option 可选:-f: 指定返回值的模板文件; -s: 显示总的文件大小; --type: 为指定类型返回json
  18. docker inspect [OPTIONS] CONTAINER|IMAGE [CONTAINER|IMAGE...]
  19. # 将本地镜像推送到远程镜像库,需要先登录, --disable-content-trust: 忽略镜像的校验,默认开启
  20. docker push [OPTIONS] NAME[:TAG]

一个可视化监控工具:portainer

  1. $ docker volume create portainer_data
  2. $ docker run -d -p 9000:9000 -p 8000:8000 --name portainer --restart always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer