Docker安裝與使用

安卓開發高階技術分享發表於2019-01-17

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的容器直接執行在宿主的系統環境裡

 

 

下載安裝

版本選擇
DockerToolBox:較早的版本,相當於一個安裝指引
Docer for Mac:現行版本,可直接自動安裝。又分DockerCE版(免費)和DockerEE版(收費企業版,功能更強大些)
安裝地址見官網
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每個容器單一職責的理念,並不是很推薦使用

附錄;

附錄一;Android高階技術大綱

附錄二;Android進階實戰技術視訊

 

獲取方式;

加Android進階群;701740775。即可前往免費領取。免費備註一下csdn

相關文章