Day05-docker-compose与私有仓库

Day05-docker-compose与私有仓库

    • 3.4 Docker Compose
      • 1)compose极速上手指南
      • 案例28-初步上手docker-compose
      • 2)compose文件的常用指令
      • 3)案例29-docker-compose部署kodexp
      • 5)小结
    • 3.5 docker镜像仓库之registry仓库
      • 1)仓库选型与概述
      • 2)环境规划
      • 3)极速上手指南
      • 4)小结
    • 3.6 docker企业级镜像仓库-harbor仓库
      • 1)环境准备
      • 2)浏览器访问
      • 3)仓库使用指南
      • 4)用户管理
      • 5)harbor高可用
      • 6)小结
    • docker尾巴

3.4 Docker Compose

  • docker镜像可以通过Dockerfile一键创建.

  • 目前问题:docker容器的管理(启动,关闭,重启),需要手动执行,如何管理多个容器

  • 单机容器编排工具

    • docker compose
  • 容器集群管理

    • ansible+docker compose+dockerfile
    • docker swarm实现集群管理.
    • mesos
    • 未来我们通过k8s kubernetes(船舵)实现集群管理.
  • 了解:docker三剑客之一:docker machine(管理虚拟机),docker compose(容器编排),docker swarm(集群)

  • docker compose需要单独安装(epel源中就有),语法yaml格式.

在这里插入图片描述

1)compose极速上手指南

yum install -y docker-compose
环境准备
mkdir -p /server/compose/01-run-nginx
docker-compose -v
docker-compose version 1.18.0, build 8dd22a9
  • 书写docker-compose

在这里插入图片描述

案例28-初步上手docker-compose

  • docker-compose默认文件名:docker-compose.yaml或docker-compose.yml
[root@docker01.oldboylinux.cn /app/docker/compose/01-ngx]# cat docker-compose.yml 
version:  "3.3"
services:
  nginx_compose:
    image: "nginx:1.22.1-alpine"
    ports:
      - "18848:80"
      
[root@docker01 01-ngx]# docker-compose up -d
Creating network "01ngx_default" with the default driver
Pulling nginx_compose (nginx:1.22.1-alpine)...
1.22.1-alpine: Pulling from library/nginx
f56be85fc22e: Pull complete
902afa68ca51: Pull complete
b0a3a88d1edf: Pull complete
51509a9feac5: Pull complete
2dcba36d07e0: Pull complete
0665eda1eb4f: Pull complete
034c69766aa3: Pull complete
Digest: sha256:8745c93f1a1c33a8ec8c82707b9bb1c8fe9ebf2b5d82e9480e78625d809855a1
Status: Downloaded newer image for nginx:1.22.1-alpine
Creating 01ngx_nginx_compose_1 ... done
[root@docker01 01-ngx]# docker-compose 
build    config   down     exec     images   logs     port     pull     restart  run      start    top      up
bundle   create   events   help     kill     pause    ps       push     rm       scale    stop     unpause  version
[root@docker01 01-ngx]# docker-compose ps
        Name                       Command               State                   Ports                 
-------------------------------------------------------------------------------------------------------
01ngx_nginx_compose_1   /docker-entrypoint.sh ngin ...   Up      0.0.0.0:18848->80/tcp,:::18848->80/tcp

在这里插入图片描述

docker-compose命令格式这个命令包含了docker container和docker image 命令。
容器
up -dup==run 创建并运行容器 启动的时候后台运行类似于docker run -d
down关闭容器,删除容器,及相关资源
stop/start/restartdocker container 关闭、开启、重启容器
ps查看容器运行情况 只有-q选项
top容器进程信息
logs容器日志
rm删除容器(需要容器已经关闭)
镜像
images查看镜像

PS:只能在对应的目录下用

  • 修改docker-compose与生效

2)compose文件的常用指令

  • 挂载数据卷

  • 容器之间的依赖,先后顺序。

