Docker Compose与私有仓库部署

一、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 指定端口映射

 1. Bridge模式

bridge模式是 docker 的默认网络模式,不写–net参数,就是bridge模式。使用docker run -p时,docker 实际是在iptables做了DNAT规则,实现端口转发功能。可以使用iptables -t nat -vnL查看。bridge。

2.Host 模式

     如果启动容器的时候使用host模式,那么这个容器将不会获得一个独立的Network Namespace,而是和宿主机共用一个 Network Namespace。容器将不会虚拟出自己的网卡,配置自己的 IP 等,而是使用宿主机的 IP 和端口。但是,容器的其他方面,如文件系统、进程列表等还是和宿主机隔离的。

 3.Containner 模式

      Containner 模式指定新创建的容器和已经存在的一个容器共享一个 Network Namespace,而不是和宿主机共享。新创建的容器不会创建自己的网卡,配置自己的 IP,而是和一个指定的容器共享 IP、端口范围等。同样,两个容器除了网络方面,其他的如文件系统、进程列表等还是隔离的。两个容器的进程可以通过 lo 网卡设备通信。

 4. None模式

none模式,Docker 容器拥有自己的 Network Namespace,但是,并不为Docker 容器进行任何网络配置。也就是说,这个 Docker 容器没有网卡、IP、路由等信息。需要我们自己为 Docker 容器添加网卡、配置 IP 等。

 二、Docker  Compose工具

1. 什么是Docker Compose

       Docker Compose 的前身是 Fig,它是一个定义及运行多个 Docker 容器的工具。使用 Docker Compose 时,只需要在一个配置文件中定义多个 Docker 容器,然后使用一条命令启 动这些容器。Docker Compose 会通过解析容器间的依赖关系按先后顺序启动所定义的容器。

2. 文件格式以及编写注意事项

       YAML 是一种标记语言,它可以很直观的展示数据序列化格式,可读性高。类似于 XML数据描述语言,语法比 XML 简单的很多。YAML 数据结构通过缩进来表示,连续的项目通过减号来表示,键值对用冒号分隔,数组用中括号([])括起来, hash 用花括号({})括起来

使用 YAML 时需要注意下面事项:

(1)不支持制表符 tab 键缩进,需要使用空格缩进。

(2)通常开头缩进两个空格。

(3)字符后缩进一个空格,如冒号、逗号、横杆。

(4)用#号注释。

(5)如果包含特殊字符,要使用单引号('')引起来。

(6)布尔值(true、 false、 yes、 no、 on、 off)必须用引号("")括起来,这样分析器会将它们解释为字符串。

3.常用字段

字段

描述

build  dockerfile  context

指定Dockerfile文件名构建镜像上下文路径

image

指定镜像

command

执行命令,覆盖默认命令

container name

指定容器名称,由于容器名称是唯一的,如果指定自定义名称,则无法scale

deploy

指定部署和运行服务相关配置,只能在Swarm模式使用

environment

添加环境变量

networks

加入网络

ports

暴露容器端口,与-p相同,但端口不能低于60

volumes

挂载宿主机路径或命令卷

restart

重启策略,默认no,always,no-failure,unless-stoped

 4.常用命令

列1

列2

字段

描述

build

重新构建服务

ps

列出容器

up

创建和启动容器

exec

在容器里面执行命令

scale

指定一个服务容器启动数量

top

显示容器进程

logs

查看容器输出

down

删除容器、网络、数据卷和镜像

stop/start/restart

停止/启动/重启服务

三、 Harbor 私有仓库

1.什么是Harbor

       Harbor 是 VMware 公司开源的企业级 Docker Registry 项目,其目标是帮助用户迅速搭建一个企业级的 Docker Registry 服务。它以 Docker 公司开源的 Registry 为基础,提供了管理 UI、基于角色的访问控制(Role Based AccessControl)、AD/LDAP 集成、以及审计日志(Auditlogging) 等企业用户需求的功能。通过添加一些企业必需的功能特性,例如安全、标识和管理等,扩展了开源 Docker Distribution。作为一个企业级私有 Registry 服务器, Harbor提供了更好的性能和安全,以提升用户使用 Registry 构建和运行环境传输镜像的效率。

