Docker-Compose

Posted xue_yun_xiang

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Docker-Compose相关的知识,希望对你有一定的参考价值。

一、概述

Docker-Compose 是一个容器编排工具。

比如开发一个应用:运行需要 tomcat ,mysql +代码----》转化镜像
tomcat + 代码 一个镜像
mysql 一个镜像
两个镜像对应的容器 都要启动,mysql 对应的镜像先启动,
以上过程是通过手动方式 完成一系列容器的启动,让我们项目可以运行

我们可以通过 Docker-Compose 一键 启动所有的容器,并管理容器的依赖关系

二、Docker-Compose 安装

1、 将软件linuxdocker-compose-Linux-x86_64上传至linux

2、重命名 修改权限

[root@mastera ~]# mv docker-compose-Linux-x86_64  docker-compose
[root@mastera ~]# ls
a1.txt           hello-world.tar.gz                          test2     testzip
anaconda-ks.cfg  jdk-8u211-linux-x64.tar.gz                  test3
docker-compose   mysql80-community-release-el7-3.noarch.rpm  testtar
dockerfile_test  test1_backup                                testtar2
[root@mastera ~]# chmod 777 docker-compose 

3、配置环境变量

[root@mastera ~]# mv docker-compose /usr/local/bin/
[root@mastera ~]# ls /usr/local/bin/
docker-compose
[root@mastera ~]# vim /etc/profile

![在这里插入图片描述](https://img-blog.csdnimg.cn/20210527193608901.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3h1ZV95dW5feGlhbmc=,size_16,color_FFFFFF,t_70)


[root@mastera ~]# source /etc/profile  # 让环境变量刷新 生效

4、docker-compose 命令

[root@mastera ~]# docker-compose up    #在当前目录创建启动容器 需要当前目录有 docker-compose.yaml

[root@mastera ~]# docker-compose down #删除 容器 镜像 网络 数据卷 当前目录下docker-compose.yaml 中的容器

[root@mastera ~]# docker-compose stop  #停止容器/服务  当前目录下docker-compose.yaml 中的容器

[root@mastera ~]# docker-compose start # 重新启动容器 当前目录下docker-compose.yaml 中的容器
[root@mastera ~]# docker-compose  ps   # 列出当前目录下docker-compose.yaml 中的容器

5、docker-compose.yaml 用来编排容器的依赖关系

[root@mastera ~]# mkdir java2102
[root@mastera ~]# cd java2102/
[root@mastera java2102]# ls
[root@mastera java2102]# mkdir docker-compose-test1
[root@mastera java2102]# cd docker-compose-test1/
[root@mastera docker-compose-test1]# ls
[root@mastera docker-compose-test1]# vim docker-compose.yaml
version: '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_mysql_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_mysql_tomcat/tomcat_webapps:/usr/local/tomcat/webapps
      - /opt/docker_mysql_tomcat/tomcat_logs:/usr/local/tomcat/logs`

三、启动

1、保证端口 不冲突,没有一运行的容器占用 端口

[root@mastera docker-compose-test1]# docker rm -f $(docker ps -aq)
3a1c6d182708
6cf5e7879325
373edd742942
[root@mastera docker-compose-test1]# docker ps -a
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES
[root@mastera docker-compose-test1]# docker-compose up  # 前台运行

[root@mastera docker-compose-test1]# docker-compose up -d  # 后台运行

2、显示所有docker-compose.yaml 配置的容器

[root@mastera docker-compose-test1]# docker-compose ps
 Name               Command               State                    Ports                  
------------------------------------------------------------------------------------------
mysql    /entrypoint.sh mysqld --da ...   Up      0.0.0.0:3306->3306/tcp,:::3306->3306/tcp
tomcat   catalina.sh run                  Up      0.0.0.0:8080->8080/tcp,:::8080->8080/tcp

3、删除所有docker-compose.yaml 配置的容器

[root@mastera docker-compose-test1]# docker-compose down
Stopping mysql  ... done
Stopping tomcat ... done
Removing mysql  ... done
Removing tomcat ... done
Removing network docker-compose-test1_default

注意

docker 及docker-compose第一次 都尽量使用前台运行
因为他会打印,可以简单明了看到容器的运行状态,如果有错误可以及时发现

以上是关于Docker-Compose的主要内容,如果未能解决你的问题,请参考以下文章

Docker-compose容器

Docker-compose容器

docker-compose.yml文件

Docker-Compose介绍,安装和使用

“docker-compose”命令为 docker-compose.yml 文件设置路径

Docker快速入门——Docker-Compose