八卦阵 发表于 2024-8-18 02:45:20

Docker Compose与私有堆栈部署

1. 理解 Docker 网络原理

Docker 的网络分为以下几种模式,每种模式都有不同的用途和实用场景:


[*] Bridge 网络:

[*]默认网络。当你不指定网络时,Docker 容器会默认毗连到 bridge 网络。
[*]容器在这个网络中通过 NAT 访问外部网络,可以通过容器名或 IP 地点相互通讯。
[*]适合简单的容器之间通讯,但在复杂场景中可能不敷灵活。

[*] Host 网络:

[*]容器直接使用宿主机的网络堆栈,没有网络隔离。
[*]进步性能,由于省去了 NAT 过程。
[*]使用场景:必要极高网络性能或制止 NAT 开销的应用。

[*] None 网络:

[*]容器没有网络接口,只能通过内部进程间通讯。
[*]使用场景:必要完全隔离的容器,或自定义网络配置的场景。

[*] Overlay 网络:

[*]跨多个 Docker 主机的分布式网络。
[*]常用于 Docker Swarm 集群或 Kubernetes 环境中。
[*]适合容器集群的跨主机通讯。

[*] Macvlan 网络:

[*]容器直接与宿主机的物理网络适配器通讯。
[*]容器会被分配一个独立的 MAC 地点,可以直接出现在物理网络中。
[*]使用场景:必要容器直接访问物理网络的应用,如网络测试工具或捏造路由器。

2. 把握 Docker 的重启计谋

Docker 提供了多种重启计谋,用于控制容器在异常退出或宿主机重启时的举动。


[*] no:

[*]默认值。Docker 不会自动重启容器。

[*] on-failure:

[*]仅在容器非正常退出时(退出状态码非0)重启容器。你可以指定重启的次数。
[*]示例:on-failure:5(最多重启5次)。

[*] always:

[*]无论退出状态码如何,Docker 总是会重启容器。如果容器被手动停止,则不会自动重启。

[*] unless-stopped:

[*]雷同于 always,但如果容器是被手动停止的,在 Docker 守护进程重启后,容器不会自动重启。

[*] 重启计谋的应用:

[*]在 docker run 命令中使用 --restart 参数,或在 docker-compose.yml 文件中配置 restart 选项。

理解 Harbor 工作原理

Harbor 是一个开源的企业级 Docker 镜像堆栈,支持镜像管理、安全扫描、用户管理等功能。


[*]工作原理:

[*]镜像管理:Harbor 提供了私有镜像堆栈,可以存储和分发容器镜像,支持版本控制和多项目管理。
[*]镜像复制:Harbor 支持跨多个 Harbor 实例之间的镜像复制,方便在不同的数据中央之间同步镜像。
[*]安全扫描:集成了 Clair,用于扫描镜像中的毛病,并提供具体的毛病陈诉。
[*]访问控制:基于脚色的访问控制,用户可以在项目级别管理访问权限。
[*]日记审计:Harbor 记录全部的操作日记,以便于追踪和审计。

使用Compose 基本上分为三步:

1.Dockerfile 定义应用的运行环境
2.docker-compose.yml 定义构成应用的各服务
3.docker-compose up 启动整个应用

2:安装
# curl -L https://github.com/docker/compose/releases/download/1.21.1/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose

大概直接将下载好的离线包拷贝到/usr/local/bin目录下


# chmod +x /usr/local/bin/docker-compose
# docker-compose -v

安装后验证
查察版本
# docker-compose version

查察命令帮助
# docker-compose -h

Docker Compose 文件结构

案例1:
1:编写文件,compose默认的模板文件名字为docker-compose.yaml
# vim docker-compose.yaml

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


注释:httpd的容器中网站的根目录在:/usr/local/apache2/htdocs




备注:
Compose 文件格式有3个版本,分别为1, 2.x 和 3.x 现在主流的为 3.x 其支持 docker 1.13.0 及其以上的版本

Docker Compose 常用命令

1:实行文件,生成容器
# docker-compose up -d

注意:不加选项-d会在前台运行,竣事该进程,这个容器就关闭了,加上-d后可以让容器在背景持续运行

2:列出当前运行的容器
# docker-compose ps
    Name            Command        State         Ports       
