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

在浏览器刷新

下载镜像

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

相关推荐
weixin_464838155 分钟前
grep命令如何实现正则表达式搜索?
linux·运维·服务器·网络安全·系统架构
岳轩子24 分钟前
linux安装jdk
java·linux·运维
我命由我123451 小时前
ADB 之 logcat 极简小抄(过滤日志、保存日志到文件)
android·运维·adb·android studio·安卓·运维开发·android-studio
迷茫运维路1 小时前
mysql5.7常用操作命令手册
运维·数据库
.生产的驴1 小时前
Docker 消息队列RabbitMQ 安装延迟消息插件
运维·spring boot·后端·docker·容器·rabbitmq·java-rabbitmq
霸道流氓气质1 小时前
CentOS上使用Mosquitto实现Mqtt主题消息发布和订阅mqtt主题消息连同时间戳记录到文件
linux·运维·mqtt·centos·mosquitto
高危型1 小时前
CentOS 入门
linux·运维·centos
桃花岛主702 小时前
Nginx搭建直播服务器,并用rtmp,http-flv,hls三种模式拉流观看直播的流程
运维·服务器·nginx
醉卧雕龙舫 、2 小时前
Linux中安装maven
linux·运维·maven
爱吃香蕉的阿豪2 小时前
828华为云征文|Flexus X实例Docker+Jenkins+gitee实现CI/CD自动化部署-解放你的双手~
ci/cd·docker·gitee·华为云·jenkins