depends_on: 依赖,先启动指定的容器然后再启动当前容器.
volumes: 数据卷
links: 容器连接,本质hosts解析

链接: https://docs.docker.com/compose/compose-file/compose-file-v3/

3)案例29-docker-compose部署kodexp

  • nginx

  • php

  • 配置文件

  • 代码目录

  • 书写docker run指令

docker run  -d  --name "kodexp_php" \
-v `pwd`/conf/www.conf:/usr/local/etc/php-fpm.d/www.conf \
-v `pwd`/code:/app/code/kodexp \
php:7-fpm-alpine

docker run  -d Վʔname "kodexp_nginx"  -p 10086:80 \
--link kodexp_php:php \
-v `pwd`/conf/nginx.conf:/etc/nginx/nginx.conf \
-v `pwd`/conf/kodexp.conf:/etc/nginx/conf.d/kodexp.conf \
-v `pwd`/code:/app/code/kodexp/ \
nginx:1.22.1-alpine

在这里插入图片描述

在这里插入图片描述

5)小结

  • docker build构建镜像/docker run 运行容器
  • 书写docker compose的时候,通过docker run自行测试
    • docker-compose指令:
      • 容器:
        • image
        • ports
        • links
        • depends_on
        • volumes
        • build

dockercompose指令说明
链接: https://docs.docker.com/compose/compose-file/compose-file-v3/

3.5 docker镜像仓库之registry仓库

1)仓库选型与概述

  • 应用场景:
    • 未来docker官方的镜像无法直接满足我们需求
    • 我们企业内部也要定制很多镜像
    • 而且这些镜像不想公开,都是私有的
docker镜像仓库方案应用场景与特点
镜像保存为压缩包使用的时候,sl(save/load),仅适用于节点极少的情况,很不方便
registry镜像仓库使用方便,适用于小型网站集群(镜像不多,环境不复杂),命令行操作
harbor镜像仓库企业级镜像仓库(docker,k8s)都可用,图形化页面
公有云的镜像服务在公有云上申请个人,企业

2)环境规划

主机名环境与ip地址
docker01.oldboylinux.cndocker环境 10.0.0.81/172.16.1.81
reg.oldboylinux.cnregistry环境 10.0.0.82/172.16.1.82

所有主机对应主机名能够解析

cat >>/etc/hosts<<EOF
10.0.0.81 docker01.oldboylinux.cn
10.0.0.82 docker02.oldboylinux.cn reg.oldboylinux.cn
EOF

3)极速上手指南

安,配,用

1. 下载registry #镜像仓库服务器配置
docker pull registry

2. 配置(docker服务端准许使用http) (未来所有使用私有镜像仓库的节点都要配置)
tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://o0ot3ltv.mirror.aliyuncs.com"],
  "insecure-registries": ["reg.oldboylinux.cn:5000"]
}
EOF

温馨提示: 
   注意第2行结尾的逗号.
   注意reg.oldboylinux.cn域名解析.hosts解析.
systemctl restart docker

#镜像仓库服务器
3. 使用启动registry(未来可以docker compose实现)
指定端口号5000:5000
映射随机数据卷 容器中的/var/lib/registry/
docker volume create registry
docker volume ls 
docker run -d --name "oldboy_registry" -p 5000:5000 -v registry:/var/lib/registry \
--restart=always registry:latest
--restart表示容器异常退出,会自动重启容器.

查看私有仓库镜像信息
http://reg.oldboylinux.cn:5000/v2/_catalog/  #默认没有有用信息
[root@docker02 ~]# curl -L 10.0.0.82:5000/v2/_catalog
{"repositories":[]}

在这里插入图片描述

  • 把镜像上传到私有仓库registry中
