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命令查看网卡,即可看到宿主机的网卡配置

C ontainer模式

复制代码
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 C ompose工具

1.Docker C ompose

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

在浏览器刷新

下载镜像

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

相关推荐
柏成2 分钟前
写给前端仔仔的docker实战
前端·docker·面试
czhc114007566331 分钟前
LINUX 820 shell:shift,expect
linux·运维·excel
咕噜签名分发冰淇淋1 小时前
签名应用APP分发平台的微服务化部署是什么?其有哪些优势?
java·运维·微服务
望获linux1 小时前
【实时Linux实战系列】基于实时Linux的物联网系统设计
linux·运维·服务器·chrome·php
进击的阿尔法猿2 小时前
docker
运维·docker·容器
北京阿法龙科技有限公司2 小时前
AR 虚实叠加技术在工业设备运维中的实现流程方案
运维·ar
刘一说2 小时前
CentOS 系统 Java 开发测试环境搭建手册
java·linux·运维·服务器·centos
iceland93 小时前
kubeadm方式部署k8s集群
云原生·容器·kubernetes
木易双人青9 小时前
01-Docker-简介、安装与使用
运维·docker·容器
专注API从业者10 小时前
Python + 淘宝 API 开发:自动化采集商品数据的完整流程
大数据·运维·前端·数据挖掘·自动化