-------------------------------------------------------------
root_webapp_1   httpd-foreground   Up      0.0.0.0:80->80/tcp


3:ps:列出全部运行容器
docker-compose ps

4:logs:查察服务日记输出
docker-compose logs webapp

5:port:打印绑定的公共端口,下面命令可以输出httpd服务80端口所绑定的公共端口
docker-compose port webapp 80

6:run:在一个服务上实行一个命令()
docker-compose run webapp bash

备注:
红色部门是可以在容器中实行的命令,使用bash可以登录到容器中,可以换成其他的linux命令

7:重新构建:构建大概重新构建服务(当yaml文件中的参数修改后,让容器使用新的参数重新运行)
打开docker-compose.yaml文件,将此中的映射端口改为8080:80,再实行以下命令
docker-compose up -d

docker-compose port webapp 80

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

9:stop:停止已运行的服务的容器
docker-compose stop webapp

docker-compose start webapp

10:rm:删除指定服务的容器
docker-compose stop webapp
docker-compose rm webapp


11:kill:通过发送 SIGKILL 信号来停止指定服务的容器
docker-compose up -d

docker-compose kill webapp

12:scale:指定运行容器的个数(具体用法看扩展资料)
scale:设置指定服务运行容器的个数,以 service=num 形式指定
docker-compose scale webapp=3

docker-compose up --scale webapp=3 -d

注意:先删除当前全部的容器,将文件中的端口注释掉
# cat docker-compose.yml

version: '2'
services:
  webapp:
    image: 'httpd:latest'
#    ports:
#      - "9090:80"
    volumes:
      - "/var/www/html:/usr/local/apache2/htdocs:rw"
后面可以跟多个服务名,以空格隔开,各容器之间不要有端口冲突,要使用随机端口进行映射
做负载均衡用的

Docker Compose yml配置文件及常用指令简介
(1)不支持制表符 tab 键缩进,必要使用空格缩进。
(2)通常开头缩进两个空格。
(3)字符后缩进一个空格,如冒号、逗号、横杆。
(4)用#号注释。
(5)如果包罗特别字符,要使用单引号('')引起来。
(6)布尔值(true、 false、 yes、 no、 on、 off)必须用引号("")括起来,如许分析器会
将它们表明为字符串。

堆栈部署

compose的案例

案例2:
1:编写文件
# vim docker-compose.yaml

version: '2'
services:
  webapp:
    image: 'nginx'
    ports:
      - "80:80"
    volumes:
      - "/www/html:/www/html:rw"
      - "/opt/nginx/nginx.conf:/etc/nginx/nginx.conf"


2:修改nginx配置文件
将nginx的配置文件上传到docker主机上
# mkdir /opt/nginx
# vim /opt/nginx/nginx.conf

#user  nobody;
worker_processes  1;

#pid        logs/nginx.pid;


events {
    worker_connections  1024;
}

http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    #tcp_nopush     on;

    #keepalive_timeout  0;
    keepalive_timeout  65;

    #gzip  on;

    server {
        listen       80;
        server_name  localhost;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location / {
            root   /www/html;
            index  index.html index.htm index.php;
        }

        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }

        location ~ \.php$ {
            root           /www/html;
            fastcgi_pass   127.0.0.1:9000;
            fastcgi_index  index.php;
            fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
            include        fastcgi_params;
        }

    }

}

3:实行文件,生成容器
# docker-compose up -d


4:列出当前运行的容器
# docker-compose ps


# docker-compose kill webapp


安装Harbor(worker节点)

在两台worker节点上分别安装Harbor,由于官方提供了安装脚本,安装过程还是比较简单的。具体步调如下:
1:下载安装包

首先下载官方的离线安装包,固然你能科学上网的话使用在线安装包也可以:
Release v2.4.3 · goharbor/harbor · GitHub
https://github.com/goharbor/harbor/releases/download/v2.4.3/harbor-offline-installer-v2.4.3.tgz

2:下载完成后,将压缩包上传到两个worker节点:

# ls
harbor-offline-installer-v2.4.3.tgz

# ls
harbor-offline-installer-v2.4.3.tgz
3:然后对其进行解压:

# tar -zxvf harbor-offline-installer-v2.4.3.tgz
解压后的目录文件如下:
# cd harbor
# ls
common.sh  harbor.v2.4.3.tar.gz  harbor.yml.tmpl  install.sh  LICENSE  prepare
 

4:配置harbor

将配置文件模板拷贝一份,并定名为harbor.yml,这是默认的配置文件名称:
# cp harbor.yml.tmpl harbor.yml
编辑harbor.yml文件,按照如下说明修改几处配置项:
# vim harbor.yml
# 修改为当前所在节点的ip
hostname: 192.168.10.102

# 登录界面的密码
harbor_admin_password: pwd123

# 将https相干的配置给注释掉,这里为了简单只使用http,而且也可以在nginx那一层去做https
# https related config
#https:
  # 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

注意:
注释掉https相干的行
5:安装docker-compose

准备好配置文件之后,安装docker-compose,由于Harbor的安装脚本是基于docker-compose去安装的。下载docker-compose然后放到/usr/local/bin/目录下,再更改一下权限即可:
# curl -L "https://github.com/docker/compose/releases/download/1.26.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
# chmod 755 /usr/local/bin/docker-compose
备注:
也可以提前下载好直接拷贝到 /usr/local/bin目录下

6:运行Harbor的安装脚本

# ./install.sh

: checking if docker is installed ...

Note: docker version: 19.03.12

: checking docker-compose is installed ...

Note: docker-compose version: 1.26.2

: loading Harbor images ...
Loaded image: goharbor/prepare:v2.4.3
Loaded image: goharbor/harbor-jobservice:v2.4.3
Loaded image: goharbor/harbor-registryctl:v2.4.3
Loaded image: goharbor/registry-photon:v2.4.3
Loaded image: goharbor/harbor-core:v2.4.3
Loaded image: goharbor/notary-signer-photon:v2.4.3
Loaded image: goharbor/clair-photon:v2.4.3
Loaded image: goharbor/trivy-adapter-photon:v2.4.3
Loaded image: goharbor/harbor-log:v2.4.3
Loaded image: goharbor/nginx-photon:v2.4.3
Loaded image: goharbor/clair-adapter-photon:v2.4.3
Loaded image: goharbor/chartmuseum-photon:v2.4.3
Loaded image: goharbor/harbor-portal:v2.4.3
Loaded image: goharbor/harbor-db:v2.4.3
Loaded image: goharbor/redis-photon:v2.4.3
Loaded image: goharbor/notary-server-photon:v2.4.3

: preparing environment ...

: preparing harbor configs ...
prepare base dir is set to /usr/local/src/harbor
WARNING:root:WARNING: HTTP protocol is insecure. Harbor will deprecate http protocol in the future. Please make sure to upgrade to https
Generated configuration file: /config/log/logrotate.conf
Generated configuration file: /config/log/rsyslog_docker.conf
Generated configuration file: /config/nginx/nginx.conf
Generated configuration file: /config/core/env
Generated configuration file: /config/core/app.conf
Generated configuration file: /config/registry/config.yml
Generated configuration file: /config/registryctl/env
Generated configuration file: /config/registryctl/config.yml
Generated configuration file: /config/db/env
Generated configuration file: /config/jobservice/env
Generated configuration file: /config/jobservice/config.yml
Generated and saved secret to file: /data/secret/keys/secretkey
Successfully called func: create_root_cert
Generated configuration file: /compose_location/docker-compose.yml
Clean up the input dir

: starting Harbor ...
Creating network "harbor_harbor" with the default driver
Creating harbor-log ... done
Creating harbor-db     ... done
Creating harbor-portal ... done
Creating redis         ... done
Creating registryctl   ... done
Creating registry      ... done
Creating harbor-core   ... done
Creating harbor-jobservice ... done
Creating nginx             ... done
✔ ----Harbor has been installed and started successfully.----
 
7:安装完成,使用浏览器访问Harbor,正常情况下应能进入登录界面:

https://i-blog.csdnimg.cn/direct/5dde05a9a4f24bbc8441549984031903.png
默认用户名为admin,密码则为配置文件中定义的密码。登录成功后页面如下:
https://i-blog.csdnimg.cn/direct/a85c067aff214261a9d5d14db18423e3.png

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: Docker Compose与私有堆栈部署