4. (上传镜像到私有仓库全流程)
tag 给镜像打上标签(地址/路径/名字:版本)
push 镜像 上传镜像到私有仓库
#打标签
docker tag mysql:5.7-debian reg.oldboylinux.cn:5000/oldboyedu/mysql:5.7-debian
[root@docker01 ~]# docker tag mariadb:latest reg.oldboylinux.cn:5000/oldboyedu/db:mariadb_latest
#推送到私有仓库
docker push reg.oldboylinux.cn:5000/oldboyedu/mysql:5.7-debian
[root@docker01 ~]# docker push reg.oldboylinux.cn:5000/oldboyedu/db:mariadb_latest 
The push refers to repository [reg.oldboylinux.cn:5000/oldboyedu/db]
c359e781d90a: Pushed 
f95954e05332: Pushed 
060b534c4abd: Pushed 
672465781193: Pushed 
6c649bbdd7d6: Pushed 
286a90349ea9: Pushed 
eb3b55e3972c: Pushed 
8f2689356f7c: Pushed 
657a7983a5d3: Pushed 
9f54eef41275: Pushed 
mariadb_latest: digest: sha256:528cfe83d93caba437e75039b606a4637dd5c724c6a25d7c7b64ec2e9eb11303 size: 2412
  • 查看打上标签后的镜像的信息
[root@docker01 ~]# docker images|grep 5000
reg.oldboylinux.cn:5000/oldboyedu/db   mariadb_latest      e2278f24ac88   2 years ago     410MB
[root@docker02 ~]# curl -L 10.0.0.82:5000/v2/_catalog
{"repositories":["oldboyedu/db"]}

在这里插入图片描述

在这里插入图片描述

docker01 
docker pull reg.oldboylinux.cn:5000/oldboyedu/mysql:5.7-debian
docker images |grep reg

4)小结

  • 实现registry镜像私有仓库即可.
  • 补充: -v 随机挂载容器中的/data/registry/:/var/lib/registry/目录.
  • 自己把启动registry写成docker compose
docker volume create registry 
docker run -d --name "oldboy_registry" -p 5000:5000 -v registry:/var/lib/registry \
--restart=always registry:latest

#registry-docker-compose 
version: "3.3"
services:
  oldboy_registry:
     container_name: "oldboy_reg"
     image: "registry:latest"
     ports:
       - "5000:5000"
     restart: always
     volumes:
       - "registry:/var/lib/registry"
volumes:
  registry:

[root@docker01 04_registry]# docker-compose ps
   Name                 Command               State                    Ports                  
----------------------------------------------------------------------------------------------
oldboy_reg   /entrypoint.sh /etc/docker ...   Up      0.0.0.0:5000->5000/tcp,:::5000->5000/tcp
[root@docker01 04_registry]# docker volume ls
DRIVER    VOLUME NAME
local     04registry_registry
local     oldboy_data
[root@docker01 04_registry]# docker ps
CONTAINER ID   IMAGE             COMMAND                   CREATED          STATUS          PORTS                                       NAMES
b6051560376e   registry:latest   "/entrypoint.sh /etc…"   55 seconds ago   Up 53 seconds   0.0.0.0:5000->5000/tcp, :::5000->5000/tcp   oldboy_reg

3.6 docker企业级镜像仓库-harbor仓库

1)环境准备

2C4G(1C2G)

tar xf harbor-offline-installer-v2.3.1.tgz -C /app/tools/
#目录结构
common.sh
harbor.v2.3.1.tar.gz
harbor.yml.tmpl  #临时配置文件 正式配置文件 叫harbor.yml 
install.sh       #每次修改配置 需要执行下
LICENSE
prepare
  • 配置文件
cat >>/etc/hosts<<EOF
10.0.0.81 docker01.oldboylinux.cn
10.0.0.82 docker02.oldboylinux.cn reg.oldboylinux.cn harbor.oldboylinux.cn
EOF
  • 准备配置文件
cp harbor.yml.tmpl harbor.yml
  • 修改域名部分
hostname: harbor.oldboylinux.cn
  • 禁用https功能
注释掉了 https相关的内容
#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
  • 修改了harbor仓库的默认的密码
harbor_admin_password: admin

在这里插入图片描述

  • 进行安装
