Docker專題(十一)-Docker-Compose

1.Compose簡介

在這裏插入圖片描述
Compose項目是Docker官方的開源項目,負責實現對Docker容器集羣的快速編排。它是一個定義和運行多容器的docker應用工具。使用compose,你能通過YMAL文件配置你自己的服務,然後通過一個命令,你能使用配置文件創建和運行所有的服務。

Compose的代碼主要使用Python編寫,其開源地址爲:https://github.com/docker/compose

我們知道在Docker中構建自定義的鏡像是通過使用Dockerfile模板文件來實現的,從而可以讓用戶很方便定義一個單獨的應用容器。而Compose使用的模板文件就是一個YAML格式文件,它允許用戶通過一個docker-compose.yml來定義一組相關聯的應用容器爲一個項目(project)。

2. 下載並安裝Docker-Compose

2.1.下載地址

去github.com去搜索docker-compose項目(docker官方提供的)
https://github.com/docker/compose/releases/
在這裏插入圖片描述
https://github.com/docker/compose/releases/download/1.24.1/docker-compose-Linux-x86_64

在這裏插入圖片描述

2.2.安裝Docker-Compose

將下載好的內容複製到Linux操作系統中
在這裏插入圖片描述
將docker-compose-Linux-x86_64改名字docker-compose

mv docker-compose-Linux-x86_64 docker-compose

修改docker-compose文件的權限.

chmod 111 docker-compose

在這裏插入圖片描述
先將docker-compose文件放到/usr/local/docker-compose下.

cd /usr/local/
mkdir docker-compose
cd docker-compose
mv docker-compose /usr/local/docker-compose

在這裏插入圖片描述
配置docker-compose的環境變量.

vi /etc/profile
	shift + g
	export PATH=/usr/local/docker-compose:$PATH
	esc
	shift + zz
source /etc/profile	

跳轉到任意路徑,輸入docker-compose彈出提示即可. (如果出文找到命令,環境變量的問題.)

docker-compose -v

在這裏插入圖片描述

3. 採用docker-compose管理MySQL&Tomcat

3.1.管理MySQL

新建一個目錄mysql-compose

[root@VM_0_15_centos opt]# mkdir mysql-compose

在mysql-compose目錄下創建一個docker-compose.yml文件,全部的信息都寫在裏面,使用docker-compose運行容器即可.

version: '3.1'                        # 版本號,根據docker-compose版本不同,可以書寫的內容也不同.
services: 
  mysql:                              # 服務的名稱
    restart: always                   # 啓動docker後,自動運行當前容器.
    image: daocloud.io/library/mysql:5.7.24   # 指定鏡像的路徑
    container_name: mysql             # 容器的名稱
    ports:
      - 3306:3306                     # 映射的端口號
    environment:
      TZ: Asia/Shanghai               # 指定時區
      MYSQL_ROOT_PASSWORD: root       # 指定root用戶的密碼.
    volumes:
      - /opt/docker_mysql/data:/var/lib/mysql    # 數據卷的映射
    command: 
      --character-set-server=utf8mb4  # 指定一些命令 

在docker-compose.yml文件中,不要書寫製表符

3.2.docker-compose常用命令

  1. 啓動
docker-compose up -d
  1. 關閉並刪除容器.
docker-compose down
  1. 啓動已經存在的容器
docker-compose start
  1. 關閉當前容器
docker-compose stop
  1. 查看當前容器的日誌
docker-compose logs -f
  1. 查看docker-compose正在管理的全部容器
docker-compose ps

基於docker-compose.yml文件管理容器. (一定要在docker-compose.yml文件所在目錄下執行)

3.3 管理Tomcat

version: '3.1'
services: 
  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_tomcat_webapps:/usr/local/tomcat/webapps
      - /opt/docker_tomcat_logs:/usr/local/tomcat/logs

3.4 docker-compose配置Dockerfile一起使用

在這裏插入圖片描述
在docker-compose目錄下來,創建docker-compose.yml

通過docker-compose管理使用Dockerfile生成的自定義鏡像.

version: '3.1'
services:
  ssm:
    restart: always
    build:
      context: ../                  # 指定Dockerfile所在的路徑
      dockerfile: Dockerfile        # 指定Dockerfile文件名稱
    image: ssm:2.0                  # 鏡像名稱
    container_name: ssm_dockerfile
    ports:
      - 8081:8080
    environment:
      TZ: Asia/Shanghai

啓動docker-compose

[root@VM_0_15_centos docker-compose]# docker-compose up -d
Creating network "docker-compose_default" with the default driver
Building ssm
Step 1/5 : FROM daocloud.io/library/tomcat:8.5.15-jre8
 ---> b8dfe9ade316
Step 2/5 : MAINTAINER bruce<[email protected]
 ---> Using cache
 ---> eca5deeb9e33
Step 3/5 : ADD oa.war /usr/local/tomcat/webapps/
 ---> b350262344bd
Removing intermediate container 0b2ba1e32626
Step 4/5 : EXPOSE 8080
 ---> Running in aae0e0b8e921
 ---> b6e253fe9f65
Removing intermediate container aae0e0b8e921
Step 5/5 : CMD /usr/local/tomcat/bin/startup.sh && tail -F /usr/local/tomcat/logs/catalina.out
 ---> Running in 4a49a76c8f90
 ---> 8636f7e169ec
Removing intermediate container 4a49a76c8f90
Successfully built 8636f7e169ec
WARNING: Image for service ssm was built because it did not already exist. To rebuild this image you must use `docker-compose build` or `docker-compose up --build`.
Creating ssm_dockerfile ... done

查看容器:

[root@VM_0_15_centos docker-compose]# docker ps -a
CONTAINER ID        IMAGE                                    COMMAND                  CREATED             STATUS                           PORTS                               NAMES
1b9d0da1be61        ssm:2.0                                  "/bin/sh -c '/usr/..."   6 seconds ago       Up 5 seconds                     0.0.0.0:8081->8080/tcp              ssm_dockerfile
21027369d880        be4fbd9eb89c                             "/bin/sh -c '/usr/..."   About an hour ago   Up About an hour                 0.0.0.0:9080->8080/tcp              ssm1.0
17007245daed        ee26c4ea7d56                             "/bin/sh -c 'yum -..."   About an hour ago   Exited (127) About an hour ago                                       elated_darwin
098a7ada822c        daocloud.io/library/tomcat:8.5.15-jre8   "catalina.sh run"        14 hours ago        Up About an hour                 0.0.0.0:8080->8080/tcp              tomcat
da9a62e80aaa        daocloud.io/library/mysql:5.7.24         "docker-entrypoint..."   14 hours ago        Up About an hour                 0.0.0.0:3306->3306/tcp, 33060/tcp   mysql

測試容器:
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章