美文网首页
Docker安装使用入门

Docker安装使用入门

作者: 蓝灰_q | 来源:发表于2017-08-04 15:40 被阅读68次

    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安装成功

    常用命令

    • 在Docker中查看正在运行的容器
      docker ps
    • 在Docker中查看所有容器(含已关闭的)
      docker ps -a
    • 在Docker中打开/关闭某个容器
      docker stop/start webserver(容器的名字)
    • 从Docker中移除容器
      docker rm -f webserver
    • 从Docker中移除镜像
      docker rmi imageid
    • 从Docker中检查容器详情
      docker inspect 容器名
    • 从Docker中进入容器
      docker exec -it phpsvr /bin/bash
    • 从容器退回到Docker
      exit
    • 在php容器中安装mysqli等
      docker-php-ext-install pdo_mysql mysqli
    • 把容器保存为镜像
      docker commit 容器ID 新镜像名称
    • 卸载Docker(需要进入Docker的安装目录)
      /Applications/Docker.app/Contents/MacOS/Docker --uninstall

    搭建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搭建开发环境

    相关文章

      网友评论

          本文标题:Docker安装使用入门

          本文链接:https://www.haomeiwen.com/subject/dmlelxtx.html