./install.sh  
#注意要检查80是否被占用
提示successfully
? ----Harbor has been installed and started 
successfully.----
成功
需要安装docker和docker-compose
[root@docker02 harbor]# docker-compose ps
      Name                     Command               State                  Ports                
-------------------------------------------------------------------------------------------------
harbor-core         /harbor/entrypoint.sh            Up                                          
harbor-db           /docker-entrypoint.sh 96 13      Up                                          
harbor-jobservice   /harbor/entrypoint.sh            Up                                          
harbor-log          /bin/sh -c /usr/local/bin/ ...   Up      127.0.0.1:1514->10514/tcp           
harbor-portal       nginx -g daemon off;             Up                                          
nginx               nginx -g daemon off;             Up      0.0.0.0:80->8080/tcp,:::80->8080/tcp
redis               redis-server /etc/redis.conf     Up                                          
registry            /home/harbor/entrypoint.sh       Up                                          
registryctl         /home/harbor/start.sh            Up       

2)浏览器访问

在这里插入图片描述

  • 输入用户名admin,密码admin进入harbor仓库

在这里插入图片描述

3)仓库使用指南

[root@docker01 04_registry]# cat /etc/docker/daemon.json
{
  "registry-mirrors": ["https://o0ot3ltv.mirror.aliyuncs.com"],
  "insecure-registries": ["harbor.oldboylinux.cn"]
}
 docker login -uadmin -padmin harbor.oldboylinux.cn 
 
[root@docker01 04_registry]#  docker login -uadmin -padmin harbor.oldboylinux.cn
WARNING! Using --password via the CLI is insecure. Use --password-stdin.
Error response from daemon: Get "https://harbor.oldboylinux.cn/v2/": dial tcp 10.0.0.82:443: connect: connection refused
[root@docker01 04_registry]# systemctl restart docker
[root@docker02 harbor]# systemctl restart docker
[root@docker02 harbor]# docker-compose up -d
harbor-log is up-to-date
registryctl is up-to-date
registry is up-to-date
Starting harbor-portal ... 
Starting redis ... 
Starting harbor-db ... done
harbor-core is up-to-date
harbor-jobservice is up-to-date
nginx is up-to-date

[root@docker01 04_registry]#  docker login -uadmin -padmin harbor.oldboylinux.cn
WARNING! Using --password via the CLI is insecure. Use --password-stdin.
WARNING! Your password will be stored unencrypted in /root/.docker/config.json.
Configure a credential helper to remove this warning. See
https://docs.docker.com/engine/reference/commandline/login/#credentials-store

Login Succeeded

 docker tag oldboy_web:tengine_2.3.3-v2 harbor.oldboylinux.cn/library/tengine:2.3.3_v2
 docker push harbor.oldboylinux.cn/library/tengine:2.3.3_v2
 
[root@docker01 ~]# docker tag centos:latest harbor.oldboylinux.cn/library/centos:latest
[root@docker01 ~]# docker push harbor.oldboylinux.cn/library/centos:latest 
The push refers to repository [harbor.oldboylinux.cn/library/centos]
74ddd0ec08fa: Pushed 
latest: digest: sha256:a1801b843b1bfaf77c501e7a6d3f709401a1e0c83863037fa3aab063a7fdb9dc size: 529

在这里插入图片描述

4)用户管理

系统管理里面创建用户
项目管理中成员关联用户

5)harbor高可用

可以通过harbor自带的镜像同步工具实现.(搭建2个harbor服务器)

找出harbor的镜像目录(registry目录),目录备份/同步

/data/registry/docker/registry/v2/repositories

6)小结

通过脚本/配置一键搭建即可.
简单使用与用户管理即可.
安全:https,避免公网访问.

docker尾巴

  • docker不同的网络模式
  • docker底层原理 namespace,cgroups,文件系统

链接: https://www.processon.com/view/link/6347dbb207912921d8137498

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/571858.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Qt中常用对话框

