篇提到了中小企業快速構建雲上服務,本篇繼續以開發的視角介紹一個容器化工具:Docker,以下部分摘自百度百科!本文算是一篇技術科普文,對實操上沒有太大價值,但是可以告訴你Docker能用在什麼地方,怎麼使用。
序:上篇提到了中小企業快速構建雲上服務,本篇繼續以開發的視角介紹一個容器化工具:Docker,以下部分摘自百度百科!本文算是一篇技術科普文,對實操上沒有太大價值,但是可以告訴你Docker能用在什麼地方,怎麼使用。
Docker 是一個開源的應用容器引擎,讓開發者可以打包他們的應用以及依賴包到一個可移植的鏡像中,然後發佈到任何流行的 Linux或Windows 機器上,也可以實現虛擬化。容器是完全使用沙箱機制,相互之間不會有任何接口。
本篇是下一篇的引用,爲了快速調用開發環境配置,和企業內部環境的快速部署。
Docker能做什麼?
Docker是非常強大的服務容器化工具,提供容器的沙箱管理控制,隔離應用關係,在開發中使用非常常見,優點是跨平臺環境統一,可以支持多語言多環境的調整和鏡像部署,在資源較少的情況下可以通過容器實現集羣化的部署測試。比如mysql集羣,redis集羣,控件分離等等。
我本機的環境是MAC系統,拿本身環境爲例,我將進行docker及docker-compose的演示安裝,win7及win10的安裝與mac安裝上區別較大,但是使用上大同小異,本文僅做爲參考。
Docker的安裝:
打開Docker的官網下載頁面,下載前需要進行帳號登陸
登陸成功之後進行選擇
下載時間比較漫長,Docker的安裝包約800多m,下載之後直接安裝即可。安裝之後啓動即可。
檢查docker的啓動狀態
docker images
當提示如下警告時,因爲docker服務未啓動,Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?
在mac系統下結束docker-desktop服務,重新開啓並start即可,此時docker就運行在你的機器之上了。
有此小綠圖標就是運行成功了
Docker的鏡像源一般在國外,國內也有一些鏡像,可以考慮直接使用,使用方式參考如下。
鏡像加速
鑑於國內網絡問題,後續拉取 Docker 鏡像十分緩慢,我們可以需要配置加速器來解決,我使用的是網易的鏡像地址:http://hub-mirror.c.163.com。
在任務欄點擊 Docker for mac 應用圖標 -> Perferences… -> Daemon -> Registry mirrors。在列表中填寫加速器地址即可。修改完成之後,點擊 Apply & Restart 按鈕,Docker 就會重啓並應用配置的鏡像地址了。
轉於網絡
Docker-Compose是一個多容器的管理工具,在mac下最簡單的安裝方法,使用
pip install docker-compose
就直接可以進行安裝了,不用太複雜的配置,下一篇我們將基於LNMP快速且有規劃性的搭建本地開發環境。
轉一些docker常用的命令,有興趣可以先熟悉一下:
查看容器
查看你已經下載好的鏡像docker images
查找鏡像
docker search XX
下載鏡像
docker pull xx
刪除鏡像
docker rmi xx
開始
docker run 你的鏡像
看日誌
docker logs 你的容器
停止一個容器示例
docker stop 你的容器
查看容器狀態
docker stats 你的容器
Docker-Compose常用命令-轉自網絡
1、Docker-Compose命令格式
docker-compose [-f <arg>...] [options] [COMMAND] [ARGS...]
命令選項如下:
-f,–file FILE指定Compose模板文件,默認爲docker-compose.yml,可以多次指定。
-p,–project-name NAME指定項目名稱,默認將使用所在目錄名稱作爲項目名。
-x-network-driver 使用Docker的可拔插網絡後端特性(需要Docker 1.9+版本)
-x-network-driver DRIVER指定網絡後端的驅動,默認爲bridge(需要Docker 1.9+版本)
-verbose輸出更多調試信息
-v,–version打印版本並退出
2、docker-compose up
docker-compose up [options] [--scale SERVICE=NUM...] [SERVICE...]
選項包括:
-d 在後臺運行服務容器
–no-color 不使用顏色來區分不同的服務的控制輸出
–no-deps 不啓動服務所鏈接的容器
–force-recreate 強制重新創建容器,不能與–no-recreate同時使用
–no-recreate 如果容器已經存在,則不重新創建,不能與–force-recreate同時使用
–no-build 不自動構建缺失的服務鏡像
–build 在啓動容器前構建服務鏡像
–abort-on-container-exit 停止所有容器,如果任何一個容器被停止,不能與-d同時使用
-t, –timeout TIMEOUT 停止容器時候的超時(默認爲10秒)
–remove-orphans 刪除服務中沒有在compose文件中定義的容器
–scale SERVICE=NUM 設置服務運行容器的個數,將覆蓋在compose中通過scale指定的參數docker-compose up
啓動所有服務docker-compose up -d
在後臺所有啓動服務
-f 指定使用的Compose模板文件,默認爲docker-compose.yml,可以多次指定。docker-compose -f docker-compose.yml up -d
3、docker-compose ps
docker-compose ps [options] [SERVICE...]
docker-compose ps
列出項目中目前的所有容器
4、docker-compose stop
docker-compose stop [options] [SERVICE...]
選項包括:
-t, –timeout TIMEOUT 停止容器時候的超時(默認爲10秒)docker-compose stop
停止正在運行的容器,可以通過docker-compose start 再次啓動
5、docker-compose -h
docker-compose -h
查看幫助
6、docker-compose down
docker-compose down [options]
停止和刪除容器、網絡、卷、鏡像。
選項包括:
–rmi type,刪除鏡像,類型必須是:all,刪除compose文件中定義的所有鏡像;local,刪除鏡像名爲空的鏡像
-v, –volumes,刪除已經在compose文件中定義的和匿名的附在容器上的數據卷
–remove-orphans,刪除服務中沒有在compose中定義的容器docker-compose down
停用移除所有容器以及網絡相關
7、docker-compose logs
docker-compose logs [options] [SERVICE...]
查看服務容器的輸出。默認情況下,docker-compose將對不同的服務輸出使用不同的顏色來區分。可以通過–no-color來關閉顏色。docker-compose logs
查看服務容器的輸出
8、docker-compose build
docker-compose build [options] [--build-arg key=val...] [SERVICE...]
構建(重新構建)項目中的服務容器。
選項包括:
–compress 通過gzip壓縮構建上下環境
–force-rm 刪除構建過程中的臨時容器
–no-cache 構建鏡像過程中不使用緩存
–pull 始終嘗試通過拉取操作來獲取更新版本的鏡像
-m, –memory MEM爲構建的容器設置內存大小
–build-arg key=val爲服務設置build-time變量
服務容器一旦構建後,將會帶上一個標記名。可以隨時在項目目錄下運行docker-compose build來重新構建服務
9、docker-compose pull
docker-compose pull [options] [SERVICE...]
拉取服務依賴的鏡像。
選項包括:
–ignore-pull-failures,忽略拉取鏡像過程中的錯誤
–parallel,多個鏡像同時拉取
–quiet,拉取鏡像過程中不打印進度信息docker-compose pull
拉取服務依賴的鏡像
10、docker-compose restart
docker-compose restart [options] [SERVICE...]
重啓項目中的服務。
選項包括:
-t, –timeout TIMEOUT,指定重啓前停止容器的超時(默認爲10秒)docker-compose restart
重啓項目中的服務
11、docker-compose rm
docker-compose rm [options] [SERVICE...]
刪除所有(停止狀態的)服務容器。
選項包括:
–f, –force,強制直接刪除,包括非停止狀態的容器
-v,刪除容器所掛載的數據卷docker-compose rm
刪除所有(停止狀態的)服務容器。推薦先執行docker-compose stop命令來停止容器。
12、docker-compose start
docker-compose start [SERVICE...]
docker-compose start
啓動已經存在的服務容器。
13、docker-compose run
docker-compose run [options] [-v VOLUME...] [-p PORT...] [-e KEY=VAL...] SERVICE [COMMAND] [ARGS...]
在指定服務上執行一個命令。docker-compose run ubuntu ping www.baidu.com
在指定容器上執行一個ping命令。
14、docker-compose scale
docker-compose scale web=3 db=2
設置指定服務運行的容器個數。通過service=num的參數來設置數量
15、docker-compose pause
docker-compose pause [SERVICE...]
暫停一個服務容器
16、docker-compose kill
docker-compose kill [options] [SERVICE...]
通過發送SIGKILL信號來強制停止服務容器。
支持通過-s參數來指定發送的信號,例如通過如下指令發送SIGINT信號:docker-compose kill -s SIGINT
17、dokcer-compose config
docker-compose config [options]
驗證並查看compose文件配置。
選項包括:
–resolve-image-digests 將鏡像標籤標記爲摘要
-q, –quiet 只驗證配置,不輸出。 當配置正確時,不輸出任何內容,當文件配置錯誤,輸出錯誤信息
–services 打印服務名,一行一個
–volumes 打印數據卷名,一行一個
18、docker-compose create
docker-compose create [options] [SERVICE...]
爲服務創建容器。
選項包括:
–force-recreate:重新創建容器,即使配置和鏡像沒有改變,不兼容–no-recreate參數
–no-recreate:如果容器已經存在,不需要重新創建,不兼容–force-recreate參數
–no-build:不創建鏡像,即使缺失
–build:創建容器前,生成鏡像
19、docker-compose exec
docker-compose exec [options] SERVICE COMMAND [ARGS...]
選項包括:
-d 分離模式,後臺運行命令。
–privileged 獲取特權。
–user USER 指定運行的用戶。
-T 禁用分配TTY,默認docker-compose exec分配TTY。
–index=index,當一個服務擁有多個容器時,可通過該參數登陸到該服務下的任何服務,例如:docker-compose exec –index=1 web /bin/bash ,web服務中包含多個容器
20、docker-compose port
docker-compose port [options] SERVICE PRIVATE_PORT
顯示某個容器端口所映射的公共端口。
選項包括:
–protocol=proto,指定端口協議,TCP(默認值)或者UDP
–index=index,如果同意服務存在多個容器,指定命令對象容器的序號(默認爲1)
21、docker-compose push
docker-compose push [options] [SERVICE...]
推送服務依的鏡像。
選項包括:
–ignore-push-failures 忽略推送鏡像過程中的錯誤
22、docker-compose stop
docker-compose stop [options] [SERVICE...]
顯示各個容器運行的進程情況。
23、docker-compose unpause
docker-compose unpause [SERVICE...]
恢復處於暫停狀態中的服務。
24、docker-compose version
docker-compose version
打印版本信息。