Docker整理篇(docker-compose与私服搭建)

Docker整理篇(docker-compose)

  • 安装与常用命令操作
  • Docker网络与数据卷
  • docker-compose与私服搭建

基本介绍

官网地址

https://docs.docker.com/compose/compose-file/

概述

在实际生产环境中,一个应用往往由许多服务构成,而 docker 的最佳实践是一个容器只运行一个进程,因此运行多个微服务就要运行多个容器。多个容器协同工作需要一个有效的工具来管理他们,定义这些容器如何相互关联。compose 应运而生。

compose 是用来定义和运行一个或多个容器(通常都是多个)运行和应用的工具。使用 compose 可以简化容器镜像的构建以及容器的运行。
compose 使用 YAML 文件来定义多容器之间的关系。一个 docker-compose up 就可以把完整的应用跑起来。 本质上, compose 把 YAML 文件解析成 docker 命令的参数,然后调用相应的 docker 命令行接口,从而将应用以容器化的方式管理起来。它通过解析容器间的依赖关系顺序地启动容器。而容器间的依赖关系由 YAML 文件中的 links 标记指定。

docker compose是什么

compose、machine 和 swarm 是docker 原生提供的三大编排工具。简称docker三剑客。
部署和管理繁多的服务是困难的。而这正是 Docker Compose 要解决的问题。Docker Compose 并不是通过脚本和各种冗长的 docker 命令来将应用组件组织起来,而是通过一个声明式的配置文件描述整个应用,从而使用一条命令完成部署。应用部署成功后,还可以通过一系列简单的命令实现对其完整声明周期的管理。甚至,配置文件还可以置于版本控制系统中进行存储和管理。

docker compose安装

下载安装与授权

https://github.com/docker/compose
下载最新版本:1.27.4

授权
mv /data/docker-compose-Linux-x86_64 /usr/local/bin/docker-compose
cp /data/docker-compose-Linux-x86_64 /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
开发环境可以授予最高权限
chmod 777 /usr/local/bin/docker-compose

检查安装情况以及版本

docker-compose -v
docker-compose --version
docker-compose version

卸载docker-compose
docker-compose卸载只需要删除二进制文件就可以了

rm -rf /usr/local/bin/docker-compose
reboot

yml配置文件及常用指令

Docker Compose 使用 YAML 文件来定义多服务的应用。YAML 是 JSON 的一个子集,因此也可以使用JSON。
Docker Compose 默认使用文件名 docker-compose.yml。当然,也可以使用 -f 参数指定具体文件。
Docker Compose 的 YAML 文件包含 4 个一级 key:version、services、networks、volumes

  • version 是必须指定的,而且总是位于文件的第一行。它定义了 Compose 文件格式(主要是API)的版本。注意,version
    并非定义 Docker Compose 或 Docker 引擎的版本号。
  • services 用于定义不同的应用服务。上边的例子定义了两个服务:一个名为lagou-mysql数据库服务以及一个名为lagou-eureka的微服。Docker Compose 会将每个服务部署在各自的容器中。
  • networks 用于指引 Docker 创建新的网络。默认情况下,Docker Compose 会创建 bridge 网络。
  • 这是一种单主机网络,只能够实现同一主机上容器的连接。当然,也可以使用 driver 属性来指定不同的网络类型。
  • volumes 用于指引 Docker 来创建新的卷。
version: '3'
services:
	lagou-mysql:
	build:
		context: ./mysql
	environment:
		MYSQL_ROOT_PASSWORD: admin
	restart: always
	container_name: lagou-mysql
	volumes:
	- /data/edu-bom/mysql/lagou:/var/lib/mysql
	image: lagou/mysql:5.7
	ports:
	- 3306:3306
	networks:
		lagou-net:
lagou-eureka:
	build:
		context: ./edu-eureka-boot
	restart: always
	ports:
	- 8761:8761
	container_name: edu-eureka-boot
	hostname: edu-eureka-boot
	image: lagou/edu-eureka-boot:1.0
	depends_on:
	- lagou-mysql
	networks:
		lagou-net:
networks:
	lagou-net:
volumes:
	lagou-vol:

反向代理案例

安装docker插件

idea安装docker插件。Dockerfile、docker-compose.yml文件大部分内容会有提示信息。方便开发人员
编写配置文件。

官网地址:
https://plugins.jetbrains.com/plugin/7724-docker/versions

基础镜像

docker pull nginx:1.19.3-alpine
docker pull tomcat:9.0.20-jre8-alpine

试运行镜像

docker run -itd --name nginx -p 80:80 nginx:1.19.3-alpine
docker run -itd --name tomcat -p 8080:8080 tomcat:9.0.20-jre8-alpine

mkdir -p /data/tomcat1 tomcat2

docker cp nginx:/etc/nginx/ /data
docker cp tomcat:/usr/local/tomcat/webapps /data/tomcat1/webapps
docker cp tomcat:/usr/local/tomcat/webapps /data/tomcat2/webapps

echo "tomcat1" > /data/tomcat1/webapps/ROOT/index.jsp
echo "tomcat2" > /data/tomcat2/webapps/ROOT/index.jsp

docker rm -f nginx tomcat

nginx.conf