Qt中的对话框&#xff08;QDialog&#xff09;是用户交互的重要组件&#xff0c;用于向用户提供特定的信息、请求输入、或进行决策。Qt提供了多种标准对话框以及用于自定义对话框的类。以下将详细介绍几种常用对话框的基本使用、使用技巧以及注意事项&#xff0c;并附带C示例代…

SV-7041T IP网络有源音箱 教室广播多媒体音箱(带本地扩音功能)教学广播音箱 办公室背景音乐广播音箱 2.0声道壁挂式网络有源音箱

SV-7041T IP网络有源音箱 教室广播多媒体音箱&#xff08;带本地扩音功能&#xff09; 教学广播音箱 办公室背景音乐广播音箱 一、描述 SV-7041T是深圳锐科达电子有限公司的一款2.0声道壁挂式网络有源音箱&#xff0c;具有10/100M以太网接口&#xff0c;可将网络音源通过自带…

学习指导|在改变

备忘在这里啦。潦草本草

黑马微服务课程2

课程地址&#xff1a;2024最新SpringCloud微服务开发与实战&#xff0c;java黑马商城项目微服务实战开发&#xff08;涵盖MybatisPlus、Docker、MQ、ES、Redis高级等&#xff09;_哔哩哔哩_bilibili 课程名称&#xff1a;2024最新SpringCloud微服务开发与实战&#xff0c;java…

【1429】招生管理管理系统Myeclipse开发mysql数据库web结构java编程计算机网页项目

一、源码特点 java 招生管理系统是一套完善的java web信息管理系统&#xff0c;对理解JSP java编程开发语言有帮助&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用B/S模式开发。开发环境为 TOMCAT7.0,Myeclipse8.5开发&#xff0c;数据库为Mysql5.0&…

android脱壳:一种使用native进行抽取壳脱壳的方法,native版本的frida-fart

前言 写rxposed的时候&#xff0c;搞了很多模块&#xff0c;其中有一个远程调用脱壳的&#xff0c;但是当时使用的是rmi远程调用&#xff0c;因为一些问题无法使用&#xff0c;可能是对抗问题&#xff0c;也有可能是技术问题&#xff0c;所以我又换了一种远程调用方式。 概述…

21-22 - 线性表的链式存储结构 单链表的具体实现

---- 整理自狄泰软件唐佐林老师课程 文章目录 1. 线性表的链式存储结构1.1 定义1.2 逻辑结构1.3 专业术语的统一 2. 链表的基本概念2.1 单链表中的结点定义2.2 单链表中的内部结构2.3 在目标位置处插入数据元素2.4 在目标位置处删除数据元素 3. 链式存储结构线性表的实现3.1 设…

排列对称串

Description:很多字串&#xff0c;有些是对称的&#xff0c;有些是不对称的&#xff0c;请将那些对称的字事按从小到大的顺序输出&#xff0c;字事先以长度论大小&#xff0c;如果长度相同&#xff0c;再以ASCI码值为大小标准 Input.输入数据中含有一些字串(1≤串长≤256)。 #…

linux文件句柄数满,linux文件句柄数超出系统限制怎么办?

1、问题阐述&#xff1a; too many open files&#xff1a;顾名思义即打开过多文件数。 不过这里的files不单是文件的意思&#xff0c;也包括打开的通讯链接(比如socket)&#xff0c;正在监听的端口等等&#xff0c;所以有时候也可以叫做句柄(handle)&#xff0c;这个错误通常…

Rust腐蚀服务器搭建架设教程ubuntu系统

Rust腐蚀服务器搭建架设教程ubuntu系统 大家好我是艾西一个做服务器租用的网络架构师。Rust腐蚀游戏对于服务器的配置有一定的要求很多小伙伴就思考用linux系统搭建的话占用会不会小一点&#xff0c;有一定电脑基础的小伙伴都知道Linux系统和windows系统相比较linux因为是面板…

coreldraw2024精简版绿色版安装包免费下载

