首页 > 其他分享 >Docker 基础03

Docker 基础03

时间:2023-10-12 20:36:25浏览次数:35  
标签:03 compose harbor 基础 zhan 镜像 Docker com docker

十一、使用Docker-compose

Docker使用Python 语言编写,用于定义和运行多容器Docker应用程序的工具。通过Compose可以使用yaml文件配置应用程序所需要的所有服务。然后使用一个命令,从yaml文件中创建并启动服务。

11.1 安装docker-compose

官网地址:https://github.com/docker/compose/releases

curl -L https://github.com/docker/compose/releases/download/v2.22.0/docker-compose-linux-x86_64  -o /usr/bin/docker-compose
chmod +x /usr/bin/docker-compose

测试并查看版本

docker-compose version

11.2 编辑prometheus 和grafana 的compose yaml 文件

查看代码compose yaml
version: '3.9'
services:
  # 添加 普罗米修斯服务
  prometheus:
    # Docker Hub 镜像
    image: bitnami/prometheus:latest
    # 容器内部 hostname
    hostname: prometheus
    # 容器支持自启动
    restart: always
    # 容器与宿主机 端口映射
    ports:
      - '9090:9090'
      - '9091:9091'
    # 将宿主机中的config文件夹,挂载到容器中/config文件夹
    volumes:
      - './config/prometheus.yml:/etc/prometheus/prometheus.yml'
      - './data:/prometheus/data' # 指定容器中的配置文件
    command:
      # 支持热更新
      - '--web.enable-lifecycle'
      - "--web.read-timeout=5m"
      - "--storage.tsdb.retention=120d"
      - "--web.max-connections=512"
      - "--query.timeout=2m"
      - "--query.max-concurrency=20"
      - "--web.console.libraries=/usr/share/prometheus/console_libraries"
      - "--web.console.templates=/usr/share/prometheus/consoles"
      - "--config.file=/etc/prometheus/prometheus.yml"

  grafana:
    image: grafana/grafana:latest
    # 容器支持自启动
    restart: always
    # 容器与宿主机 端口映射
    ports:
      - '3000:3000'
    volumes:
      - '/opt/grafana/grafana.ini:/etc/grafana/grafana.ini'
      - '/opt/grafana/data:/var/lib/grafana'
    environment:
      - TZ=Asia/Shanghai
    user: 
    # 默认密码: admin/admin
mkdir -p /opt/prometheus/{config,data}
mkdir -p /opt/grafana/data/

启动服务

docker-compose  up -d

 查看服务

docker-compose ps

停止

docker-compose down

验证:

十二、搭建harbor私有镜像仓库

DockerHub作为Docker默认官方公共镜像,官方也提供registry镜像

12.1 下载harbor离线包

https://github.com/goharbor/harbor/releases

12.2 将离线包上传到服务器,解压

tar  zxvf harbor.v2.7.3.tar.gz  /usr/local/

12.3 准备配置文件

查看代码 harbor.yml
cp harbor.yml.tmpl harbor.yml
# cat harbor.yml |egrep -v "#|^$"
hostname: harbor.zhan.com
http:
  port: 8088
https:
  port: 443
  certificate: /usr/local/harbor/harbor.zhan.com.crt
  private_key: /usr/local/harbor/harbor.zhan.com.key
harbor_admin_password: Harbor12345
database:
  password: root123
  max_idle_conns: 100
  max_open_conns: 900
  conn_max_lifetime: 5m
  conn_max_idle_time: 0
data_volume: /data
trivy:
  ignore_unfixed: false
  skip_update: false
  offline_scan: false
  security_check: vuln
  insecure: false
jobservice:
  max_job_workers: 10
notification:
  webhook_job_max_retry: 10
chart:
  absolute_url: disabled
log:
  level: info
  local:
    rotate_count: 50
    rotate_size: 200M
    location: /var/log/harbor
_version: 2.7.0
proxy:
  http_proxy:
  https_proxy:
  no_proxy:
  components:
    - core
    - jobservice
    - trivy
upload_purging:
  enabled: true
  age: 168h
  interval: 24h
  dryrun: false
cache:
  enabled: false
  expire_hours: 24

12.4 准备CA证书

生成CA证书私钥:
openssl genrsa -out ca.key 4096
生成CA证书:
openssl req -x509 -new -nodes -sha512 -days 3650 \
 -subj "/C=CN/ST=Beijing/L=Beijing/O=example/OU=Personal/CN=harbor.zhan.com" \
 -key ca.key \
 -out ca.crt
生成服务器证书:
openssl genrsa -out harbor.zhan.com.key 4096
 成证书签名请求(CSR):
