Docker Compse单机编排

打印 上一主题 下一主题

主题 1817|帖子 1817|积分 5451

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

x
一.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: Dockerfiledockerfile指定Dockerfile的路径。通常在build部门中使用。dockerfile: Dockerfile.prodcontext指定构建上下文的路径,即包含Dockerfile和构建上下文的目次路径context: /opt/testimage指定用于服务/容器的镜像名称。image: myapp:latestcommand覆盖由镜像指定的默认下令command: ["python", "app.py"]container_name为容器指定自定义名称。container_name: my_containerdeploy指定摆设选项,如副本和放置deploy: replicas: 3environment为服务指定环境变量environment: - DEBUG=truenetworks指定连接服务的网络networks: - frontend - backendnetwork_mode指定容器的网络模式network_mode: "host"ports:将容器端口映射到主机端口ports: - "8080:80"volumes挂载主机或其他容器的卷volumes: - "nginx-data:/usr/local/nginx/htmlvolumes_from从另一个服务/容器挂载卷volumes_from: - data-containerhostname:指定主机名hostname: my-containersysctls为容器设置内核参数sysctls: - net.core.somaxconn=1024restart重启策略restart: alwaysdepends_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安装
  1. yum install  epel-release.noarch  -y
  2. yum -y install docker-compose
复制代码
二进制安装
  1. chmod +x /usr/local/bin/docker-compose
  2. ln  -s   /usr/local/bin/docker-compose   /usr/bin
复制代码
2.查看下令格式
官方文档: https://docs.docker.com/compose/reference/
  1. docker-compose --help
  2. Define and run multi-container applications with Docker.
  3. Usage:
  4. docker-compose [-f <arg>...] [options] [COMMAND] [ARGS...]
  5. docker-compose -h|--help
  6. #选项说明:  
  7. -f,–file FILE #指定Compose 模板文件,默认为docker-compose.yml
  8. -p,–project-name NAME #指定项目名称,默认将使用当前所在目录名称作为项目名。
  9. --verbose   #显示更多输出信息
  10. --log-level LEVEL    #定义日志级别 (DEBUG, INFO, WARNING, ERROR, CRITICAL)
  11. --no-ansi #不显示ANSI 控制字符
  12. -v, --version #显示版本
  13. #以下为命令选项,需要在docker-compose.yml|yaml 文件所在在目录里执行
  14. build  #构建镜像
  15. bundle #从当前docker compose 文件生成一个以<当前目录>为名称的json格式的Docker Bundle 备份文件
  16. config  -q #查看当前配置,没有错误不输出任何信息
  17. create #创建服务,较少使用
  18. down #停止和删除所有容器、网络、镜像和卷
  19. events #从容器接收实时事件,可以指定json 日志格式,较少使用
  20. exec #进入指定容器进行操作
  21. help #显示帮助细信息
  22. images #显示镜像信息,较少使用
  23. kill #强制终止运行中的容器
  24. logs #查看容器的日志
  25. pause #暂停服务
  26. port #查看端口
  27. ps #列出容器,较少使用
  28. pull #重新拉取镜像,镜像发生变化后,需要重新拉取镜像,较少使用
  29. push #上传镜像
  30. restart #重启服务,较少使用
  31. rm #删除已经停止的服务
  32. run #一次性运行容器
  33. scale  #设置指定服务运行的容器个数
  34. start #启动服务 ,较少使用
  35. stop #停止服务,较少使用
  36. top #显示容器运行状态
  37. unpause #取消暂定
  38. 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 配置文件,要留意前后的缩进
  1. [root@localhost harbor]#mkdir /mnt/docker-compose
  2. [root@localhost harbor]#cd  /mnt/docker-compose/
  3. [root@localhost docker-compose]#vim docker-compose.yml
  4. #准备yml文件
  5. server-nginx-web:
  6.   image: nginx
  7.   container_name: web1
  8.   expose:
  9.    - 80
  10.    - 443
  11.   ports:
  12.     - "8080:80"
  13.     - "8443:443"
复制代码
2.检测语法
  1. docker-compose  config
复制代码

3.启动
  1. docker-compose up
  2. #docker-compose start
  3. #docker-compose up -d
  4. 后台启动
  5. docker-compose  ps
复制代码


4.关闭
4.1  使用docker-compose down 会将容器直接删除 镜像也会删除
  1. docker-compose down
  2. docker-compose  ps
  3. docker ps -a
