Centos 7.4上安装配置docker-compose快速入门

docker是容器技术,不是虚拟化,它使得每个安装到系统上的服务彼此隔离,又可以彼此通讯;互不干扰,又可以互相协作。它相比以前直接在系统上安装软件,更少的依赖,冲突,也更加干净。我也已经在docker上有了半年左右的实践,相见恨晚,写下这个入门的教材,基于Centos 7.3/Centos 7.4。

docker有两个版本:Community Edition (CE) 和 Enterprise Edition (EE),支持Linux,window,MacOS平台

社区版用于开发和小团队体验基于容器的应用;Docker CE还包括两个更新频道:stable and edge
Stable 每个季度发布一个稳定版本
Edge 每个月发布一个功能版本

企业版用于企业开发,大型应用开发,构建,运行商业级别的大型应用,它包括收费的功能

1. 安装
一个新安装的Centos 7.4首先安装两个小工具
$ sudo yum -y install net-tools wget

必要的组件的安装
$ sudo yum install -y yum-utils \
  device-mapper-persistent-data \
  lvm2

设置稳定版的下载源  
$ sudo yum-config-manager \
    --add-repo \
    https://download.docker.com/linux/centos/docker-ce.repo

安装,启动,开机启动
$ sudo yum install docker-ce
$ sudo systemctl start docker
$ sudo chkconfig docker on

2. docker-compose
使用docker-compose管理容器更加方便,尤其在一台机器上需要安装多个容器的情况下,尤为有用,它可以指定容器名字来彼此访问,相比容器间用IP访问,减少了出错,因为每次容器启动,IP可能变化。

安装docker-compose
$ sudo curl -L https://github.com/docker/compose/releases/download/1.16.1/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose

赋予执行权限
$ sudo chmod +x /usr/local/bin/docker-compose

查看版本
$ docker-compose --version

3. 下载redis做测试
$ docker pull redis

4. docker-compose.yml
我使用/root作为工作目录,然后在下面创建docker-compose.yml文件,内容如下
version: '3'
services:
redis:
image: "redis:latest"
ports:
- "6379:6379"
container_name: redis
volumes:
- /docker/redis/conf/redis.conf:/usr/local/etc/redis/redis.conf
- /docker/redis/data:/data
command: redis-server /usr/local/etc/redis/redis.conf

5. 启动、停止
在先前创建docker-compose.yml文件的工作目录,执行启动,停止命令
$ docker-compose up -d
$ docker-compose stop


6. 更多
使用docker-compose启动容器,如何让容器之间互相访问呢,我下面给出一份更加实战的docker-compose.yml文件,包括redis,一个网站,一个mysql,一个nginx,nginx将请求转发到网站,它使用web容器的名字作为地址转发,如下
version: '3'
services:
redis:
image: "redis:latest"
ports:
- "6379:6379"
container_name: redis
volumes:
- /docker/redis/conf/redis.conf:/usr/local/etc/redis/redis.conf
- /docker/redis/data:/data
command: redis-server /usr/local/etc/redis/redis.conf
mysql:
image: "mysql:latest"
ports:
- "3306:3306"
container_name: mysql
environment:
MYSQL_ROOT_PASSWORD: hm3306
volumes:
- /docker/mysql/data:/var/lib/mysql
- /docker/mysql/conf:/etc/mysql/conf.d
web:
image: webapp:latest
build: ./publish
ports:
- "5000:5000"
container_name: web
volumes:
- /docker/web/wwwroot:/public/wwwroot
command: dotnet WebApplication12.dll
nginx:
image: nginx:latest
ports:
- "80:80"
container_name: nginx
volumes:
- /docker/nginx/conf/nginx.conf:/etc/nginx/nginx.conf:ro
links:
- web

nginx配置如下,使用容器名+端口作为地址
location / {
proxy_pass http://web:5000;
}
nginx配置节点有links项,用来连接web网站的,所有在nginx配置文件就可以直接用web作为IP使用,如上的配置所示。
Posted by 何敏
on 2017/09/21 09:53:00
Copyright ©2018 程序员网址导航 粤ICP备14091834号