哪里有做ppt的网站南沙网站建设方案
一.Docker Compse 介绍
Docker Compose 是一个用于定义和运行多容器 Docker 应用程序的工具。通过 Compose,你可以使用 YAML 文件来配置应用程序的服务、网络和卷,然后使用单个命令创建和启动所有服务。这使得在开发、测试和部署过程中管理多容器应用程序变得更加简单。
github地址: GitHub - docker/compose: Define and run multi-container applications with Docker
官方地址: https://docs.docker.com/compose/
1.yml 语言
AML 文件格式及编写注意事项
 YAML 是一种标记语言,它可以很直观的展示数据序列化格式,可读性高。
 类似于 json 数据描述语言,语法比 json 简单的很多。
 YAML 数据结构通过缩进来表示,连续的项目通过减号来表示, 键值对用冒号分隔,数组用中括号 [] 括起来, hash 用花括号 {} 括起来
2.使用YAML时需要注意下面事项
-  
大小写敏感
 -  
通过缩进表示层级关系
 -  
不支持制表符 tab 键缩进,只能使用空格缩进
 -  
缩进的空格数目不重要,只要相同层级左对齐,通常开头缩进2个空格
 -  
用 # 号注释
 -  
符号字符后缩进1个空格,如冒号 : 、逗号 , 、横杠 -
 -  
如果包含特殊字符用单引号('')引起来会作为普通字符串处理,双引号(""): 特殊字符作为本身想表示的意思
 
| 指令 | 作用 | 演示 | 
|---|---|---|
| build | 指定构建上下文和可选的Dockerfile用于构建镜像。 | build: context: /opt/test dockerfile: Dockerfile | 
| dockerfile | 指定Dockerfile的路径。通常在build部分中使用。 | dockerfile: Dockerfile.prod | 
| context | 指定构建上下文的路径,即包含Dockerfile和构建上下文的目录路径 | context: /opt/test | 
| image | 指定用于服务/容器的镜像名称。 | image: myapp:latest | 
| command | 覆盖由镜像指定的默认命令 | command: ["python", "app.py"] | 
| container_name | 为容器指定自定义名称。 | container_name: my_container | 
| deploy | 指定部署选项,如副本和放置 | deploy: replicas: 3 | 
| environment | 为服务指定环境变量 | environment: - DEBUG=true | 
| networks | 指定连接服务的网络 | networks: - frontend - backend | 
| network_mode | 指定容器的网络模式 | network_mode: "host" | 
| ports: | 将容器端口映射到主机端口 | ports: - "8080:80" | 
| volumes | 挂载主机或其他容器的卷 | volumes: - "nginx-data:/usr/local/nginx/html | 
| volumes_from | 从另一个服务/容器挂载卷 | volumes_from: - data-container | 
| hostname: | 指定主机名 | hostname: my-container | 
| sysctls | 为容器设置内核参数 | sysctls: - net.core.somaxconn=1024 | 
| restart | 重启策略 | restart: always | 
| depends_on | 指定该服务依赖的其他服务 | depends_on: - mysql | 
3.常用指令
命令只能在docker-compose.yml的目录下执行
| 命令 | 解释 | 
|---|---|
| build | #构建镜像 | 
| bundle | #从当前docker compose 文件生成一个以<当前目录>为名称的json格式的Docker Bundle 备份文件 | 
| config -q | #查看当前配置,没有错误不输出任何信息 | 
| create | #创建服务,较少使用 | 
| down | #停止和删除所有容器、网络、镜像和卷 | 
| events | #从容器接收实时事件,可以指定json 日志格式,较少使用 | 
| exec | #进入指定容器进行操作 | 
| help | #显示帮助细信息 | 
| images | #显示镜像信息,较少使用 | 
| kill | #强制终止运行中的容器 | 
| logs | #查看容器的日志 | 
| pause | #暂停服务 | 
| port | #查看端口 | 
| ps | #列出容器,较少使用 | 
| pull | #重新拉取镜像,镜像发生变化后,需要重新拉取镜像,较少使用 | 
| push | #上传镜像 | 
| restart | #重启服务,较少使用 | 
| rm | #删除已经停止的服务 | 
| run | #一次性运行容器 | 
| scale | #设置指定服务运行的容器个数 | 
| start | #启动服务 ,较少使用 | 
| stop | #停止服务,较少使用 | 
| top | #显示容器运行状态 | 
| unpause | #取消暂定 | 
| up | #创建并启动容器 ,较少使用 | 
二.安装和准备
1.安装Docker Compose
yum安装
yum install  epel-release.noarch  -y
yum -y install docker-compose 
二进制安装
chmod +x /usr/local/bin/docker-compose
ln  -s   /usr/local/bin/docker-compose   /usr/bin 
2.查看命令格式
官方文档: https://docs.docker.com/compose/reference/
docker-compose --help
Define and run multi-container applications with Docker.
Usage:docker-compose [-f <arg>...] [options] [COMMAND] [ARGS...]docker-compose -h|--help
#选项说明:  
-f,–file FILE #指定Compose 模板文件,默认为docker-compose.yml
-p,–project-name NAME #指定项目名称,默认将使用当前所在目录名称作为项目名。
--verbose   #显示更多输出信息
--log-level LEVEL    #定义日志级别 (DEBUG, INFO, WARNING, ERROR, CRITICAL) 
--no-ansi #不显示ANSI 控制字符
-v, --version #显示版本#以下为命令选项,需要在docker-compose.yml|yaml 文件所在在目录里执行
build  #构建镜像
bundle #从当前docker compose 文件生成一个以<当前目录>为名称的json格式的Docker Bundle 备份文件
config  -q #查看当前配置,没有错误不输出任何信息
create #创建服务,较少使用
down #停止和删除所有容器、网络、镜像和卷
events #从容器接收实时事件,可以指定json 日志格式,较少使用
exec #进入指定容器进行操作
help #显示帮助细信息
images #显示镜像信息,较少使用
kill #强制终止运行中的容器
logs #查看容器的日志
pause #暂停服务
port #查看端口
ps #列出容器,较少使用
pull #重新拉取镜像,镜像发生变化后,需要重新拉取镜像,较少使用
push #上传镜像
restart #重启服务,较少使用
rm #删除已经停止的服务
run #一次性运行容器
scale  #设置指定服务运行的容器个数
start #启动服务 ,较少使用
stop #停止服务,较少使用
top #显示容器运行状态
unpause #取消暂定
up #创建并启动容器 ,较少使用 
显示 docker-compose 拉起的容器

