从零学习Docker部署环境

用docker手动配置 nginx + mysql + php


Docker

简介

Docker是一个开源的引擎,可以轻松的为任何应用创建一个轻量级的、可移植的、自给自足的容器。开发者在笔记本上编译测试通过的容器可以批量地在生产环境中部署,包括VMs(虚拟机)、bare metal、OpenStack 集群和其他的基础应用平台。

安装基础操作

1
2
3
sudo apt-get install -y docker.io #安装docker
service docker start #启动docker
service docker stop #关闭docker

image和container区别

image为镜像,container为容器,容器是基于镜像的。(docker run是从已有镜像中开启一个新容器)

环境配置

配置Docker加速器

daocloud注册登录后会有类似

1
curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s http://xxxxxxxx.m.daocloud.io

然后

1
sudo systemctl restart docker.service

1
sudo docker pull ubuntu #不指定版本(如: ubuntu:14.04)时拉取一个ubuntu最新的image
1
2
3
4
5
6
7
8
sudo docker images #查看所有镜像
sudo docker run -i -t --name="my_ubuntu" image_id /bin/bash #创建一个新的容器并运行
# -i: 以交互模式运行容器,通常与 -t 同时使用;
# -t: 为容器重新分配一个伪输入终端,通常与 -i 同时使用;
# --name="my_ubuntu": 为容器指定一个名称;
sudo docker ps #查看正在运行的容器

pull完image后运行一个docker

1
sudo docker run -i -t --name="my_ubuntu" image_id /bin/bash

会发现现在进入一个全新的ubuntu
配置nginx+mysql+php环境的话,接下来需要

1
2
3
4
apt-get update
apt-get install nginx
apt-get install mysql-server
apt-get install php

这样基本环境差不多了,如果想以当前的容器作为基础镜像
需要通过docker commit命令

接下来导入自己的代码,我这里以zip打包好的压缩包为例
若在服务器上,首先需要通过scp命令上传自己的压缩包

1
scp local_file remote_username@remote_ip:remote_path

然后需要用docker cp命令传入docker容器中
docker中没有unzip命令

1
apt-get install unzip

然后将代码解压到/var/www/html/目录下,此时访问php的话会直接弹出下载而不是解析
通过修改nginx配置文件/etc/nginx/sites-enabled/default
期中php部分改为

1
2
3
4
5
6
location ~ \.php$ {
fastcgi_pass unix:/run/php/php7.0-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /var/www/html$fastcgi_script_name;
include fastcgi_params;
}

重启nginx即可解析php
其他mysql和php配置问题网上都有很多我就不多谈了
就送三条重启命令吧2333

1
2
3
/etc/init.d/mysql restart
/etc/init.d/nginx restart
/etc/init.d/php7.0-fpm restart

docker端口映射

例如若要以本机的8014端口访问docker中的80端口
在docker run时按如下命令

1
sudo docker run -i -t -p8014:80 image_id

进入正在运行的docker容器

1
sudo docker exec -it container_id /bin/bash
Contents
  1. 1. Docker
    1. 1.1. 简介
    2. 1.2. 安装基础操作
    3. 1.3. image和container区别
  2. 2. 环境配置
    1. 2.1. 配置Docker加速器
      1. 2.1.1. docker端口映射
      2. 2.1.2. 进入正在运行的docker容器