嘘~ 正在从服务器偷取页面 . . .

Docker 之Docker-Compose


Docker 之 Docker-Compose

一、产生背景

运行一个镜像,需要添加大量的参数。如果要运行不同发镜像还需要不同的参数。

容器增加使得使用 docker run 启动命令变得多繁琐。

通过Docker-Compose 可以进行批量的管理容器,配置参数。

只需要一个 docker-compose.yml 文件去维护即可。

二、下载、配置

1. github官网下载

Dockrer-Compose 的github发布地址:https://github.com/docker/compose

releases 中选择比较稳定的发布版本。

2、修改文件名

非必须,需要是为了使用命令方便。Docker-Compose 下载之后名称比较长,修改之后方便使用命令。

mv docker-compose-Linux-x86_64  /usr/local
cd /usr/local
mv docker-compose-Linux-x86_64 docker-compose
chmod 777  docker-compose

3、配置环境变量

非必须,需要是为了后续使用命令方便。为了可以在任意目录使用docker-Compose 命令,方便后续执行。

docker-compose 文件移动到 /usr/local/bin, 修改了 /etc/profile 文件,给/usr/local/bin 配置到 PATH 中。

mv docker-compose /usr/lcoal/bin
vi /etc/profile
export PATH=$JAVA_HOME:/usr/local/bin:$PATH
source /etc/profile

测试配置是否成功,在任意目录下执行 docker-compose

二 Docker-Compose 管理容器

1、YML文件

文件名称:docker-compose.yml

文件遵循YAML文件格式要求:key+":"+空格+value

换行+缩进的方式写多组值。

文件不要使用制表符。

2、示例

示例:Docker-Compose 管理Mysql和Tomcat容器

varsion: '3.1'
services: 
  mysql:             # 服务的名称
    restart: always  # 表示只要docker启动,这个服务就跟着一起启动
    image: daocloud.io/library/mysql:5.7.4   # 指定镜像来源路径
    container_name: mysql    # 指定容器名称
    ports:
      - 3306:3306  # 指定端口号映射
    environment:
      MYSQL_ROOT_PASSWORD: root    #指定Mysql的root用户登录密码
      TZ: Asia/Shanghai            #指定时区
    volumes:
      - /opt/docker_msql_tomcat/mysql_data:/var/lib/mysql  # 映射数据卷
  tomcat: 
    restart: always
    image: daocloud.io/library/tomcat:8.5.15-jre8    
    container_name: tomcat
    ports:
      - 8080:8080
    environment: 
      TZ: Asia/Shanghai
    volumes:
      - /opt/docker_msql_tomcat/tomcat_webapps:/var/local/tomcat/webapps
      - /opt/docker_msql_tomcat/tomcat_logs:/var/local/tomcat/logs

三.使用 docker-compose 命令管理

1、注意事项

在使用docker-compose 命令时,默认会在当前目录下找 docker-compose.yml 文件。

2、常见命令

基于 docker-compose.yml 启动管理的容器

docker-compose up -d

关闭并删除容器

docker-compose down

开启|关闭|重启 已经存在的由docker-compose维护的容器

docker-compose start
docker-compose stop 
docker-compose restart

查看由docker-compose维护的容器

docker-compose  ps

查看由docker-compose维护的容器的日志

docker-compose  logs  -f

四.Docker-compose配置Dockerfile 使用

使用 docker-compose.yml 文件以及 Dockerfile 文件再生产自定义的镜像的同时启动当前镜像,并且由Docker-compose去管理容器。

1、yml文件

version: '3.1'
services:
  tomcat_dcdf: 
    restart: always
    build:             # 构建自定义镜像
      context: ../     # 指定Dockerfile文件所在路径,../表示上级目录
      dockerfile: Dockerfile   # 指定Dockerfile文件名称
    image: tomcat_dcdf:1.0.1    # 构建生成的镜像文件名称
    container_name: tomcat_dcdf
    ports:
      - 8081:8080
    environment: 
      TZ: Asia/Shanghai

2、Dockerfile 文件

FROM daocloud.io/library/tomcat:8.5.15-jre8  
CP  test.war /var/local/tomcat/webapps

目录层级

  • docker_tomcat_dcdf
    |–+ docker-compose
    | |– docker-compose.yml
    |– dockerfile
    |– test.war

注意,测试test.war,需要先用客户端连接mysql,创建test 数据库。

3、执行构建/启动命令

一定要在 docker-compse 目录执行,docker-compose.yml 在这个目录。

docker-compse up -d

因为:在使用docker-compose 命令时,默认会在当前目录下找 docker-compose.yml 文件。

注意:

docker-compse up -d : 可以直接启动基于docker-compose.yml 文件以及 Dockerfile 文件构建的自定义镜像。 如果自定义镜像不存在, docker-compose 会自动构建出自定义镜像,如果自定义镜像已经存在, docker-compose 会直接运行这个自定义镜像。

如果需要重新构建自定义镜像,执行:

 docker-compose build

如果需要在运行之前,重新构建自定义镜像,执行:

 docker-compose up  -d  --build

4、自建示例

示例一:Docker-compose 管理Nginx

yml文件:

version: '3.1'
services:
  nginx: 
    restart: always
    image: daocloud.io/library/nginx:latest
    container_name: nginx
    ports:
      - 80:80
    volumes:
      - /opt/docker_nginx/conf.d/:etc/nginx/conf.d


版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 Small-Rose / 张小菜 !
评论
  目录