CXYVIP官网源码交易平台_网站源码_商城源码_小程序源码平台-丞旭猿论坛
CXYVIP官网源码交易平台_网站源码_商城源码_小程序源码平台-丞旭猿论坛
CXYVIP官网源码交易平台_网站源码_商城源码_小程序源码平台-丞旭猿论坛

Docker-Compose基础与实战,看这一篇就够了

what & whyCompose 项目是 Docker 官方的开源项目,负责实现对 Docker 容器集群的快速编排使用前面介绍的Dockerfile我们很容易定义一个单独的应用容器然而在日常开发工作中,经常会碰到需要多个容器相互配合来完成某项任务的情况。

例如要实现一个 Web 项目,除了 Web 服务容器本身,往往还需要再加上后端的数据库服务容器;再比如在分布式应用一般包含若干个服务,每个服务一般都会部署多个实例如果每个服务都要手动启停,那么效率之低、维护量之大可想而知。

这时候就需要一个工具能够管理一组相关联的的应用容器,这就是Docker ComposeCompose有2个重要的概念项目(Project):由一组关联的应用容器组成的一个完整业务单元,在 docker-compose.yml 文件中定义。

服务(Service):一个应用的容器,实际上可以包括若干运行相同镜像的容器实例docker compose 安装与卸载安装二进制包在线安装curl -L https://github.com/docker/compose/releases/download/1.25.0/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose sudo chmod +x /usr/local/bin/docker-compose。

这个方法现在基本行不通,下载太慢了,不推荐使用二进制包离线安装从https://github.com/docker/compose/releases/download/1.25.0/docker-compose-Linux-x86_64下载对应的安装包,比如我下载了Linux-x86_64的。

将下载好的安装包剪切到/usr/local/bin/docker-compose目录下mv /app/download/docker-compose-Linux-x86_64 /usr/local/bin/docker-compose

添加执行权限sudo chmod +x /usr/local/bin/docker-composepip安装先安装好pip工具#安装依赖 yum -y install epel-release #安装PIP yum -y install python-pip #升级PIP pip install –upgrade pip

验证pip 版本[root@tymonitor bin]# pip –version pip 8.1.2 from /usr/lib/python2.7/site-packages (python 2.7)

安装docker composepip install -U docker-compose==1.25.0

验证docker compose版本[root@tymonitor bin]# docker-compose –version docker-compose version 1.25.0, build b42d419

安装补全插件curl -L https://raw.githubusercontent.com/docker/compose/1.25.0/contrib/completion/bash/docker-compose > /etc/bash_completion.d/docker-compose

卸载二进制卸载rm /usr/local/bin/docker-composepip卸载pip uninstall docker-composedocker compose 重要命令命令选项-f, –file FILE 指定使用的 Compose 模板文件,默认为 docker-compose.yml,可以多次指定。

-p, –project-name NAME 指定项目名称,默认将使用所在目录名称作为项目名–x-networking 使用 Docker 的可拔插网络后端特性–x-network-driver DRIVER 指定网络后端的驱动,默认为 bridge。

–verbose 输出更多调试信息-v, –version 打印版本并退出常用&重要命令config验证 Compose 文件格式是否正确,若正确则显示配置,若格式错误显示错误原因如:docker-compose -f skywalking.yml config。

此命令不会执行真正的操作,而是显示 docker-compose 程序解析到的配置文件内容:

images列出 Compose 文件中包含的镜像。如docker-compose -f skywalking.yml images

ps列出项目中目前的所有容器。如docker-compose -f skywalking.yml ps

build构建(重新构建)项目中的服务容器如:docker-compose -f skywalking.yml build,一般搭配自定义镜像,比如编写的Dockfile,功能类似于docker build .。

up该命令十分强大(重点掌握),它将尝试自动完成包括构建镜像,(重新)创建服务,启动服务,并关联服务相关容器的一系列操作如docker-compose -f skywalking.yml up默认情况,docker-compose up 启动的容器都在前台,控制台将会同时打印所有容器的输出信息,可以很方便进行调试。

如果使用docker-compose up -d将会在后台启动并运行所有的容器一般推荐生产环境下使用该选项默认情况,如果服务容器已经存在,docker-compose up 将会尝试停止容器,然后重新创建(保持使用 volumes-from 挂载的卷),以保证新启动的服务匹配 docker-compose.yml 文件的最新内容。

如果用户不希望容器被停止并重新创建,可以使用 docker-compose up –no-recreate这样将只会启动处于停止状态的容器,而忽略已经运行的服务如果用户只想重新部署某个服务,可以使用 docker-compose up –no-deps -d 来重新创建服务并后台停止旧服务,启动新服务,并不会影响到其所依赖的服务。

此命令有如下选项: ①:-d 在后台运行服务容器 ②:–no-color 不使用颜色来区分不同的服务的控制台输出 ③:–no-deps 不启动服务所链接的容器 ④:–force-recreate 强制重新创建容器,不能与 –no-recreate 同时使用。

⑤:–no-recreate 如果容器已经存在了,则不重新创建,不能与 –force-recreate 同时使用 ⑥:–no-build 不自动构建缺失的服务镜像 ⑦:-t, –timeout TIMEOUT 停止容器时候的超时(默认为 10 秒)。

down此命令停止用up命令所启动的容器并移除网络,如docker-compose -f skywalking.yml downstop格式为 docker-compose stop [options] [SERVICE…]

停止已经处于运行状态的容器,但不删除它通过 docker-compose start 可以再次启动这些容器,如果不指定service则默认停止所有的容器如docker-compose -f skywalking.yml stop elasticsearch。

