Docker 简介
Docker
是一个开源的应用容器引擎
Docker
可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化
Docker 使用
Dockerfile 使用
docker-compose 简介
docker-compose
项目是 Docker 官方的开源项目,负责实现对 Docker 容器集群的快速编排。
docker-compose
将所管理的容器分为三层,分别是工程(project
),服务(service
)以及容器(container
)。
docker-compose 实践
利用 docker-compose.yml 对容器进行编排,实现 LNMP
、GO
等本地开发环境的极速搭建,项目 - 传送门。
version: "2.0"
services:
devcmd:
build:
context: ./images/ubuntu
dockerfile: Dockerfile
image: devcmd:1.0
container_name: devcmd
hostname: devcmd
tty: true
ports:
- "32:22"
networks:
- devnet
volumes:
- "./www:/var/www/html"
devmysql:
image: mysql:5.7
container_name: devmysql
hostname: devmysql
ports:
- "3316:3306"
networks:
- devnet
volumes:
- "./images/mysql/data:/var/lib/mysql"
- "./images/mysql/config/mysqld.cnf:/ect/mysql/mysql.conf.d/mysqld.cnf"
environment:
MYSQL_ROOT_PASSWORD: root123
MYSQL_DATABASE: test
MYSQL_USER: web
MYSQL_PASSWORD: web123
TZ: Asia/shanghai
devphp:
build:
context: ./images/php
dockerfile: Dockerfile
image: devphp:1.0
container_name: devphp
hostname: devphp
ports:
- "9000:9000"
networks:
- devnet
volumes:
- "./www:/var/www/html"
- "./images/php/config:/usr/local/etc/php"
environment:
TZ: Asia/shanghai
devnginx:
image: nginx:1.14
container_name: devnginx
hostname: devnginx
ports:
- "90:80"
- "443:443"
networks:
- devnet
depends_on:
- devphp
volumes_from:
- devphp
volumes:
- "./images/nginx/config:/etc/nginx/conf.d"
- "./images/nginx/log:/var/log/nginx"
devredis:
image: redis:5.0
container_name: devredis
hostname: devredis
ports:
- "6389:6379"
networks:
- devnet
volumes:
- "./images/redis/data:/var/lib/redis"
- "./images/redis/config:/etc/redis/config"
- "./images/redis/log:/var/log/redis"
command: redis-server /etc/redis/config/redis.conf --appendonly yes
devgo:
build:
context: ./images/golang
dockerfile: Dockerfile
image: devgo:1.0
container_name: devgo
hostname: devgo
tty: true
networks:
- devnet
volumes:
- "./www:/var/www/html"
- "./images/golang/path:/go"
networks:
devnet:
项目目录结构如下:
克隆该项目之后,启动 Docker 服务,然后执行 docker-compose up --build -d 即可启动所有容器。