实习三十九:harbor私有仓库管理

一、harbor私有仓库管理

是python的包管理工具,和yum对redhat的关系是一样的

yum -y install epel-release

yum -y install python2-pip

pip install --upgrade pip

pip list pip 8x

pip install --upgrade pip

pip install --upgrade pip==20.3 -i https://mirrors.aliyun.com/pypi/simple

pip list

pip install docker-compose --ignore-installed requests -i https://mirrors.aliyun.com/pypi/simple

source docker.sh

上传harbor-offline-installer-v2.11.1.tgz包

tar -zxvf harbor-offline-installer-v2.11.1.tgz

[root@docker-1 ~]# ls

anaconda-ks.cfg docker.sh harbor harbor-offline-installer-v2.11.1.tgz

[root@docker-1 ~]# cd harbor

[root@docker-1 harbor]# ls

common.sh harbor.v2.11.1.tar.gz harbor.yml.tmpl install.sh LICENSE prepare

cp harbor.yml.tmpl harbor.yml

修改harbor的配置文件(harbor.yml)但是解压后的目录中只有harbor.yml.tmpl,所以复制他,改名

vim harbor.yml

5 hostname: 192.168.1.51(本虚拟机的IP地址)

13 #https:

14 # https port for harbor, default is 443

15 # port: 443

16 # The path of cert and key files for nginx

17 #certificate: /your/certificate/path

18 #private_key: /your/private/key/path

19 # enable strong ssl ciphers (default: false)

20 # strong_ssl_ciphers: false

(https的所有内容全部注释)

47 harbor_admin_password: Harbor12345(查看密码)

为了正常启动harbor,进行一下操作

vim /etc/docker/daemon.json

{

"registry-mirrors": [

"https://do.nark.eu.org",

"https://dc.j8.work",

"https://docker.m.daocloud.io",

"https://dockerproxy.com",

"https://docker.mirrors.ustc.edu.cn",

"https://docker.nju.edu.cn"

],

"hosts": [

"tcp://0.0.0.0:2375",

"unix:///var/run/docker.sock"

],

"insecure-registries":[

"http://192.168.1.11"

]

}

vim /usr/lib/systemd/system/docker.service

13 ExecStart=/usr/bin/dockerd

systemctl daemon-reload

systemctl start docker

./prepare

netstat -lnput|grep 5000

netstat -lnput|grep 80

systemctl stop firewalld

./install.sh

docker pull centos

docker tag centos:latest 192.168.1.51/centos:latest

docker push 192.168.1.51/centos:latest

docker ps --all #查看状态是否健康

docker-compose start #启动

docker login http://192.168.1.51

docker tag 192.168.1.51/centos:latest 192.168.1.51/library/centos:v0 #给镜像打标记

docker push 192.168.1.51/library/centos:v0 #推送镜像到达项目

总结:

1、由于要使用python环境运行docker-compose,所以需要验证python

python --version

2、安装pip(python的包管理工具)【需要使用pip下载安装docker-compose】

yum -y install python2-pip

3、pip版本太低

pip install --upgrade pip==20.3 -i https://mirrors.aliyun.com/pypi/simple

4、下载安装docker-compose

pip install docker-compose --ignore-installed requests -i https://mirrors.aliyun.com/pypi/simple

5、上传harbor文件,解压

6、配置文件,本来有一个配置harbor.yml.tmpl

cp harbor.yml.tmpl harbor.yml

(修改harbor的配置文件(harbor.yml)但是解压后的目录中只有harbor.yml.tmpl,所以复制他,改名)

vim harbor.yml

5 hostname: 192.168.1.51(本虚拟机的IP地址)

13 #https:

14 # https port for harbor, default is 443

15 # port: 443

16 # The path of cert and key files for nginx

17 #certificate: /your/certificate/path

18 #private_key: /your/private/key/path

19 # enable strong ssl ciphers (default: false)

20 # strong_ssl_ciphers: false

(注释掉https安全网站的配置)

47 harbor_admin_password: Harbor12345(查看密码)

7、 source docker,配置镜像,启动docker

8、./prepare 检察环境,下载镜像

9、./install.sh

10、docker ps --all

11、在远程主机访问80端口

12、登陆,查看项目

13、上传

(1)登录

docker login http://192.168.1.51

(2)上传

#打标签

docker tag 192.168.1.51/centos:latest 192.168.1.51/library/centos:v0

docker push 192.168.1.51/library/centos:v0

14、查看上传的内容

15、复制链接下载

16、制的下载链接,添加同时共享的镜像在其他docker主机上配置daemon仓库,启动docker,使用复