选项:-t, –timeout TIMEOUT 停止容器时候的超时(默认为 10 秒)start启动已经存在的服务容器用法跟上面的stop刚好相反,如docker-compose -f skywalking.yml start elasticsearch。

restart重启项目中的服务用法跟上面的stop,start一样logs格式为docker-compose logs [options] [SERVICE…]查看服务容器的输出默认情况下,docker-compose 将对不同的服务输出使用不同的颜色来区分。

可以通过 –no-color 来关闭颜色该命令在调试问题的时候十分有用如docker-compose -f skywalking.yml logs 查看整体的日志,docker-compose -f skywalking.yml logs elasticsearch 查看单独容器的日志。

docker compose 模板文件模板文件是使用 Compose 的核心,涉及到的指令关键字也比较多本文主要列出几个常见&重要的指令,其他指令大家可以自行百度默认的模板文件名称为 docker-compose.yml,格式为 YAML 格式。

version: 3 services: elasticsearch: image: elasticsearch:6.8.5 container_name: elasticsearch restart: always volumes: – /app/skywalking/elasticsearch/data:/usr/share/elasticsearch/data:rw – /app/skywalking/elasticsearch/conf/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml – /app/skywalking/elasticsearch/conf/jvm.options:/usr/share/elasticsearch/config/jvm.options – /app/skywalking/elasticsearch/logs:/usr/share/elasticsearch/logs:rw environment: – TZ=Asia/Shanghai – xpack.monitoring.enabled=false – xpack.watcher.enabled=false ports: – “9200:9200” – “9300:9300”

注意每个服务都必须通过 image 指令指定镜像或 build 指令(需要 Dockerfile)等来自动构建生成镜像如果使用 build 指令,在 Dockerfile 中设置的选项(例如:CMD, EXPOSE, VOLUME, ENV 等) 将会自动被获取,无需在 docker-compose.yml 中重复设置。

常用&重要命令images指定为镜像名称或镜像 ID如果镜像在本地不存在,Compose 将会尝试拉取这个镜像image: apache/skywalking-oap-server:6.5.0 image: apache/skywalking-ui:6.5.0。

ports暴露端口信息使用宿主端口:容器端口 (HOST:CONTAINER) 格式,或者仅仅指定容器的端口(宿主将会随机选择端口)都可以,端口字符串都使用引号包括起来的字符串格式ports: – “3000” – “8080:8080” – “127.0.0.1:8001:8001″。

volumes数据卷所挂载路径设置可以设置为宿主机路径(HOST:CONTAINER)或者数据卷名称(VOLUME:CONTAINER),并且可以设置访问模式 (HOST:CONTAINER:ro)volumes: – /app/skywalking/elasticsearch/data:/usr/share/elasticsearch/data:rw – conf/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml

version: “3” services: my_src: image: mysql:8.0 volumes: – mysql_data:/var/lib/mysql volumes: mysql_data:

ulimits指定容器的 ulimits 限制值例如,指定最大进程数为 65535,指定文件句柄数为 20000(软限制,应用可以随时修改,不能超过硬限制) 和 40000(系统硬限制,只能 root 用户提高)。

ulimits: nproc: 65535 nofile: soft: 20000 hard: 40000depends_on解决容器的依赖、启动先后的问题以下例子中会先启动 redis mysql 再启动 web。

version: 3 services: web: build: . depends_on: – db – redis redis: image: redis db: image: mysql

environment设置环境变量你可以使用数组或字典两种格式environment: SW_STORAGE: elasticsearch SW_STORAGE_ES_CLUSTER_NODES: elasticsearch:9200 environment: – SW_STORAGE= elasticsearch – SW_STORAGE_ES_CLUSTER_NODES=elasticsearch:9200。

restart指定容器退出后的重启策略为始终重启该命令对保持服务始终运行十分有效,在生产环境中推荐配置为 always 或者 unless-stopped restart: alwaysdocker-compose 实战。

首先我需要推荐两件事:配置docker加速镜像创建或修改/etc/docker/daemon.jsonsudo mkdir -p /etc/docker sudo tee /etc/docker/daemon.json <<-EOF { “registry-mirrors”: [ “https://hub-mirror.c.163.com”, “https://mirror.ccs.tencentyun.com”, “https://reg-mirror.qiniu.co” ] } EOF sudo systemctl daemon-reload sudo systemctl restart docker

给你的ide工具装上docker插件

本次实战我们以docker-compose部署skywalking为例编写skywalking.yml,内容如下version: 3.3 services: elasticsearch: image: docker.elastic.co/elasticsearch/elasticsearch:6.8.5 container_name: elasticsearch restart: always ports: – 9200:9200 – 9300:9300 environment: discovery.type: single-node ulimits: memlock: soft: -1 hard: -1 oap: image: skywalking/oap container_name: oap depends_on: – elasticsearch links: – elasticsearch restart: always ports: – 11800:11800 – 12800:12800 environment: SW_STORAGE: elasticsearch SW_STORAGE_ES_CLUSTER_NODES: elasticsearch:9200 ui: image: skywalking/ui container_name: ui depends_on: – oap links: – oap restart: always ports: – 8080:8080 environment: SW_OAP_ADDRESS: oap:12800。

部署完成后将其上传至服务器,执行docker-compose -f /app/skywalking.yml up -d即可。

© 版权声明
THE END
喜欢就支持一下吧
点赞0赞赏 分享
相关推荐
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片

    暂无评论内容