nginx.conf增加内容
include vhost/*.conf;

反向代理配置

mkdir -p /data/nginx/vhost
cd vhost
vi lagouedu.com.conf

upstream nginxlagouedu{
	server 192.168.198.100:8081;
	server 192.168.198.100:8082;
}

server{
	listen 80;
	server_name 192.168.198.100;
	autoindex on;
	index index.html index.htm index.jsp;
	location / {
		proxy_pass http://nginxlagouedu;
		add_header Access-Control-Allow-Origin *;
	}
}

docker-compose

version: '3'
services:
	lagou-nginx:
		restart: always
		container_name: lagou-nginx
		volumes:
		- /data/nginx:/etc/nginx/
		image: nginx:1.19.3-alpine
		ports:
		- 80:80
	lagou-tomcat1:
		restart: always
		container_name: lagou-tomcat1
		volumes:
		- /data/tomcat1/webapps:/usr/local/tomcat/webapps
		image: tomcat:9.0.20-jre8-alpine
		ports:
		- 8081:8080
		depends_on:
		- lagou-nginx
	lagou-tomcat2:
		restart: always
		container_name: lagou-tomcat2
		volumes:
		- /data/tomcat2/webapps:/usr/local/tomcat/webapps
		image: tomcat:9.0.20-jre8-alpine
		ports:
		- 8082:8080
		depends_on:
		- lagou-nginx

启动服务

docker-compose up
docker-compose up -d

浏览器测试

http://192.168.198.100:8081/
http://192.168.198.100:8082/
http://192.168.198.100

常用命令汇总

启动服务

docker-compose up -d

停止服务

docker-compose down

列出所有运行容器

docker-compose ps

查看服务日志

docker-compose logs

构建或者重新构建服务

docker-compose build

启动服务

docker-compose start

停止已运行的服务

docker-compose stop

重启服务

docker-compose restart

官网地址

https://docs.docker.com/compose/reference/build/

安装Docker私服

在使用maven管理jar包依赖的时候,为了避免每次都从中央仓库拉取依赖包,使用了nexus做了代理仓
库。docker镜像仓库与nexus私服仓库作用类似,用于将打包好的镜像保存在仓库中方便开发、测试、
生产环境镜像拉取存储,减轻环境部署需要的相应操作。

节点信息

服务器用户名:root,服务器密码:123456 。及时做好系统快照
Docker整理篇(docker-compose与私服搭建)_第1张图片

官方私服

官网地址

https://hub.docker.com/_/registry

基础镜像

拉取镜像
docker pull registry:2.7.1

备份镜像
docker save registry:2.7.1 -o registry.2.7.1.tar

导入镜像
docker load -i registry.2.7.1.tar

运行容器
docker run -itd -p 5000:5000 --name registry --restart=always registry:2.7.1

添加私服仓库地址

编辑配置文件
vi /etc/docker/daemon.json

增加仓库配置信息
{ "insecure-registries":["192.168.198.101:5000"] }

重启docker
systemctl daemon-reload
systemctl restart docker

查看docker信息确认仓库是否添加
docker info

浏览器测试

http://192.168.198.101:5000/v2/_catalog

上传镜像

docker tag nginx:1.19.3-alpine 192.168.198.101:5000/nginx:v1
docker push 192.168.198.101:5000/nginx:v1

浏览器查看

http://192.168.198.101:5000/v2/nginx/tags/list

企业私服

harbor官网地址

harbor官网地址:
https://goharbor.io/
github官网地址:
https://github.com/goharbor/harbor
官方帮助文档:
https://github.com/goharbor/harbor/blob/v1.9.4/docs/installation_guide.md

docker-compose

验证docker-compose
docker-compose -v

硬件要求
Docker整理篇(docker-compose与私服搭建)_第2张图片
安装harbor
开发环境大部分采用http方式进行安装;生产环境必须采用https方式安装。docker运维篇中和大家一
起学习https方式安装harbor

1.解压软件
cd /data
tar zxf harbor-offline-installer-v1.9.4.tgz

2.进入安装目录
cd harbor

3.修改配置文件
vi harbor.yml
3.1修改私服镜像地址
hostname: 192.168.198.101
3.2修改镜像地址访问端口号
port: 5000
3.3harbor管理员登录系统密码
harbor_admin_password: Harbor12345
3.4修改harbor映射卷目录
data_volume: /data/harbor

4.安装harbor
4.1执行启动脚本,经过下述3个步骤后,成功安装harbor私服
./install.sh
4.2准备安装环境:检查docker版本和docker-compose版本
4.3加载harbor需要的镜像
4.4准备编译环境
4.5启动harbor。通过docker-compose方式启动服务
4.6google浏览器访问harbor私服
http://192.168.198.101:5000
username: admin
password: Harbor12345

配置私服

vi /etc/docker/daemon.json
"insecure-registries":["192.168.198.101:5000"]
重启docker服务:
systemctl daemon-reload
systemctl restart docker

新建项目

在harbor中新建公共项目:
laogouedu

登录私服

docker login -u admin -p Harbor12345 192.168.198.101:5000

退出私服
docker logout 192.168.198.101:5000

上传nginx镜像

docker tag mariadb:10.5.2 192.168.198.101:5000/lagouedu/nginx:1.19.3-alpine
docker push 192.168.198.101:5000/lagouedu/nginx:1.19.3-alpine
docker pull 192.168.198.101:5000/lagouedu/mariadb:10.5.2

你可能感兴趣的:(Linux,docker,环境部署,docker,网络,容器)