二、Docker-compose容器编排

cd projectdir

docker-compose start

docker-compose down

docker-compose stop

1、定义

1.docker compose 是 docker 官方的开源项目,负责实现对docker 容器集群的快速编排(容器,依赖,网络,挂载。)

2.compose 是 docker 公司推出的一个工具软件,可以管理多个docker 容器组成的应用

3.需要定义一个 YAML 格式的配置文件 docker-compose.yml,写好多个容器之间的调用关系

4.使用 compose 的步骤

(1)使用 Dockerfile 定义各个微服务应用并构建出对应的镜像文件Dockerfile 的使用,以便可以在任何地方复制。

(2)使用 docker-compose.ym! 义一个完整的业务单元,安排好整体应用中的各个容器服务。

(3)最后,执行 docker-compose up 命令来启动并运行整个应用程序,完成一键部署

2、产生背景

(1)使用 Dockertile 定义镜像文件,再于动构建、运行容器等操作,而微服务架构一般包含若干个微服务,且每个微服务一般都会部署多个实例,所以,若每个微服务都需要手动启停,那么维护量会非常庞大,并且工作效率也会很低。

(2)而 compose 是用于定义和运行多容器 docker 应用程序的工具。通过 compose,可以使用 YML 文件来配置应用程序需要d的所有服务。

(3)仅需使用一个命令,就可以从 YML 文件配置中创建并启动所有服务。

(4)Compose 可以基于 Compose 文件帮我们快速的部署分布式应用,无需手动一个个创建和运行容器。

(5)Compose 文件是一个文本文件,通过指令定义集群中的每个容器如何运行。

3、核心概念

Docker-compose 将管理的容器分为三层:工程(project)服务(service)、容器(container)

(1)工程:运行 compose 的目录下所有的文件,包括 docker-compose.yml、extends 文件、环境变量文件等组成一个工程若无特殊指定工程,工程名即为当前目录名。工程的默认配置文件为 docker-compose.yml,可通过环境变量COMPOSE FILE 或 -f参数自定义配置文件,其定义了多个有依赖关系的服务及每个服务运行的容器

(2)服务:一个工程中包含多个服务,每个服务中定义了容器运行的镜像、参数、依赖等。一个服务中可包括多个容器实例。

(3)容器:被 docker-compose 管理或部署的容器集群,调用docker 服务提供的 API来对容器进行管理,只要操作的平台支持 docker API,即可在其上进行 compose 的容器编排。

4、YAML文件的格式和语法

1.YAML 文件格式

(1)yaml 是一种标记语言很直观的数据序列化格式,可读性很高:类似于 xml 描述性语言,语法比xml简单的很多。

(2)yaml 数据结构通过缩进进行表示,连续的项目通过减号来表示,键值对用冒号分隔,数组用中括号括起来,hash用花括号括起来。

(3)yaml 文件的基本格式由一系列键值对构成。每个键值对都用冒号": "分隔 (冒号后面有个空格)

key: value

(1)在 yaml 中,键和值之间只需要一个空格,这是为了保证 yaml文件的可读性和一致性

(2)对于字符串值,可以使用单引号或者双信号将其括起来,这样可以避免出现特殊字符或空格等问题

name: 'Meng Mr'

age: "34"

如果值包含特殊字符(如冒号或短横线)则应该使用引号将其括起来

description: "This is a YAML file: good for configuationfiles."

2、YAML注意事项

1.不支持制表符 tab 键缩进,需要使用空格缩进。

2.通常开头缩进 2个空格。

3.字符后缩进1个空格,如:冒号,逗号,横杠。

4.用 # 表示注释。

5.如果包含特殊字符用单引号引起来。

6.布尔值(true、false、yes、no、on、off)必须使用""引号括起来,这样分析器会将它们解释为字符串。

5、Docker-compose安装

6、命令解析

version

指定了Docker compose编排文件的版本

Docker Compose 目前有三个版本,分别为 Version1、Version2和Version3

Version1 是较早的版本,它将来会被弃用。

Vemsion2 是目前的稳定版本,支持更多的指令。

Version3 在功能上与 Version2 类似,但进行了一些改进和扩展,例如增加了对 Docker BuildKit 的支持,可以加速构建过程。

service

指定了在 docker compose 编排中要运行的服务,每个服务都有一个名称,并指定要使用的镜像和容器的配置选项。

services:

mysql:#服务名

再往下可以对该服务进行定义,比如指定映射端口,指定使用的镜像等,但要注意缩进格式。

image

指定要使用的 docker 镜像。

