目录
一、docker-compose介绍
1、定义:
2、管理结构:
3、使用docker-compose的三步过程
二、docker-compose安装与配置
? ? ? ? 1、上传文件
? ? ? ? 2、将刚才下载的docker-compose文件上传到centos7的/usr/local/bin/目录下
? ? ? ? 3、到/home更改docker-compose.yml?
? ? ? ? 4、启动docker-compose
三、docker-compose.yml 配置文件基本介绍
? ? ? ? 1、version
? ? ? ? 2、services
? ? ? ? 3、environment
? ? ? ? 4、其他配置文件介绍
四、docker-compose 基本指令
? ? ? ? 1、查看版本信息? ?
? ? ? ? 2、构建并启动容器
? ? ? ? 3、启动单个服务
? ? ? ? 4、后台启动服务
? ? ? ? 5、停止和删除容器、网络、卷、镜像
? ? ? ? 6、启动指定服务或启动所有服务?
? ? ? ? 7、停止指定服务或停止所有服务?
? ? ? ? 8、列出所有运行容器
? ? ? ? 9、进入指定容器
? ? ? ? 10、所有(停止状态的)服务容器
五、docker-compose 网络
? ? ? ? 1、指定网络模式
? ? ? ? 2、引用外部已存在的网络
? ? ? ? 3、自定义网络
一、docker-compose介绍
1、定义:
Docker-Compose项目是Docker官方的开源项目,负责实现对Docker容器集群的快速编排
通过编写docker-compose文件可对多个服务同时进行启动/停止/更新(可定义依赖,按顺序启动服务
2、管理结构:
project? ? ? ? ? ?1 ??????一个微服务项目 service? ? ? ? ? ?N ??????由N个微服务组成 container? ? ? ?N ??????而每个微服务又由N个节点组成
docker-compose.yml组成一个project,project里包括多个service,每个service定义了容器运行的镜像(或构建镜像)
Docker-Compose的工程配置文件默认为docker-compose.yml
前面我们使用 Docker 的时候,定义 Dockerfile 文件,然后使用 docker build、docker run 等命令操作容器. 然而微服务架构的应用系统一般包含若干个微服务,每个微服务一般都会部署多 个实例,如果每个微服务都要手动启停, 那么效率之低,维护量之大可想而知.而使用 Docker Compose 可以轻松、高效的管理容器, 它是一个用于定义和运行多容器 Docker 的应用程序工具
3、使用docker-compose的三步过程
1)用dockerfile,或者镜像定义应用程序的环境,以便在任何地方复制. 2)在docker-compose.yml中定义组成应用程序的服务,以便它们可以在单独的环境中一起运行. 3)运行docker compose up启动并运行整个应用程序.
二、docker-compose安装与配置
? ? ? ? 1、上传文件
我们要下载一个dokcer-compose文件,刚下下来的时候是docker-compose-Linux-x86_64,
? ? ? ? 2、将刚才下载的docker-compose文件上传到centos7的/usr/local/bin/目录下
cd /usr/local/bin
刚开始进来的是不会有-x可执行命名,因此要执行如下命名?
?chmod +x /usr/local/bin/docker-compose
现在表明该文件可以执行了?
? ? ? ? 3、到/home更改docker-compose.yml?
首先要进行创建一个docker-compose.yml文件
vim?docker-compose.yml
?docker-compose.yml:要注意格式!!!
version: '3' services: ? nginx: ? ? container_name: my-nginx ? ? image: nginx ? ? ports: ? ? ? - 9999:80 ? ? volumes: ? ? ? - /home/nginx/html:/etc/nginx/html ? ? ? - /home/nginx/conf.d:/etc/nginx/conf.d ? ? ? - /home/nginx/log:/var/log/nginx ? ? restart: always ? ? networks: ? ? ? - test-net ? mysql: ? ? container_name: my-mysql ? ? image: mysql:8.0.27 ? ? security_opt: ? ? ? ? - seccomp:unconfined ? ? ports: ? ? ? - 2333:3306 ? ? volumes: ? ? ? - /home/mysql/conf/my.cnf:/etc/my.cnf ? ? ? - /home/mysql/data:/var/lib/mysql ? ? restart: always ? ? environment: ? ? ? - MYSQL_ROOT_PASSWORD=root123 ? ? networks: ? ? ? test-net: ? ? ? ? ipv4_address: 192.168.101.110 networks: ? test-net: ? ? driver: bridge ? ? ipam: ? ? ? config: ? ? ? ? - subnet: 192.168.101.0/24 ? ? ? ? ? gateway: 192.168.101.1
? ? ? ? 4、启动docker-compose
docker-compose up
启动成功:?
三、docker-compose.yml 配置文件基本介绍
? ? ? ? 1、version
指定 docker-compose.yml 文件的写法格式
Compose目前有三个版本分别为Version 1,Version 2,Version 3,Compose区分Version 1和Version 2(Compose 1.6.0+,Docker Engine 1.10.0+).Version 2支持更多的指 令.Version 1将来会被弃用.
? ? ? ? 2、services
多个容器集合
? ? ? ? 3、environment
环境变量配置,可以用数组或字典两种方式
environment: ???RACK_ENV: development ???SHOW: 'ture' ??? ------------------------- environment: ?- RACK_ENV=development ?- SHOW=ture
? ? ? ? 4、其他配置文件介绍
image:镜像名称或镜像ID.如果镜像在本地不存在,Compose将会尝试拉取镜像 ?
build:服务除了可以基于指定的镜像,还可以基于一份Dockerfile,在使用up启动时执行构建任务,构建标签是build,可以指定Dockerfile所在文件夹的路径.Compose将会利用 ?
Dockerfile自动构建镜像,然后使用镜像启动服务容器 ?
hostname:启动高可用(集群)微服务时,必须与代码配置中的spring.profiles属性一致. ?
network_mode:配置服务容器的网络模式
四、docker-compose 基本指令
? ? ? ? 1、查看版本信息? ?
docker-compose -v
? ? ? ? 2、构建并启动容器
docker-compose up
? ? ? ? 3、启动单个服务
docker-compose up 服务名称
? ? ? ? 4、后台启动服务
docker-compose up -d
? ? ? ? 5、停止和删除容器、网络、卷、镜像
docker-compose down
? ? ? ? 6、启动指定服务或启动所有服务?
docker-compose start [服务名称]
? ? ? ? 7、停止指定服务或停止所有服务?
docker-compose stop [服务名称]
? ? ? ? 8、列出所有运行容器
docker-compose ps?
? ? ? ? 9、进入指定容器
docker-compose exec
? ? ? ? 10、所有(停止状态的)服务容器
docker-compose rm
参数: -f:强制直接删除,包括非停止状态的容器 -v:删除容器所挂载的数据卷
? ? ? ??
五、docker-compose 网络
? ? ? ? 1、指定网络模式
version: '3' services: nginx: ?container_name: my-nginx ?image: nginx ?ports: ??- 9999:80 ?volumes: ??- /home/nginx/html:/usr/share/nginx/html ??- /home/nginx/conf.d:/etc/nginx/conf.d ??- /home/nginx/log:/var/log/nginx ?restart: always ?network_mode: "bridge"
写法:
network_mode:"bridge" network_mode:"host" network_mode:"none" network_mode:"service:[service_name]" network_mode:"container:[container name/id]"
? ? ? ? 2、引用外部已存在的网络
首先要创建一个自定义网络
docker network create --subnet 10.0.90.0/24 test
?更改docker-compose.yml文件:
?version: '3' services: nginx: ?container_name: my-nginx ?image: nginx ?ports: ??- 9999:80 ?volumes: ??- /home/nginx/html:/etc/nginx/html ??- /home/nginx/conf.d:/etc/nginx/conf.d ??- /home/nginx/log:/var/log/nginx ?restart: always ?networks: ??- test-net networks: test-net: ?external: ??name: mynet
之后要将?docker-compose关闭在开启
docker-compose down
docker-compose up
?指定网络成功:
? ? ? ? 3、自定义网络
version: '3' services: nginx: ?container_name: my-nginx ?image: nginx ?ports: ??- 9999:80 ?volumes: ??- /home/nginx/html:/etc/nginx/html ??- /home/nginx/conf.d:/etc/nginx/conf.d ??- /home/nginx/log:/var/log/nginx ?restart: always ?networks: ??test-net: ???ipv4_address: 192.168.101.110 networks: test-net: ?driver: bridge ?ipam: ??config: ???- subnet: 192.168.101.0/24 ????gateway: 192.168.101.1
?之后要将?docker-compose关闭在开启
docker-compose down
docker-compose up
?指定网络成功:
?
今天的知识就分享到这了,希望能够帮你!
?
|