2018-12-31docker && docker-compose

docker-compose

接下来介绍另一种方法docker-compose

上面介绍了用纯docker 命令启动容器,链接容器,但是每次启动容器时都要填写一堆参数,难免容易出错,出错了之后还要删除该容器才能重新跑。接下来就介绍一下 docker-compose.

一个使用Docker容器的应用,通常由多个容器组成。使用Docker Compose,不再需要使用shell脚本来启动容器。在配置文件中,所有的容器通过services来定义,然后使用docker-compose脚本来启动,停止和重启应用,和应用中的服务以及所有依赖服务的容器。

首先安装docker-compose

// 安装pip

sudo yum install epel-release

sudo yum install -y python-pip

//使用pip 安装

sudo pip install -U docker-compose

Compose的默认配置文件是docker-compose.yml。让我们看看下面这个文件:

nginx:  build: ./nginx  ports:    - "80:80"  links:    - "phpfpm"  volumes:    - /home/tanhui/composeTest/code/:/var/www/html/    - /home/tanhui/composeTest/nginx/conf/default.conf:/etc/nginx/conf.d/default.confphpfpm:  build: ./phpfpm  ports:    - "9000:9000"  volumes:    - ./code/:/var/www/html/  links:    - "mysql"mysql:  build: ./mysql  ports:    - "3306:3306"  volumes:    - /home/tanhui/composeTest/mysql/data/:/var/lib/mysql/  environment:    MYSQL_ROOT_PASSWORD : 123456

以上的配置文件路径有绝对路径,有相对路径,build 参数代表该路径下的Dockerfile

先看一下大概的目录结构

$ tree composeTest

composeTest

├── code

│  ├── index.php

│  ├── mysql.php

│  └── testmysql.php

├── docker-compose.yml

├── index.php

├── mysql

│  ├── data

│  │  ├── auto.cnf

│  │  ├── ibdata1

│  │  ├── ib_logfile0

│  │  ├── ib_logfile1

│  │  ├── mysql [error opening dir]

│  │  ├── performance_schema [error opening dir]

│  │  └── test_db [error opening dir]

│  └── Dockerfile

├── nginx

│  ├── conf

│  │  └── default.conf

│  └── Dockerfile

└── phpfpm

    └── Dockerfile

10 directories, 23 files

// Dockerfile 如下

$ cat composeTest/mysql/Dockerfile

FROM mysql:5.6

# tanhui @ localhost in ~ [20:57:51]

$ cat composeTest/phpfpm/Dockerfile

FROM  php:5.6-fpm

RUN apt-get update && apt-get install -y \

libfreetype6-dev \

libjpeg62-turbo-dev \

libpng12-dev \

vim \

&& docker-php-ext-install pdo_mysql \

&& docker-php-ext-configure gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/ \

&& docker-php-ext-install gd \

# tanhui @ localhost in ~ [20:58:19]

$ cat composeTest/nginx/Dockerfile

FROM nginx:latest

RUN apt-get update && apt-get install -y vim

现在运行这三个容器只要使用命令  docker-compose up -d



yum update 

yum  remove docker  docker-common docker-selinux docker-engine

yum install -y yum-utils  device-mapper-persistent-data lvm2

yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

yum list docker-ce --showduplicates|sort -r 

yum install docker-ce-18.03.1.ce -y

systemctl start docker

systemctl enable docker

vi /etc/docker/daemon.json

{

    "registry-mirrors": ["http://hub-mirror.c.163.com"]

}

docker-compose的安装通过pip安装

yum -y install epel-release

yum -y install python-pip

pip --version

pip 8.1.2 from /usr/lib/python2.7/site-packages (python 2.7)

pip install docker-compose==1.22

如果报错:

pip uninstall urllib3

pip uninstall chardet

pip install requests

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容