实训day39(8.29)

一、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(查看密码)

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: # 服务名

build: /docker/mysql

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

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

相关推荐
◎菜澜子6 分钟前
pycharm从VCS获取项目报错unable to access:Recv failure:Connection was reset
ide·python·pycharm
Filotimo_9 分钟前
使用 Anaconda 环境在Jupyter和PyCharm 中进行开发
ide·经验分享·笔记·python·学习·jupyter·pycharm
云川之下14 分钟前
【k8s】api server地址
云原生·容器·kubernetes
weixin_5860620214 分钟前
Nacos与Eureka的区别:深入解析微服务中的服务注册与发现
微服务·云原生·eureka
misakivv14 分钟前
k8s Service 服务
云原生·容器·kubernetes
爱吃奶酪的松鼠丶15 分钟前
adb的安装和使用 以及安装Frida 16.0.10+雷电模拟器
adb
xianjie031818 分钟前
几种修改docker默认存储位置的方法
spring cloud·docker·eureka
hahaha 1hhh20 分钟前
docker
云原生·eureka
黑金IT24 分钟前
WebSocket vs. Server-Sent Events:选择最适合你的实时数据流技术
网络·python·websocket·网络协议·fastapi
Amo Xiang26 分钟前
Python 常用模块(二):json模块
开发语言·python·json