Docker安装使用入门

2017-08-04  本文已影响68人  蓝灰_q

Docker

Docker的镜像和容器
An image is a lightweight, stand-alone, executable package that includes everything needed to run a piece of software, including the code, a runtime, libraries, environment variables, and config files.
镜像是一个环境完整的可执行的包
A container is a runtime instance of an image—what the image becomes in memory when actually executed. It runs completely isolated from the host environment by default, only accessing host files and ports if configured to do so.
把镜像加载到内存,就是一个容器,容器与宿主环境是隔离的,仅根据配置文件,与宿主环境通过宿主文件和端口交互

(容器不是虚拟机,容器直接运行在宿主系统环境里,不像虚拟机还要运行在虚拟的硬件里,所以容器的效率更高)
虚拟机运行在虚拟的软硬件环境里


虚拟机运行在虚拟的软硬件环境里(Docker官网图)

Docker的容器直接运行在宿主的系统环境里


Docker的容器直接运行在宿主的系统环境里(Docker官网图)

下载安装

版本选择
DockerToolBox:较早的版本,相当于一个安装指引
Docer for Mac:现行版本,可直接自动安装。又分DockerCE版(免费)和DockerEE版(收费企业版,功能更强大些)
安装地址见官网
Docker安装成功后的界面如下:

Docker安装成功

常用命令

搭建Nginx+Php开发环境

首先建立一个php容器(我的php代码均在web文件夹下,把本地web文件夹共享为php容器的/var/www/html根文件夹):

localhost:~ you$ docker run -d --name phpsvr 
-v ~/web:/var/www/html 
-v ~/web/usr/local/etc/php:/usr/local/etc/php 
php:7.1.1-fpm

完成后,查看该容器

localhost:~ you$ docker ps
CONTAINER ID        IMAGE                  COMMAND                  CREATED             STATUS              PORTS                NAMES
19e7bb945169        php:7.1.1-fpm-alpine   "docker-php-entryp..."   8 seconds ago       Up 7 seconds        9000/tcp             phpsvr

php7默认只安装了mysqlnd,需要扩展pdo,用exec进入该容器,用docker-php-ext-install扩展mysqli和pdo

yourMacBook-Pro:~ you$ docker exec -it phpsvr /bin/bash
/var/www/html # docker-php-ext-install pdo_mysql mysqli
...
(注意,有时候会报错找不到路径:usr/local/etc/php/conf.d/,需要在进入对应的映射目录,手动创建文件夹)
完成扩展后,退出容器,回到docker
/var/www/html # exit
yourMacBook-Pro:~ you $ 

接下来做一个nginx容器
写一个nginx的配置文件,文件位置放到tmp/docker/nginx/conf.d/default.conf,文件内容如下:

server {
    listen       80;
    server_name  localhost;

    location / {
        root   /usr/share/nginx/html; //从根目录处理html(能直接解析html)
        index  index.html index.htm;
    }

    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }

    location ~ \.php$ {
        fastcgi_pass   phpsvr:9000; //把php经9000端口抛给phpsvr容器处理
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME  /var/www/html/$fastcgi_script_name;  //映射到php容器的根目录(需要和nginx的根目录指向同一地址)
        include        fastcgi_params;
    }
}

再建立nginx容器,并与php容器建立链接

yourMacBook-Pro:~ you$ docker run --name websvr 
-p 80:80 
-v ~/web:/usr/share/nginx/html 
-v ~/web/tmp/docker/nginx/conf.d:/etc/nginx/conf.d 
--link phpsvr nginx

nignx+php环境搭建完成
当然,还可以找一些组合式的镜像,比如php和web容器放在一起的

docker run --name svr -p 81:80 -v ~/web:/var/www registry.cn-hangzhou.aliyuncs.com/lxepoo/apache-php5

不过这样的镜像不太符合Docker每个容器单一职责的理念,并不是很推荐使用

推荐阅读

使用docker搭建开发环境

上一篇下一篇

猜你喜欢

热点阅读