CorelDRAW 2024是一款矢量图形设计软件&#xff0c;于2024年3月5日正式在全球范围内发布。这款软件在多个方面进行了更新和改进&#xff0c;为用户提供了更多高效、灵活和便捷的设计工具。 首先&#xff0c;CorelDRAW 2024新增了绘画笔刷功能&#xff0c;这些笔刷不仅模拟了传…

算法学习001-圆桌问题 中小学算法思维学习 信奥算法解析 c++实现

目录 算法学习001-圆桌问题 一、题目要求 1、编程实现 2、输入输出 二、算法分析 三、程序编写 四、程序说明 五、运行结果 六、考点分析 七、推荐资料 算法学习001-圆桌问题 一、题目要求 1、编程实现 圆桌边围坐着2n个人&#xff0c;其中n个人是好人&#xff0c…

【199.二叉树的右视图】_二叉树_day01

1 题目描述 给定一个二叉树的 根节点 root&#xff0c;想象自己站在它的右侧&#xff0c;按照从顶部到底部的顺序&#xff0c;返回从右侧所能看到的节点值。199.二叉树的右视图 2 解题思路 此题是二叉树层序遍历的拓展。 创建一个队列que (Queue)起到中介的作用&#xff0c…

Atom-7B-Chat本地推理

Atom-7B-Chat 本地推理 基础环境信息&#xff08;wsl2安装Ubuntu22.04 miniconda&#xff09; 使用miniconda搭建环境 (base) :~$ conda create --name Llama-Chinese python3.10 Retrieving notices: ...working... done Channels:- defaults Platform: linux-64 Collectin…

RealSenseSR300工程环境配置说明

新建目录结构如下&#xff1a; output:存储可执行文件.exe等src:存储源码.cpp .h等3rdparty:存储第三方库 opencv等 其中将源码按照main及其相关文件分为以下三类 vs2015许可证到期后先激活&#xff0c;激活码很多网上有&#xff0c;如&#xff1a;HMGNV-WCYXV-X7G9W-YCX63…

企业微信hook接口协议,根据手机号搜索联系人

根据手机号搜索联系人 参数名必选类型说明uuid是String每个实例的唯一标识&#xff0c;根据uuid操作具体企业微信 请求示例 {"uuid":"3240fde0-45e2-48c0-90e8-cb098d0ebe43","phoneNumber":"1357xxxx" } 返回示例 {"data&q…

【SQL代理中转注入】对DVWA登录界面username字段实施注入

一、实验过程 步骤0&#xff1a;注释掉相关username防护&#xff0c;截图如下&#xff1a; 以DVWA为攻击目标&#xff0c;将login.php中第21、22行注释掉 步骤1&#xff1a;源码分析&#xff0c;截图如下&#xff1a; 如此可知&#xff0c;首先需要通过token验证&#xff0c;然…

Matlab|含多微网租赁共享储能的配电网博弈优化调度

目录 主要内容 结果一览 下载链接 主要内容 首先利用NSGA-II算法求解三个微网的最优充放电策略并做为已知条件代入到双层调度模型中&#xff1b;然后求解双层模型&#xff0c;上层为主动配电网调度模型&#xff0c;下层包括共享储能优化模型和多微网优化调度模型&a…

【Camera KMD ISP SubSystem笔记】CAM SYNC与DRQ①

在android系统中fence用于不同模块需要访问同一块buffer的同步&#xff0c;例如camera和graphic。对于preview buffer, camera是生产者graphic是消费者。 camera需要生产图像数据到preview buffer时需要等待preview buffer的 fence可用。 camera sync是高通camx框架里面用于各个…

SpringBoot学习之Redis下载安装启动【Windows版本】(三十六)

一、下载Redis for Windows Redis 官方网站没有提供 Windows 版的安装包,但可以通过 GitHub 来下载安装包,下载地址:https://github.com/tporadowski/redis/releases 1、网站提供了安装包和免安装版本,这里我们直接选择下面的免安装版本 2、下载后的压缩包解压以后,如下…