Docker 简介

Docker 是一个开源的应用容器引擎

Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化

Docker 使用

Dockerfile 使用

docker-compose 简介

docker-compose 项目是 Docker 官方的开源项目,负责实现对 Docker 容器集群的快速编排。

docker-compose 将所管理的容器分为三层,分别是工程(project),服务(service)以及容器(container)。

docker-compose 实践

利用 docker-compose.yml 对容器进行编排,实现 LNMPGO 等本地开发环境的极速搭建,项目 - 传送门

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 即可启动所有容器。