3.docker compse 文件格式
官方文档: https://docs.docker.com/compose/compose-file/
docker compose 文件是一个yaml格式的文件,所以注意行首的缩进很严格默认docker-compose命令会调用当前目录下的docker-compose.yml的文件,因此一般执行docker-compose命令前先进入docker-compose.yml文件所在目录
docke- compose文件的格式很不同版本,版本不同,语法和格式有所不同,参看以下列表
三.演示
1.启动单台容器
docker compose 文件可在任意目录,创建文件名为docker-compose.yml 配置文件,要注意前后的缩进
[root@localhost harbor]#mkdir /mnt/docker-compose
[root@localhost harbor]#cd  /mnt/docker-compose/
[root@localhost docker-compose]#vim docker-compose.yml
#准备yml文件
server-nginx-web:image: nginxcontainer_name: web1expose:- 80- 443ports:- "8080:80"- "8443:443" 
2.检测语法
docker-compose  config 

3.启动
docker-compose up
#docker-compose start
#docker-compose up -d
后台启动
docker-compose  ps 


4.关闭
4.1 使用docker-compose down 会将容器直接删除 镜像也会删除
docker-compose down
docker-compose  ps
docker ps -a 


4.2 使用docker-compose kill 只是退出容器
docker-compose kill
docker ps -a
docker-compose  ps 
4.3 只删除停止的容器
docker-compose rm 
5.查看事件 docker-compose events
docker-compose  events
#json 格式
#docker-compose events --json 

6.启动多个容器
server-nginx-web:image: nginxcontainer_name: web1expose:- 80- 443ports:- "8001:80"- "8443:443"
server-mysql:image: mysqlcontainer_name: mysql1[root@localhost docker-compose]#docker-compose config -q
# -q 静默不输出 
启动
docker-compose up -d
docker ps -a 

7.调用dockerfile 文件执行编排
FROM  centos:centos7.9.2009
LABEL author="zhou cloud"  \version="1.0"       \description="test"
RUN   rm -rf  /etc/yum.repos.d/
ADD   qh.repo   /etc/yum.repos.d/
RUN   yum -y install gcc gcc-c++ make automake pcre pcre-devel zlib  zlib-devel openssl openssl-devel wget
ADD   nginx-1.18.0.tar.gz   /usr/local/src
RUN   cd  /usr/local/src/nginx-1.18.0  && ./configure  --prefix=/apps/nginx  && make   &&  make install
COPY  index.html    /apps/nginx/html
EXPOSE 80
CMD   ["-g","daemon off;"]
ENTRYPOINT   ["/apps/nginx/sbin/nginx"][root@localhost centos7]#docker  build   -t  c7:n3   .
[root@localhost centos7]#docker run  -d  -p 80:80 --name web1  c7:n1 
编写compse 文件
vim /opt/compose_nginx/docker-compose.yml services:nginx:container_name: web1hostname: nginxbuild:context: /data/dockerfile/system/centos/centos7/dockerfile: Dockerfileports:- 1216:80- 1217:443networks:mynet:ipv4_address: 172.18.0.10volumes:- ./wwwroot:/usr/local/nginx/html
networks:mynet:driver: bridgeipam:config:- subnet: 172.18.0.0/16services: 定义了要运行的服务。nginx: Nginx 服务的配置。container_name: 指定容器的名称为 web1。hostname: 指定容器的主机名为 nginx。build: 指定了构建 Nginx 容器所需的上下文和 Dockerfile。ports: 将主机端口 1216 映射到容器的 80 端口,将主机端口 1217 映射到容器的 443 端口。networks: 将服务连接到名为 lnmp 的自定义网络。volumes: 将主机上的 ./wwwroot 目录挂载到容器中的 /usr/local/nginx/html 目录。networks: 定义了自定义网络。lnmp: 自定义网络的配置。driver: 网络驱动程序为 bridge。ipam: IP 地址管理配置。config: 子网配置,指定了 IP 地址范围。cd /opt/compose_nginx/
docker-compose -f docker-compose.yml up -d
----------------------------------------------------------------------------------------------------------
-f, --file FILE :使用特定的 compose 模板文件,默认为 docker-compose.yml
-p, --project-name NAME :指定项目名称,默认使用目录名称
-d :在后台运行
----------------------------------------------------------------------------------------------------------docker ps -a
CONTAINER ID   IMAGE                 COMMAND     CREATED              STATUS              PORTS                                         NAMES
b48dceee248f   compose_nginx_nginx   "/run.sh"   About a minute ago   Up About a minute   0.0.0.0:1216->80/tcp, 0.0.0.0:1217->443/tcp   compose_nginx_nginx_1cd /opt/compose_nginx/
docker-compose ps					#必须在docker-compose.yml所在目录执行此命令docker-compose -f docker-compose.yml up -d 
 
 
 
 