2.Harbor 的优势

 基于角色控制:用户和仓库都是基于项目进行组织的,而用户在项目中可以拥有不 同

的权限。

基于镜像的复制策略: 镜像可以在多个 Harbor 实例之间进行复制(同步),适用于负

载平衡、高可用性、多数据中心、混合和多云场景。

支持 LDAP/AD:Harbor 与现有的企业 LDAP/AD 集成,用于用户认证和管理。

删除图像和收集垃圾:镜像可以被删除,也可以回收镜像占用的空间。

 图形 UI:用户可以轻松浏览、搜索镜像仓库以及对项目进行管理。

审计:对存储库的所有操作都进行记录。

 RESTful API:用于大多数管理操作的 RESTful API,易于与外部系统集成。

四、实验部署

1.案例1

[root@localhost ~]# docker-compose -v      查看版本,默认采用2.29
Docker Compose version v2.29.1

上传镜像

[root@localhost images]# bash imp_docker_img.sh     导入镜像

[root@localhost ~]# vim docker-compose.yaml

services:
  webapp:
    image: 'httpd:latest'
    ports:
      - "80:80"
      - "443:443"
    volumes:
      - "/var/www/html:/usr/local/apache2/htdocs:rw"

 

[root@localhost ~]# docker-compose up -d            (执行文件,生成容器,-d 在后台运行)
[+] Running 2/2
 ✔ Network root_default      Created                                                  0.1s 
 ✔ Container root-webaapp-1  Started                                                  1.0s 

[root@localhost ~]# docker-compose ps         (列出当前运行的容器)


docker-compose logs webapp       (查看服务日志)

docker-compose port webapp 80    (服务80端口所绑定的公共端口)

docker-compose start webapp   (启动指定服务已存在的容器)

docker-compose stop webapp          (停止已运行的服务的容器)

docker-compose rm webapp         (删除服务容器)

docker-compose kill webapp            (杀死指定服务容器)

2.  Harbor

安装  harbor-offline-installer-v2.4.3.tgz

[root@localhost ~]# tar zxvf harbor-offline-installer-v2.4.3.tgz             (解压)

[root@localhost harbor]# cp harbor.yml.tmpl harbor.yml             (复制配置文件)
[root@localhost harbor]# vim harbor.yml
hostname: 192.168.10.106                   (#5)

#https:                                               (#13)
  # https port for harbor, default is 443
#  port: 443
  # The path of cert and key files for nginx
#  certificate: /your/certificate/path
#  private_key: /your/private/key/path
 

[root@localhost harbor]# ./install.sh
 ✔ Container redis              Started                                                                      2.7s 
 ✔ Container harbor-portal      Started                                                                      2.5s 
 ✔ Container harbor-db          Started                                                                      1.8s 
 ✔ Container registryctl        Started                                                                      2.3s 
 ✔ Container registry           Started                                                                      2.4s 
 ✔ Container harbor-core        Started                                                                      3.4s 
 ✔ Container harbor-jobservice  Started                                                                      4.3s 
 ✔ Container nginx              Started                                                                      4.5s 
✔ ----Harbor has been installed and started successfully.----                

安装完成

浏览器页面端口访问即可:192.168.10.106

101客户端

[root@localhost ~]# docker tag cirros 192.168.10.106/kubernetes/cirros:v1

[root@localhost ~]# vim /etc/docker/daemon.json 
{
"exec-opts": ["native.cgroupdriver=systemd"],
"registry-mirrors": ["https://cf-workers-docker-io-8jv.pages.dev"],
"insecure-registries": ["192.168.10.106"]
}
 

[root@localhost ~]# docker login 192.168.10.106              (客户端登陆)
Username: zhangsan
Password: 
WARNING! Your password will be stored unencrypted in /root/.docker/config.json.
Configure a credential helper to remove this warning. See
https://docs.docker.com/engine/reference/commandline/login/#credentials-store

Login Succeeded
 

[root@localhost ~]# docker push 192.168.10.106/kubernetes/cirros:v1  (上传镜像)

浏览器查看

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值