复制代码


4.2  使用docker-compose kill 只是退出容器
  1. docker-compose kill
  2. docker ps -a
  3. docker-compose  ps
复制代码
4.3  只删除克制的容器
  1. docker-compose rm
复制代码
5.查看事件 docker-compose events
  1. docker-compose  events
  2. #json 格式
  3. #docker-compose events --json
复制代码

6.启动多个容器
  1. server-nginx-web:
  2.   image: nginx
  3.   container_name: web1
  4.   expose:
  5.    - 80
  6.    - 443
  7.   ports:
  8.     - "8001:80"
  9.     - "8443:443"
  10. server-mysql:
  11.   image: mysql
  12.   container_name: mysql1
  13. [root@localhost docker-compose]#docker-compose config -q
  14. # -q 静默不输出
  15. 启动
  16. docker-compose up -d
  17. docker ps -a
复制代码

7.调用dockerfile 文件执行编排
  1. FROM  centos:centos7.9.2009
  2. LABEL author="zhou cloud"  \
  3.       version="1.0"       \
  4.       description="test"
  5. RUN   rm -rf  /etc/yum.repos.d/
  6. ADD   qh.repo   /etc/yum.repos.d/
  7. RUN   yum -y install gcc gcc-c++ make automake pcre pcre-devel zlib  zlib-devel openssl openssl-devel wget
  8. ADD   nginx-1.18.0.tar.gz   /usr/local/src
  9. RUN   cd  /usr/local/src/nginx-1.18.0  && ./configure  --prefix=/apps/nginx  && make   &&  make install
  10. COPY  index.html    /apps/nginx/html
  11. EXPOSE 80
  12. CMD   ["-g","daemon off;"]
  13. ENTRYPOINT   ["/apps/nginx/sbin/nginx"]
  14. [root@localhost centos7]#docker  build   -t  c7:n3   .
  15. [root@localhost centos7]#docker run  -d  -p 80:80 --name web1  c7:n1
复制代码
编写compse 文件
  1. vim /opt/compose_nginx/docker-compose.yml
  2. services:
  3.   nginx:
  4.     container_name: web1
  5.     hostname: nginx
  6.     build:
  7.       context: /data/dockerfile/system/centos/centos7/
  8.       dockerfile: Dockerfile
  9.     ports:
  10.       - 1216:80
  11.       - 1217:443
  12.     networks:
  13.       mynet:
  14.         ipv4_address: 172.18.0.10
  15.     volumes:
  16.       - ./wwwroot:/usr/local/nginx/html
  17. networks:
  18.   mynet:
  19.     driver: bridge
  20.     ipam:
  21.       config:
  22.         - subnet: 172.18.0.0/16
  23.         
  24.    
  25. services: 定义了要运行的服务。
  26. nginx: Nginx 服务的配置。
  27. container_name: 指定容器的名称为 web1。
  28. hostname: 指定容器的主机名为 nginx。
  29. build: 指定了构建 Nginx 容器所需的上下文和 Dockerfile。
  30. ports: 将主机端口 1216 映射到容器的 80 端口,将主机端口 1217 映射到容器的 443 端口。
  31. networks: 将服务连接到名为 lnmp 的自定义网络。
  32. volumes: 将主机上的 ./wwwroot 目录挂载到容器中的 /usr/local/nginx/html 目录。
  33. networks: 定义了自定义网络。
  34. lnmp: 自定义网络的配置。
  35. driver: 网络驱动程序为 bridge。
  36. ipam: IP 地址管理配置。
  37. config: 子网配置,指定了 IP 地址范围。
  38. cd /opt/compose_nginx/
  39. docker-compose -f docker-compose.yml up -d
  40. ----------------------------------------------------------------------------------------------------------
  41. -f, --file FILE :使用特定的 compose 模板文件,默认为 docker-compose.yml
  42. -p, --project-name NAME :指定项目名称,默认使用目录名称
  43. -d :在后台运行
  44. ----------------------------------------------------------------------------------------------------------
  45. docker ps -a
  46. CONTAINER ID   IMAGE                 COMMAND     CREATED              STATUS              PORTS                                         NAMES
  47. 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_1
  48. cd /opt/compose_nginx/
  49. docker-compose ps                                        #必须在docker-compose.yml所在目录执行此命令
  50. docker-compose -f docker-compose.yml up -d
复制代码






免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

雁过留声

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表