Docker-compose

本文详细介绍了Docker Compose的用途、YAML文件格式要求、常用配置字段及命令,以及提供了安装教程,帮助读者一站式掌握Docker Compose的使用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

一、概述

二、YAML文件的格式要求

三、Docker compose配置常用字段

四、Docker compose常用命令(yaml文件中的参数)

五、安装Docker compose

1、下载

2、 创建“.yaml”文件

3、创建Dockerfile文件

4、制作镜像

5、和下篇博客一起综合应用


一、概述

Docker可以将应用程序及环境很方便的以容器的形式启动,但当应用程序依赖的服务比较多,或是遇到一个大系统拆分的服务很多时,如果还一个一个的根据镜像启动容器,那就有点累人了,到这有很多小伙伴会说:弄个脚本就搞定啦;要的就是这个思路,Docker提供了一个叫Docker Compose的工具。

Docker Compose 是一个用于定义和运行多个容器服务的 Docker 应用程序工具;搭配使用 YAML 文件来配置应用程序服务,然后运行Docker Compose命令,一键启动所有容器服务

二、YAML文件的格式要求

①、层级分明:使用首部空格代表层级关系

②、使用键值对key-value来表示参数,可以是一个key-value或者key-values

③、使用#号代表注释

④、不知道Tab制表符

⑤、“-”、“:”后面的valuesu需要空一格

⑥、一个yaml文件中,可以定义多i个资源模块

三、Docker compose配置常用字段

字段描述
build 、dockerfile 、context指定Dockerfile文件名构建镜像上下文路径
image指定镜像
command执行命令,覆盖默认命令
container name

指定容器名称,由于容器名称是唯一的,如果指定自定义名称,则无法scale

deploy指定部署和运行服务相关配置,只能在Swarm模式使用
environment添加环境变量
networks加入网络
ports暴露容器端口,与-p相同,但端口不能低于60
volumes挂载宿主机路径或命令卷
restart重启策略,默认no,always,no-failure,unless-stoped
hostname容器主机名

四、Docker compose常用命令(yaml文件中的参数)

字段描述
build重新构建服务
ps列出容器
exec

在容器里面执行命令

scale指定一个服务容器的启动数量
top显示容器进程
logs查看容器输出
down删除容器、网络、数据卷和镜像
up创建和启动容器
stop/start/restart停止/启动/重启网络

五、安装Docker compose

1、下载

### 下载

[root@zwb_docker ~]# curl -L https://github.com/docker/compose/releases/download/1.14.0/docker-compose-`uname -s`-`uname -m` >/usr/local/bin/docker-compose

###  给与执行权限

[root@zwb_docker docker_compose]# cd /usr/local/bin/
[root@zwb_docker bin]# chmod +x docker-compose 
[root@zwb_docker bin]# ll
总用量 8092
-rw-r--r-- 1 root root       9 10月 22 01:00 docker
-rwxr-xr-x 1 root root 8278112 10月 22 01:06 docker-compose

[root@zwb_docker bin]# yum -y install tree.x86_64   ## 安装一个tree的小工具

2、 创建“.yaml”文件

[root@zwb_docker bin]# cd /
[root@zwb_docker /]# mkdir docker_compose
[root@zwb_docker /]# cd docker_compose/
[root@zwb_docker docker_compose]# vim docker-compose.yaml

version: '3'
services:
  nginx:
    hostname: nginx
    build:
      context: ./nginx
      dockerfile: Dockerfile
    ports :
      - 1100:80
      - 1111:443
    networks:
      - mynet
    volumes:
      - ./wwwroot/:/usr/local/nginx/html
networks:
  mynet: 

 

3、创建Dockerfile文件

[root@zwb_docker docker_compose]# mkdir nginx
[root@zwb_docker docker_compose]# cd nginx/
[root@zwb_docker nginx]# vim Dockerfile
FROM centos:7 as build
ADD nginx-1.15.9.tar.gz /mnt
WORKDIR /mnt/nginx-1.15.9
RUN yum -y install -y gcc pcre pcre-devel devel zlib-devel make &> /dev/null && \
 yum clean all &&\
 sed -i 's/CFLAGS="$CFLAGS -g"/#CFLAGS="$CFLAGS -g"/g' auto/cc/gcc && \
 ./configure --prefix=/usr/local/nginx &> /dev/null && \
 make &>/dev/null && \
 make install &>/dev/null && \
 rm -fr /mnt/nginx-1.15.9

FROM centos:7
EXPOSE 80
VOLUME ["/usr/local/nginx/html"]
COPY --from=build /usr/local/nginx /usr/local/nginx
CMD ["/usr/local/nginx/sbin/nginx","-g","daemon off"]


[root@zwb_docker nginx]# rz -E

[root@zwb_docker docker_compose]# tree ./
./
├── docker-compose.yaml                     ## 创建模板脚本
└── nginx                                
    ├── Dockerfile                          ## 创建容器脚本
    └── nginx-1.15.9.tar.gz                 ## 复制源码包

4、制作镜像

[root@zwb_docker docker_compose]# docker-compose -f docker-compose.yaml up -d
Building nginx
Step 1/9 : FROM centos:7 as build
 ---> eeb6ee3f44bd
Step 2/9 : ADD nginx-1.15.9.tar.gz /mnt
 ---> Using cache
 ---> 149e658c2e1d
Step 3/9 : WORKDIR /mnt/nginx-1.15.9
 ---> Using cache
 ---> a365b54d24c5
Step 4/9 : RUN yum -y install -y gcc pcre pcre-devel devel zlib-devel make &> /dev/null && yum clean all &&  sed -i 's/CFLAGS="$CFLAGS -g"/#CFLAGS="$CFLAGS -g"/g' auto/cc/gcc &&  ./configure --prefix=/usr/local/nginx &> /dev/null &&  make &>/dev/null &&  make install &>/dev/null &&  rm -rf /mnt/nginx-1.15.9
 ---> Running in 6153d1abc8e0
Loaded plugins: fastestmirror, ovl
Cleaning repos: base extras updates
Cleaning up list of fastest mirrors
Removing intermediate container 6153d1abc8e0
 ---> a4abe0a5169a
Step 5/9 : FROM centos:7
 ---> eeb6ee3f44bd
Step 6/9 : EXPOSE 80
 ---> Running in 9524a8a858fa
Removing intermediate container 9524a8a858fa
 ---> c1953914c36b
Step 7/9 : VOLUME ["/usr/local/nginx/html"]
 ---> Running in ccbd7c499894
Removing intermediate container ccbd7c499894
 ---> fd9487e9f332
Step 8/9 : COPY --from=build /usr/local/nginx /usr/local/nginx
 ---> fcb219e09061
Step 9/9 : CMD ["/usr/local/nginx/sbin/nginx","-g","daemon off"]
 ---> Running in d29d1f145a05
Removing intermediate container d29d1f145a05
 ---> b300a241d07e
Successfully built b300a241d07e
Successfully tagged dockercompose_nginx:latest
WARNING: Image for service nginx was built because it did not already exist. To rebuild this image you must use `docker-compose build` or `docker-compose up --build`.
Creating dockercompose_nginx_1 ... 
Creating dockercompose_nginx_1 ... done

5、和下篇博客一起综合应用

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值