小阿轩yx-Docker Compose 与私有仓库部署
Docker 的网络模式
Docker 四种网络模式
网络模式 | 参数 | 说明 |
host 模式 | - - net=host | 容器和宿主机共享 Network namespace |
container 模式 | - - net={id} | 容器和另外一个容器共享 Network namespace。 kubernetes 中的pod就是多个容器共享一个 Network namespace |
none 模式 | - - net=none | 容器有独立的Network namespace,但并没有对其进行任何网络设置,如分配 veth pair 和网桥连接,配置IP等 |
bridge 模式 | - - net=bridge | 默认为该模式,通过 -p 指定端口映射 |
Bridge 模式
- 是 docker 的默认网络模式
- 不写-net参数,就是 bridge 模式
bridge 模式图
Host 模式
- 容器不会获得一个独立的 Network Namespace,是和宿主机共用一个 Network Namespace
- 容器不会虚拟出自己的网卡、配置自己的 IP 等,使用宿主机的 IP 和端口
- 容器的文件系统、进程列表等和宿主机是隔离的
Host 模式图
Container 模式
- 指定新创建的容器和已经存在的容器共享一个 Network Namespace,不和宿主机共享
- 不会创建自己网卡、配置自己的 IP ,是和指定的容器共享 IP、端口范围
- 除了网络方面,文件系统、进程列表还是隔离的
Container 模式图
None 模式
- 容器拥有自己的 Network Namespace,但是不为 Docker 容器进行网络配置
- 容器没有网卡、IP、路由等信息,需要手动设置
None 模式图
Docker 重启策略
- 面向生产环境的一个启动策略,在开发过程中可以忽略该策略
- 都是由 Docker 守护进程完成的,因此与守护进程息息相关
no
- 默认策略,在容器退出时不重启容器
on-failure
- 在容器非正常退出时(退出状态非0),才会重启容器
on-failure:3
- 指定启动的次数,在容器非正常退出时重启容器,最多重启3次
always
- 在容器退出时总是重启容器
unless-stopped
- 在容器退出时总是重启容器,但是不考虑在 Docker 守护进程启动时就已经停止了的容器
Docker 容器的常见退出状态码
状态码 | 说明 |
0 | 正常退出 |
125 | Docker 守护进程本身错误 |
126 | 容器启动后,要执行的默认命令无法调用 |
127 | 容器启动后,要执行的默认命令不存在 |
其他 | 容器启动后正常执行的命令返回的状态码 |
- 通过状态码可以大概判断出容器的情况
Docker Compose 工具
什么是 Docker Compose
- 前身是 Fig
- 它是一个定义及运行多个 Docker 容器的工具
文件格式以及编写注意事项
YAML
- 一种标记语言
- 它可以很直观的展示数据序列化格式
- 可读性高
- 类似于 XML 数据描述语言,语法比 XML 简单的很多
- 数据结构通过缩进来表示
- 连续的项目通过减号来表示
使用 YAML 时需要注意事项
- 不支持制表符 tab 键缩进、需要使用空格缩进
- 通常开头缩进两个空格
- 字符后缩进一个空格,如冒号、逗号、横杆
- 用#号注释
- 如果包含特殊字符,要使用单引号('')引起来
- 布尔值(true、false、yes、no、on、off)必须用引号("")括起来,这样分析器会将它们截石位字符串
常用字段
常用命令
Harbor 私有仓库
什么是 Harbor
- 是 VMWare 公司开源的企业级 Docker Registry 项目
- 扩展了开源 Docker Distribution
- 是一个企业级私有 Registry 服务器
目标
- 帮助用户迅速搭建一个企业级的 Docker Registry 服务
它以 Docker 公司开源的 Registry 为基础,提供企业用户需求的功能
- 管理 UI
- 基于角色的访问控制(Role Based AccessControl)
- AD/LDAP 集成
- 审计日志(Auditlogging)
特点
- 更好的性能和安全
- 提升用户使用 Registry 构建和运行环境传输镜像的效率
Harbor 的优势
基于角色控制
- 用户和仓库都是基于项目进行组织的,而用户在项目中可以拥有不同的权限
基于镜像的复制策略
- 镜像可以在多个 Harbor 实例之间进行复制(同步),适用于负载平衡、高可用性、多数据中心、多混合多云场景