openssl req -sha512 -new \
    -subj "/C=CN/ST=Beijing/L=Beijing/O=example/OU=Personal/CN=harbor.zhan.com" \
    -key harbor.zhan.com.key \
    -out harbor.zhan.com.csr
生成一个v3版x509扩展文件:
cat > v3.ext <<-EOF
authorityKeyIdentifier=keyid,issuer
basicConstraints=CA:FALSE
keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
extendedKeyUsage = serverAuth
subjectAltName = @alt_names

[alt_names]
DNS.1=harbor.zhan.com
EOF
使用该v3.ext文件为Harbor主机生成证书:
openssl x509 -req -sha512 -days 3650 \
    -extfile v3.ext \
    -CA ca.crt -CAkey ca.key -CAcreateserial \
    -in harbor.zhan.com.csr \
    -out harbor.zhan.com.crt
将证书提供给Harbor和Docker 将harbor.zhan.com.crt转化为harbor.zhan.com.cert供Docker使用,Dockr守护进程将.crt文件看成CA证书,将.cert看成客户端证书:
openssl x509 -inform PEM -in harbor.zhan.com.crt -out harbor.zhan.com.cert
在Harbor主机创建Docker证书目录并将服务器证书、密钥和CA证书复制到该目录下:
mkdir -p /etc/docker/certs.d/harbor.zhan.com/ && cp hharbor.zhan.com.cert harbor.zhan.com.key ca.crt  harbor.zhan.com.crt  /etc/docker/certs.d/harbor.zhan.com/

注意:

如果将默认的nginx端口443映射到其他端口,需创建/etc/docker/certs.d/altrialily.com:port文件夹或/etc/docker/certs.d/harbor_IP:port。

12.5 安装

sh install.sh

验证:

配置hosts

# cat /etc/hosts
192.168.1.230 master-1-230
192.168.1.231 node-1-231
192.168.1.232 node-1-232
192.168.1.233 node-1-233
192.168.1.234 node-1-234
192.168.1.234  harbor.zhan.com srmharbor.fastgroup.cn

服务器登录harbor

# docker login  -u admin -p Harbor12345  harbor.zhan.com

win 配置hosts访问:https://harbor.zhan.com/

 

十三、将镜像推送到私有仓库harbor

 13.1启动tomcat_test 容器

docker run -itd --name=tomcat_test -p 8080:8080  tomcat

验证容器服务

修改tomcat 静态文件

docker exec -it tomcat_test bash
cd webapps
mkdir ROOT
echo "hello tomcat,harbor..." >ROOT/index.html
curl http://127.0.0.1:8080

13.2 镜像打标签、并将镜像推送到harhor仓库

docker commit -a "zhan" -m "update index.html" 0bddaae96007 harbor.zhan.com/zhan/tomcat:v1

docker push harbor.zhan.com/zhan/tomcat:v1

13.3登录harbor镜像仓库验证

 

思考:

● 如何配置非安全仓库?为什么要配置非安全?

在docker的配置文件中,有一个的配置项insecure-registries,表示配置一个非安全的镜像仓库。这是不安全的做法,容易受到攻击,一般不建议这么做。

# cat  /etc/docker/daemon.json 
{
   "insecure-registries":["192.168.1.234:5000"] 
  "exec-opts": ["native.cgroupdriver=systemd"],
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "100m",
    "max-file":"1"
  },
   "registry-mirrors": ["https://1pew6xht.mirror.aliyuncs.com"],
  "storage-driver": "overlay2"
}

192.168.1.234 是非安全的镜像仓库地址。

 当启用非安全的镜像仓库时,docker运行会执行以下步骤:

  • 首先,尝试HTTPS;
  • 如果HTTPS可用,但证书无效,则忽略关于证书的错误;
  • 如果HTTPS不可用,则回到HTTP。

 重启docker使配置生效

# 重载修改过的配置文件 
systemctl daemon-reload 
# 重启docker service 
sudo systemctl restart docker.service 
# 查看docker service 状态 
systemctl status docker.service 


● 如何配置镜像仓库的自动清理?都有哪些策略

创建保留策略:

在Harbor中,您可以创建镜像保留策略,以决定哪些镜像应该被保留,而哪些应该被清理。通常,这是根据标签、项目、存储库或其他属性来制定的。要创建保留策略,请按照以下步骤进行:

a. 转到Harbor的Web界面。

b. 导航到 "项目" 页面,选择您想要设置保留策略的项目。

c. 在项目页面中,选择  "策略" 选项,然后创建一个新的保留策略。

d. 配置策略的条件,如标签、保留时间等。

e. 保存策略。

