当前位置: 首页 > article >正文

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

查看当前网络

docker network ls

 创建网络

docker network create -d bridge my-net

#my-net 为名字 
# bridge  为类型

使用bridge进行网络之间的通信

        1.创建一个容器

docker run -itd --rm --name busybox1 --network my-net busybox sh -c 'while true;do echo hello;done'

        2.在启动一个容器,加到同一个网络里

docker run -itd --rm --name busybox2 --network my-net busybox sh -c 'while true;do echo hello;done'
docker run -it --rm --name busybox2 --network my-net busybox sh

                可以通信

host模式       

3.启动一个docker容器与宿主机通信

docker run -tid --net=host --name docker_host1 busybox

docker exec -it docker_host1 sh

        在使用ifconfig命令查看网卡,即可看到宿主机的网卡配置

Container模式

        

docker run -tid --name host1 busybox
# 创建host2容器共享host1容器的网络
docker run -itd --net=container:host1 --name host2 busybox

# 查看host2容器的网络,确认和host1容器的网络一致

None模式

docker run -itd --net=none --name none01 busybox sh
docker exec -it none01 sh

#在使用ifconfig命令,查看不到网卡信息

 

 Docker重启策略

        Docker容器的重启策略如下:

                no,默认策略,在容器退出时不重启容器

                on-failure,在容器非正常退出时(退出状态非0),才会重启容器

                on-failure:3,指定启动的次数,在容器非正常退出时重启容器,最多重启3次

                always,在容器退出时总是重启容器

                unless-stopped,在容器退出时总是重启容器,但是不考虑在Docker守护进程启动时就已经停止了的容器

        Docker容器的常见退出状态码

状态码

说明

0

正常退出

125

Docker守护进程本身错误

126

容器启动后,要执行的默认命令无法调用

127

容器启动后,要执行的默认命令不存在

其他

容器启动后正常执行的命令返回的状态码

Docker Compose工具

        1.Docker Compose

        1.安装

                上传文件(docker-compose,lnmp_fenli.tar.gz)

chmod +x docker-compose
mv docker-compose /usr/bin/
docker-compose -v
tar zxf lnmp_fenli.tar.gz
cd lnmp

                启动docker Compose

                        修改nginx的yum源

cd nginx/
vi Dockerfile
# 基础镜像
FROM centos:7.6.1810

# 配置nginx的yum源
RUN curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
RUN curl -o /etc/yum.repos.d/epel.repo https://mirrors.aliyun.com/repo/epel-7.repo

RUN yum -y install nginx
# 初始化RPM数据库并安装nginx
ADD nginx.conf /etc/nginx/

CMD ["nginx","-g","daemon off;"]

                        修改php的yum源

cd ../
cd php/
vi Doecker
FROM centos:7.6.1810
RUN curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
RUN yum -y install php php-fpm php-mysql && \
rm -rf /etc/php-fpm.d/www.conf && \
mkdir /data

ADD www.conf /etc/php-fpm.d/
ADD index.php /data/

EXPOSE 9000

CMD ["/usr/sbin/php-fpm"]

                        启动

cd ../


#前台启动
#docker-compose up
#后台启动
docker-compose up -d

        常规使用方式

#重新构建运行
docker-compose up --build -d
#关闭指定容器 docker-compose stop <容器名称>
docker-compose stop nginx
#关闭所有
docker-compose stop

#启动指定容器 docker-compose start <容器名称>
docker-compose start nginx
# 全部启动
docker-compose start

#重启启动指定容器 docker-compose restart <容器名称>
docker-compose restart nginx

#全部重启 
docker-compose restart
#删除所有
docker-compose down

