菜单 学习猿地 - LMONKEY

VIP

开通学习猿地VIP

尊享10项VIP特权 持续新增

知识通关挑战

打卡带练!告别无效练习

接私单赚外块

VIP优先接,累计金额超百万

学习猿地私房课免费学

大厂实战课仅对VIP开放

你的一对一导师

每月可免费咨询大牛30次

领取更多软件工程师实用特权

入驻
2287
2

Docker 容器学习

原创
05/13 14:22
阅读数 2938

一、Docker 容器的安装

# mac 环境安装
$ brew cask install docker

# centos7 环境安装
$ sudo yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-selinux \
                  docker-engine-selinux \
                  docker-engine

# Ubuntu 环境安装
$ wget -qO- https://get.docker.com/ | sh  获取最新版本的 Docker 安装包
$ sudo service docker start 启动服务

docker rm `docker ps -aq`  清除容器与镜像关系

二、操作命令

    1、docker images 查看当前存放镜像
    2、docker ps 查看当前运行的容器
    3、docker ps --all 查看当前所有容器
    4、docker rm <容器名称> 删除停止的容器
    5、docker rmi <镜像名称> 删除停止的镜像
    6、docker run -d -p 5000:5000 training/webapp python app.py 运行一个新的容器
        -d 容器后台运行
        -p 5000:5000 指定端口映射到本机
    7、docker port <容器名称>  查看容器端口号

三、使用docker搭建 lnmp 开发环境

    # 目录结构
    .
├── data
│   ├── mysql
│   └── redis
│       └── dump.rdb
├── dockerfile
│   ├── docker-compose.yml
│   ├── go
│   ├── mysql
│   ├── nginx
│   │   ├── Dockerfile
│   │   ├── conf.d
│   │   │   ├── default.conf
│   │   │   └── laravel.conf
│   │   └── nginx.conf
│   ├── php
│   │   ├── Dockerfile
│   │   ├── php-fpm.conf
│   │   ├── php.ini
│   │   └── pkg
│   │       └── redis.tgz
│   └── redis
│       └── Dockerfile
├── logs
│   ├── nginx
│   │   └── error.log
│   └── php-fpm
└── website

四、先安装nginx 建立nginxdockerfile文件

# 进入到 dockerfile/nginx 建立Dockerfile文件
FROM nginx  # 指定镜像 默认使用官方镜像

MAINTAINER zhouyao "994914376@qq.com"  # 作者

ENV TZ=Asia/Shanghai # 声明变量

# 更改时间为宿主机时间
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone  

五、安装php-fpm建立phpdockerfile文件

# 进入到 dockerfile/php 建立Dockerfile文件

FROM php:7.2-fpm # 指定php的版本
MAINTAINER zhouyao "994914376@qq.com" # 指定作者

# 设置时区
ENV TZ=Asia/Shanghai
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone

# 更新安装依赖包和 PHP 核心扩展
RUN apt-get update && apt-get install -y \
    git \
    libfreetype6-dev \
    libjpeg62-turbo-dev \
    libpng-dev \
    && docker-php-ext-configure gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/ \
    && docker-php-ext-install -j$(nproc) gd \
    && docker-php-ext-install zip \
    && docker-php-ext-install pdo_mysql \
    && docker-php-ext-install opcache \
    && docker-php-ext-install mysqli \
    && rm -r /var/lib/apt/lists/*

# 安装 redis 扩展
COPY ./pkg/redis.tgz ./home/redis.tgz  # 复制宿主机安装包到容器

# 安装PECL拓展 这里我们安装的是redis
RUN pecl install /home/redis.tgz && echo "extension=redis.so" > /usr/local/etc/php/conf.d/redis.ini

# 安装composer
ENV COMPOSER_HOME /root/composer
RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer
ENV PATH $COMPOSER_HOME/vendor/bin:$PATH

# 删除安装包
RUN rm -f /home/redis.tgz

# 远程连接时进入的默认目录
WORKDIR /data

# 修改用户账号信息
RUN usermod -u 1000 www-data

六、安装redis建立redisdockerfile文件

# 进入到 dockerfile/redis 建立Dockerfile文件

FROM redis:5.0 # 指定软件版本
MAINTAINER zhouyao "994914376@qq.com"
ENV TZ=Asia/Shanghai
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone

七、安装mysql建立mysqldockerfile文件

# 进入到 dockerfile/mysql 建立Dockerfile文件

FROM mysql:5.7 # 指定mysql的版本
ENV TZ=Asia/Shanghai
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone

八、上面的Dockerfile建立完毕我们建立docker-compose.yml文件

# 进入到dockerfile目录建立docker-compose.yml文件

version:  "3"
services:
    # php-fpm 服务
    php-fpm:
        build:  ./php # 执行dockerfile文件配置
        links: # 连接其它容器器
        - redis:redis
        - mysql:mysql
        ports: # 暴露端口到宿主机
            -  "9000:9000"
        volumes: # 挂载目录 把宿主机目录目录挂载到容器中持久化保存
            -  ../website:/data/www:rw
            -  ./php/php.ini:/usr/local/etc/php/php.ini:ro
            -  ./php/php-fpm.conf:/usr/local/etc/php-fpm.conf:ro
            -  ../logs/php-fpm:/var/log/php-fpm:rw
    restart:  always
    command:  php-fpm # 启动时执行的命令

    # nginx 服务
    nginx:
        build:  ./nginx # 执行dockerfile文件配置
        depends_on: # 优先级 先启动加载php-fpm容器
            -  php-fpm
        links: # 连接其它容器
            -  php-fpm:php-fpm
        volumes: # 挂载目录
            - ../website:/data/www:rw
            - ./nginx/conf.d:/etc/nginx/conf.d
            - ./nginx/nginx.conf:/etc/nginx/nginx.conf:ro
            - ../logs/nginx:/var/log/nginx
        ports: // 暴露端口
            -  "80:80"
            -  "8080:8080"
            -  "443:443"
        restart:  always
        command:  nginx -g 'daemon off;' # 运行时执行,必须要让pid = 1的进程为nginx不然容器会自动退出

    # redis 服务
    redis: 
        build:  ./redis
        ports:
            -  "6379:6379"
        volumes:
            -  ../data/redis:/data
        restart:  always

    # mysql 服务
    mysql:
        build:  ./mysql
        ports:
            -  "3306:3306"
        volumes:
            -  ../data/mysql:/var/lib/mysql:rw
            -  ../logs/mysql:/var/lib/mysql-logs:rw
            -  ./mysql/conf.d:/etc/mysql/conf.d:ro
        environment: # 设置数据库密码信息
            MYSQL_ROOT_PASSWORD:  123456
            MYSQL_DATABASE:  goframe
            MYSQL_USER:  root
            MYSQL_PASSWORD:  123456
        restart:  always
        command:  "--character-set-server=utf8"

注:宿主机执行 composer 命令

# -w /data/www/personal/zhubao 该地址为容器项目地址
docker-compose run --rm -w /data/www/personal/zhubao php-fpm composer require overtrue/laravel-wechat

最后奉上仓库地址
https://github.com/zhouyaozhouyao/docker-l...

发表评论

0/200
2287 点赞
2 评论
收藏
为你推荐 换一批