Harbor 自动清理策略:

  1. 保留最新的N个版本:此策略允许您保留仓库中的最新N个版本,而删除旧版本。这对于确保只有最新的镜像可用非常有用。

  2. 按日期保留:您可以设置策略以依据镜像的创建日期来进行清理。通常,您可以配置保留最近N天或N周的镜像,删除较旧的版本。

  3. 按标签保留:此策略允许您定义特定标签的镜像应该保留多长时间,而其他标签的镜像可以被删除。这对于按照不同用途或环境标记镜像非常有用。

  4. 按项目保留:您可以设置策略,以保留特定项目或存储库中的镜像,而删除其他项目中的镜像。

  5. 按大小保留:根据镜像占用的存储空间来进行清理。您可以设置策略以保留总存储空间不超过某个阈值,而删除超出此阈值的镜像。

标签:03,compose,harbor,基础,zhan,镜像,Docker,com,docker
From: https://www.cnblogs.com/pythonlx/p/17758331.html

相关文章

  • [AGC030F] Permutation and Minimum 题解
    PermutationandMinimum看到300的数据范围,再加上计数题,很容易就往计数DP方向去想。为方便,我们将\(n\)乘二。因为是两个位置取\(\min\),于是我们便想到从小往大把每个数填入序列。于是DP数组第一维的意义便出来了:当前已经填入了前\(i\)小个数。考虑当前填入一个数。这......
  • map 简单梳理【GO 基础】
    〇、map简介map是一种无序的基于key-value的数据结构,Go语言中的map是引用类型,必须初始化才能使用。其中键可以是任何类型,但值必须是可比较的类型(如整数、字符串、布尔值等)。一、map的定义和使用1.1map的定义map[KeyType]ValueType//KeyType:表示键的类型//Value......
  • 密码基础知识整理
    国际密钥算法AES(对称分组密码算法):高级加密标准,是一种对称分组密码算法,使用128比特、192比特或256比特的密钥长度。AES已成为最常用和最安全的对称加密算法,被广泛应用于数据加密和安全通信领域。RSA(非对称加密算法):是一种非对称加密算法,用于数字签名、密钥交换和公钥加密。RS......
  • IntelliJ IDEA 连接远程 Docker 服务端
    IntelliJIDEA连接远程Docker服务端 一、背景说明在使用IntelliJIDEA做Java项目开发时,如果需要将服务打包,根据Dockerfile生成镜像,并上传到远程Linux服务器上,并部署运行容器。可以将打好的工程jar包先上传在Linux服务器上,执行Dockerfile文件,生成镜像,然后运行......
  • ORA-02303: 无法使用类型或表的相关性来删除或取代一个类型
    在日常开发中,我们会创建Type和对应的TAB供其他数据库对象使用,如果对象引用了该Type,则对其修改(CREATEORREPLACETYPE)时会出现如下错误,ORA-02303:无法使用类型或表的相关性来删除或取代一个类型。举例:SQL>CREATEORREPLACETYPEtyp_payment_order_resultASOBJECT2(......
  • CloudEvents 基础
    CloudEvents概念CloudEvents规范最初由CNCF旗下的ServerlessWorkinggroup创建,但自v0.1之后,该规范即被提升为一个独立CNCF沙箱项目。常用于分布式系统环境,帮助用户构建松散耦合且可独立部署的分布式系统。为行业订立一个规范以提升互操作性CloudEvents事件事件包括某个实际......
  • struct 结构体【GO 基础】
    〇、前言虽然Go语言中没有“类”的概念,也不支持“类”的继承等面向对象的概念,但是可以通过结构体的内嵌,再配合接口,来实现面向对象,甚至具有更高的扩展性和灵活性。那么本文就将详细看下怎么使用结构体。一、结构体的定义和实例化Go语言中的基础数据类型可以表示一些事物的基......
  • DOCKER本地仓库
     概述随着docker的应用越来越多,安装部署越来越方便,批量自动化的镜像生成和发布都需要docker仓库的本地化应用。试用了docker的本地仓库功能,简单易上手,记录下来以备后用。环境centos:CentOS release7.0(Final)或以上版本Dockerversion24.0.6,builded223bc下载regis......
  • docker 部署.net core ,用于博主本人笔记
     安装dockerdocker部署netcore步骤1、下载最新netcore支持dockerpullmcr.microsoft.com/dotnet/core/aspnet:latest2、发布netcore项目linux环境需要在发布文件夹内创建Dockerfile,并添加如下内容--------------------------以下为dockerFile内容--------------------......
  • Backtrader - AttributeError: 'OptReturn' object has no attribute 'datas'
    1.0ErrorTraceback(mostrecentcalllast):File"D:/PycharmProjects/dbpower.backtrader.001/app/main_machine_learning.py",line191,in<module>img=cerebro.plot(style='line',plotdist=0.1,grid=True)File"D:\P......