services:

mysql: # 服务名

image:mysql:5.5

#指定mysql镜像,如果主机内不存在该镜像,会从登录的docker镜像仓库内拉取,一般都是从dockerhub上拉取

build

允许在 docker compose 编排中指定 dockerfile 的位置。

services:

mysql: # 服务名

build: /docker/mysql

#这里为用户微服务文件夹里面存放的是该服务代码jar包和Dockerfile文件

environment

services:

mysql: # 服务名

environment:

#下面是MySOL环境变量的例子

MYSOL_ROOT_PASSWORD:000000

设置MySQL的root用户的密码

MYSOL_DATABASE: database

#指定要创建的数据库名称

MYSOL_USER: user

指定要创建的MySQL用户名

MYSOL_PASSWORD:

指定要创建的MySQL用户的密码

volumes

挂载宿主机路径或命名卷

(1)指定路径挂载

services:

mysql: #服务名

volumes :

  • ./mysql/data:/var/lib/mysq #直接指定路径挂载

(2)⽣成 volume 卷挂载

docker volume create mysql # ⽣成名为mysql的volume卷

vim docker-compose.yml

services:

mysql: # 服务名

volumes:

  • mysql:/var/lib/mysq # 指定volume卷挂载

(3)共享⽬录挂载

vim docker-compose.yml

version: '2' # 使⽤共享⽬录挂载只有'2'版本⽀持

service:

mysql: # 服务名

volumes:

  • /var/lib/mysql # 将这个⽬录作为共享⽬录

nginx:

volumes:

  • /usr/local/nginx/html

php:

volumes_from: # 共享⽬录来⾃

  • mysql # 挂载的共享⽬录,挂载后会在容器内⽣成与被挂载的⽬录同名的路径

  • nginx # 共享挂载可以是⼀个列表

port

指定了要宿主机映射到容器的端⼝,端⼝不能低于 60(宿主机端 ⼝:容器端⼝),如果选择的端⼝号低于 60,可能会与系统保留的 知名端⼝冲突。

services:

mysql: # 服务名

ports:

  • 3306:3306 # 宿主机端⼝:容器端⼝

expose

⽤于在 docker 容器内部暴露端⼝的选项。

services:

mysql: # 服务名

expose:

  • 3306

networks

加⼊⽹络,引⽤顶级 networks 条⽬

networks: # 与services同级

dev: # ⾃定义或已存在的⽹络设备名

driver: bridge # 设备类型:⽹桥

external: true # 外部存在:是

hostname

设定容器主机名

services:

mysql: # 服务名

hostname: mysql

command

指定容器启动时要运⾏的命令,覆盖构建时的默认命令

services:

mysql: #服务名

command: --character-set·server=utf8

实操:

[root@docker3 ~]# yum -y install epel-release

[root@docker3 ~]# yum -y install python2-pip

[root@docker3 ~]# pip install --upgrade pip==20.3 -i https://mirrors.aliyun.com/pypi/simple

[root@docker3 ~]# pip install docker-compose -i https://mirrors.aliyun.com/pypi/simple

[root@docker3 test]# mkdir html

[root@docker3 test]# echo "山不在高,有仙则灵" > ./html/index.html

[root@docker3 test]# vim docker-compose.yml

version: "3"

services:

nginx:

container_name: c1

image: "nginx:latest"

ports:

  • "80:80"

volumes:

  • /root/test/html/:/usr/share/nginx/html/

[root@docker3 test]# docker up -d

相关推荐
荼靡6031 小时前
shell(三)
linux·服务器·数据库
zym大哥大1 小时前
Linux的权限
linux·服务器
伴野星辰1 小时前
小乌龟TortoiseGit 安装和语言包选择
linux·运维·服务器
枫叶丹41 小时前
【在Linux世界中追寻伟大的One Piece】多线程(一)
java·linux·运维
残念ing1 小时前
【Linux】—简单实现一个shell(myshell)
linux·运维·服务器
明月心9522 小时前
linux mount nfs开机自动挂载远程目录
linux·运维·服务器
Ray55052 小时前
bridge-multicast-igmpsnooping
linux·服务器·网络
库库的里昂2 小时前
Linux系统Docker部署开源在线协作笔记Trilium Notes与远程访问详细教程
linux·运维·docker·开源
在下不上天2 小时前
flume-将日志采集到hdfs
大数据·linux·运维·hadoop·hdfs·flume
mit6.8243 小时前
[Redis#3] 通用命令 | 数据类型 | 内部编码 | 单线程 | 快的原因
linux·redis·分布式