Docker Compose

目录

什么是Docker Compose

Docker Compose的安装

文件格式的以及编写注意事项

常用字段

常用命令

运行

前台运行

后台运行

重新构建运行

关闭

关闭指定容器

全部关闭

启动

启动指定容器

全部启动

重启

重启指定容器

全部重启

删除

Docker Compose示例


什么是Docker Compose

        Docker Compose 的前身是 Fig,它是一个定义及运行多个 Docker 容器的工具。使用 Docker Compose 时,只需要在一个配置文件中定义多个 Docker 容器,然后使用一条命令启动这些容器。Docker Compose 会通过解析容器间的依赖关系按先后顺序启动所定义的容器。

Docker Compose的安装

有可能因为网络的原因下载不下来,可以评论区联系我,我直接发出来

[root@localhost ~]# curl -L "https://github.com/docker/compose/releases/download/1.24.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

[root@localhost ~]# chmod +x /usr/local/bin/docker-compose
[root@localhost ~]# ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose

[root@localhost ~]# docker-compose --version

文件格式的以及编写注意事项

        YAML 是一种标记语言,它可以很直观的展示数据序列化格式,可读性高。类似于 XML数据描述语言,语法比 XML 简单的很多。YAML 数据结构通过缩进来表示,连续的项目通过减号来表示,键值对用冒号分隔,数组用中括号([])括起来, hash 用花括号({})括起来

使用 YAML 时需要注意下面事项:

(1)不支持制表符 tab 键缩进,需要使用空格缩进。

(2)通常开头缩进两个空格。

(3)字符后缩进一个空格,如冒号、逗号、横杆。

(4)用#号注释。

(5)如果包含特殊字符,要使用单引号('')引起来。

(6)布尔值(true、 false、 yes、 no、 on、 off)必须用引号("")括起来,这样分析器会将它们解释为字符串。

常用字段

字段

描述

build  dockerfile  context

指定Dockerfile文件名构建镜像上下文路径

image

指定镜像

command

执行命令,覆盖默认命令

container name

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

deploy

指定部署和运行服务相关配置,只能在Swarm模式使用

environment

添加环境变量

networks

加入网络

ports

暴露容器端口,与-p相同,但端口不能低于60

volumes

挂载宿主机路径或命令卷

restart

重启策略,默认no,always,no-failure,unless-stoped

常用命令

字段

描述

build

重新构建服务

ps

列出容器

up

创建和启动容器

exec

在容器里面执行命令

scale

指定一个服务容器启动数量

top

显示容器进程

logs

查看容器输出

down

删除容器、网络、数据卷和镜像

stop/start/restart

停止/启动/重启服务

运行

前台运行

docker-compose up

后台运行

docker-compose up -d

重新构建运行

docker-compose up --build -d

关闭

关闭指定容器

docker-compose stop <容器名称>
# 示例:
docker-compose stop nginx

全部关闭

docker-compose stop

启动

启动指定容器

docker-compose start <容器名称>
# 示例:
docker-compose start nginx

全部启动

docker-compose start

重启

重启指定容器

docker-compose restart <容器名称>
# 示例:
docker-compose restart nginx

全部重启

docker-compose restart

删除

docker-compose down

Docker Compose示例

[root@bogon ~]# mkdir demo
[root@bogon ~]# cd demo/
[root@bogon demo]# mkdir nginx
[root@bogon demo]# wget -P nginx/ http://nginx.org/download/nginx-1.15.2.tar.gz
[root@bogon demo]# cat nginx/Dockerfile
FROM centos:7.6.1810
RUN yum -y install gcc make pcre-devel zlib-devel tar zlib
ADD nginx-1.15.2.tar.gz /usr/src/
RUN cd /usr/src/nginx-1.15.2 \
&& mkdir /usr/local/nginx \
&& ./configure --prefix=/usr/local/nginx && make && make install \
&& ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/

RUN rm -rf /usr/src/nginx-1.15.2
EXPOSE 80 
EXPOSE 443

CMD ["nginx","-g","daemon off;"]

[root@bogon demo]# mkdir mysql
[root@bogon demo]# cat mysql/Dockerfile
# 指定基础镜像
FROM hub.c.163.com/library/mysql:5.7
# 修改编码方式
RUN echo "character-set-server=utf8" >> /etc/mysql/mysql.conf.d/mysqld.cnf
RUN service mysql restart
EXPOSE 3306

[root@bogon demo]# echo 'MYSQL_ROOT_PASSWORD=root' > mysql/mysql.env
[root@bogon demo]# cat docker-compose.yaml 
# 指定本 yml 依从的 compose 哪个版本制定的
version: "3"
# 定义服务,此处定义了两个服务一个nginx一个redis
services:
  nginx:
    # 指定为构建镜像上下文路径
    ## 我这里在docker-compose.yml文件的上一级目录有一个nginx目录,nginx目录下有准备好的dockerfile所以这里直接指定../nginx
    build: ./nginx
    # 启动的时候先启动redis和mysql
    depends_on:
      - redis
      - mysql
    # 指定端口号
    ports:
      - "80:80"
  redis:
    # 该 redis 服务使用 Docker Hub 的公共 Redis 映像
    image: "redis:alpine"
    ports:
      - "6379:6379"
  mysql:
    # 指定为构建镜像上下文路径
    build:
      # 指定目录
      context: ./mysql
      # 指定dockerfile文件名,一般适用于dockerfile的文件名不叫Dockerfile
      dockerfile: Dockerfile
    # 从文件添加环境变量
    env_file:
      - ./mysql/mysql.env
    ports:
      - "3306:3306"
# 通过docker-compose运行
[root@bogon demo]# docker-compose up –d
# 查看容器运行情况
[root@bogon demo]# docker-compose ps
    Name                  Command               State               Ports            
-------------------------------------------------------------------------------------
demo_mysql_1   docker-entrypoint.sh mysqld      Up      0.0.0.0:3306->3306/tcp,:::330
                                                        6->3306/tcp                  
demo_nginx_1   nginx -g daemon off;             Up      443/tcp, 0.0.0.0:80->80/tcp,:
                                                        ::80->80/tcp                 
demo_redis_1   docker-entrypoint.sh redis ...   Up      0.0.0.0:6379->6379/tcp,:::637
                                                        9->6379/tcp         

  • 7
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值