Harbor私有仓库

        Harbor

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

        优势    

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

                基于镜像的复制策略: 镜像可以在多个 Harbor 实例之间进行复制(同步),适用于负载平衡、高可用性、多数据中心、混合和多云场景。

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

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

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

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

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

        构成

                poxy:Harbor 的 Registry、UI、Token 等服务通过一个前置的反向代理统一接收浏览器和 Docker 客户端的请求,并将请求转发给后端不同的服务
                Registry:负责储存 Docker 镜像,并处理 Docker push/pull 命令。由于要对用户进行访问控制,即 不同用户对 Docker image 有不同的读写权限,Registry 会指向一个 Token 服务,强制用户的 每次 Docker pull/push 请求都要携带一个合法的 Token,Registry 会通过公钥对 Token 进行解 密验证。
                Core service:

                        这是 Harbor 的核心功能,主要提供以下服务:

                            UI(Harbor-ui):提供图形化界面,帮助用户管理 Registry 上的镜像(image), 并对 用户进行授权。

                                  Webhook: 为 了 及 时 获 取 Registry 上 image 状 态 变 化 的 情 况 , 在 Registry 上 配 置 Webhook, 把状态变化传递给 UI 模块。

                                    Token 服务:负责根据用户权限给每个 Docker push/pull 命令签发 Token。Docker 客 户端向 Registry 服务发起的请求,如果不包含 Token,会被重定向,获得 Token 后再 重新向 Registry 进行请求

                database:为 coreservices 提供数据库服务,负责储存用户权限、审计日志、Docker image 分组信 息等数据
                Log collector:为了帮助监控 Harbor 运行,负责收集其他组件的log,供日后进行分析

部署Harbor私有仓库

操作系统

主机名

配置

IP

CentOS7.3.1611

harbor

2C4G

192.168.27.152

CentOS7.3.1611

client

2C4G

192.168.27.153

        1.基础环境 

                关闭防火墙

systemctl stop firewalld

systemctl disable firewalld

​​​​​​​​​​​​​​        ​​​​​​​        关闭selinux

setenforce 0

sed -i "s/.*SELINUX=.*/SELINUX=disabled/g" /etc/selinux/config

        2.部署安装

                1.上传

                

                3.编译配置文件

cd /usr/local/harbor/
cp harbor.yml.tmpl harbor.yml
vi harbor.yml

                 4.执行安装

./prepare
./install.sh

                5.在开启一台终端安装docker充当客户端

#上传包docker-ce-24.0.7.rpm.tar.gz
tar zxf docker-ce-24.0.7.rpm.tar.gz
cd docker-ce-24.0.7.rpm
yum -y localinstall *

                6.在浏览器搜索配置harbor机器的IP,进行使用

                        1.创建项目

                                在第二台机器

systemctl start docker
#下载个镜像,进行配送
docker pull busybox

#编写个文件
vi /etc/docker/daemon.json

#编写配置
{
    "registry-mirrors": ["https://r9xxm8z8.mirror.aliyuncs.com"],
    "insecure-registries":["192.168.27.152"]
}

                         启用配置

systemctl daemon-reload
systemctl restart docker

                         测试连接镜像仓库

docker login -uadmin -pHarbor12345 http://192.168.27.152

                        上传镜像 

docker tag busybox:latest 192.168.27.152/kgc/busybox:test01

docker push 192.168.27.152/kgc/busybox:test01

                        在浏览器刷新

                                下载镜像

                         点击即可自动获取下载的镜像的命令


http://www.kler.cn/a/301793.html

相关文章:

  • 智能化运维与AI/ML辅助决策:实现自动化与预测优化
  • LSTM(长短期记忆网络)详解
  • 当微软windows的记事本被AI加持
  • 【计算机网络】TCP网络特点2
  • 密码学在网络安全中的应用
  • AlphaFold3中文使用说明
  • 10分钟在企业微信中集成一个 AI 助手
  • 汽车EDI:montaplast EDI对接
  • XWiki中添加 html 二次编辑失效
  • C# WinForm:禁用Panel容器滚动条自动移动位置的功能
  • leetcode 刷题周报(9.3-9.10)
  • java框架第五课(终极版本)SpringBoot
  • QT 中使用QXlsx 读写文件
  • Linux学习-Docker文件系统
  • 3. 轴指令(omron 机器自动化控制器)——>MC_PowerMC_MoveJog
  • mysql的zip解压缩版安装
  • MySQL根据日期统计时没有数据的日期也需要返回0
  • 图计算:基于SparkGrpahX计算聚类系数
  • 在Linux系统中“普通场景”下隐匿操作痕迹
  • 算法学习攻略总结 : 入门至进阶,通关之路指南
  • jmeter依赖jar包找不到类路径
  • CTF(misc)
  • 微调语言模型前,需要考虑这三个关键方面
  • pwn题目搭建过程中glibc出现问题的解决方案
  • 计算机视觉学习路线
  • 获取STM32 MCU的唯一ID