本文共 3810 字,大约阅读时间需要 12 分钟。
.
微服务架构的应用系统一般包括若干个微服务,每个微服务一般都会部署多个实例,如果每个微服务都要手动启停,那么效率是极低的,而且工作量巨大
Docker Compose 是一种编排服务,基于python语言开发,是一个用于在Docker上定义并运行复杂应用的工具,可以让用户在集群中部署分布式应用
用户可以很容易地用一个配置文件定义一个多容器的应用,然后使用一条指令安装这个应用的所有依赖,完成构建
解决了容器间如何管理编排问题
Docker Compose 中有两个重要的概念:
服务 (service):一个应用的容器,实际上可以包括若干运行相同镜像的容器实例。 项目 (project):由一组关联的应用容器组成的一个完整业务单元,在 docker-compose.yml 文件中定义。可以类比之前的ansible及saltstack,都是为了更方便集群式的部署分布式应用
.
这种方式比较慢curl -L https://github.com/docker/compose/releases/download/1.21.2/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-composechmod +x /usr/local/bin/docker-compose
推荐使用阿里云的,下载速度快。.
把脚本放在/usr/local/bin/下.名字为docker-compose ,加执行权限 ,docker-compose命令就有了。docker-compose 命令 --help 获得一个命令的帮助docker-compose up -d nginx 构建启动nignx容器docker-compose exec nginx bash 登录到nginx容器中docker-compose down 此命令将会停止 up 命令所启动的容器,并移除网络docker-compose ps 列出项目中目前的所有容器docker-compose restart nginx 重新启动nginx容器docker-compose build nginx 构建镜像 docker-compose build --no-cache nginx 不带缓存的构建docker-compose top 查看各个服务容器内运行的进程 docker-compose logs 查看服务的输出docker-compose logs -f nginx 查看nginx的实时日志docker-compose images 列出 Compose 文件包含的镜像docker-compose config 验证文件配置,当配置正确时,不输出任何内容,当文件配置错误,输出错误信息。 docker-compose events --json nginx 以json的形式输出nginx的docker日志docker-compose pause nginx 暂停nignx容器docker-compose unpause nginx 恢复ningx容器docker-compose rm nginx 删除容器(删除前必须关闭容器,执行stop)docker-compose stop nginx 停止nignx容器docker-compose start nginx 启动nignx容器docker-compose restart nginx 重启项目中的nignx容器
.
docker-compose.yml属性Image : 指定为镜像名称或镜像 ID,如果镜像在本地不存在,Compose 将会尝试拉取这个镜像。Build : 指定 Dockerfile 所在文件夹的路径。 Compose 将会利用它自动构建这个镜像,然后使用这个镜像。Command : 覆盖容器启动后默认执行的命令。Links : 链接到其它服务中的容器。Ports : 端口映射。Expose : 暴露端口信息Volumes : 卷挂载路径设置
文件名默认是docker-compose.yml 如果名字不是默认,则加-f参数,指定文件。
[root@server1 ~]# mkdir compose[root@server1 ~]# cd compose/[root@server1 compose]# ls[root@server1 compose]# cat /etc/docker/daemon.json { "registry-mirrors": ["https://nmcjqb9k.mirror.aliyuncs.com"]}[root@server1 compose]# docker pull nginx[root@server1 compose]# docker pull haproxy[root@server1 compose]# vim docker-compose.yml[root@server1 compose]# mkdir web1[root@server1 compose]# echo web1 > web1/index.html[root@server1 compose]# mkdir web2[root@server1 compose]# echo web2 > web2/index.html[root@server1 ~]# docker inspect haproxy/usr/local/etc/haproxy/haproxy.cfg[root@server1 compose]# mkdir haproxy[root@server1 compose]# cd haproxy/[root@server1 haproxy]# vim haproxy.cfg[root@server1 haproxy]# docker run -d --name demo -v "$(pwd)"/haproxy.cfg:/usr/local/etc/haproxy/haproxy.cfg haproxy[root@server1 haproxy]# docker logs demo[root@server1 haproxy]# docker rm -f demodemo[root@server1 haproxy]# cd ..[root@server1 compose]# docker-compose up[root@server1 compose]# docker-compose start[root@server1 compose]# docker-compose ps
docker network create mynet
version: "3.9"services: web1: image: nginx networks: - mynet volumes: - ./web1:/usr/share/nginx/html ####/usr/share/nginx/html : nginx的测试页 , web2: image: nginx networks: - mynet volumes: - ./web2:/usr/share/nginx/html haproxy: image: haproxy networks: - mynet ports: - "80:80" volumes: - ./haproxy/haproxy.cfg:/usr/local/etc/haproxy/haproxy.cfgnetworks: mynet:
[root@server1 haproxy]# vim haproxy.cfg
[root@server1 compose]# docker-compose stop web1Stopping compose_web1_1 ... done[root@server1 compose]# docker-compose logs web1
转载地址:http://cihzi.baihongyu.com/