在之前的專案部署中,我們需要在linux伺服器上安裝python,nginx,uwsgi,redis, ,mysql等等,這是一個非常耗時的過程,可能要花費一天的時間,如果我們在以後遷移到其他伺服器怎麼辦,難道要重新部署一次嗎?!!!
為此我們可以使用docker技術,將所有的部署放在docker中,然後將docker打包,如果以後需要遷移,直接將映象傳送到伺服器,一鍵啟動
Docker 官網:https://www.docker.com
Github Docker 原始碼:https://github.com/docker/docker-ce
容器:容器程序,應用程式以後封裝在容器中執行,相互隔離
我們基於映象執行容器,一個映象可以執行多個容器範例,這樣的話多個容器內的環境也是一模一樣的
使用官方安裝指令碼自動安裝
# 下載curl
sudo apt install curl
curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
# 檢視docker服務狀態
sudo service docker status
# 重啟docker服務
sudo service docker restart
# 關閉docker
sudo service docker stop
# 開啟docker服務
sudo service docker start
sudo docker run hello-world
顯示如下下介面代表安裝成功
刪除安裝包:
sudo apt-get purge docker-ce
刪除映象、容器、組態檔等內容:
sudo rm -rf /var/lib/docker
docker服務操作
sudo service docker start # 開啟docker服務 sudo service docker stop # 關閉docker服務 sudo service docker restart # 重啟docker服務 sudo service docker status # 檢視docker服務狀態
sudo docker images
包括:映象名稱 映象ID 映象建立時間 映象大小
docker ps # 檢視存活的容器 docker ps -a # 檢視所有容器,包括已退出的容器
# 簡單執行一下,通常會執行一下容器就會掛掉 docker run 映象名稱 # 互動式的執行一個的docker容器,-i:互動式命令, -t:開啟一個終端 docker run -it 映象名稱 /bin/bash # 後臺執行一個docker容器,並指定執行shell程式碼 -d:讓容器後臺執行, -c:執行的shell命令 docker run -d 映象名稱 /bin/sh -c "while true;do echo 辛苦了,學習linux; sleep 1;done" # 執行容器並指定名稱 docker run --name xxx -it 映象名稱 /bin/bash # 執行容器並指定埠對映 docker run --name xxx -it 映象名稱 -p 6000:5000
# 執行容器並指定埠對映,資料夾對映
docker run --name xxx -it 映象名稱 -p 6000:5000 -v 宿主機目錄:容器目錄 -e 環境變數key:環境變數velue
# 執行容器並制定埠對映,資料夾對映和環境PATH對映
docker run --name xxx -it 映象名稱 -p 6000:5000 -v 宿主機目錄:容器目錄 -e
# 進入一個存活的容器 docker exec -it 容器id /bin/bash # 容器重啟 docker restart 容器id # 容器停止 docker stop 容器id # 容器啟動 docker start 容器id
sudo docker run -d --name kunmzhao -e PYTHONPATH=/home/auto/code/tng-synlite -v /host/path/to/broad-tests:/broad-tests -v /home/mars/kunmzhao/ata_script:/ata_scripts_containers.cisco.com/synergy_lite/runnertest:3.6.15
方式一:dockerhub獲取,先搜尋後下載
docker search 映象名稱docker pull 映象名稱
方式二:自己製作docker commit 容器id 新映象名稱
# 刪除映象要確保沒有使用該映象的容器,否則失敗
docker rmi 映象id
# 批次刪除映象
docker rmi `docker iamges -aq`
# 確保容器是未執行的 docker rm 容器id # 批次刪除容器 docker rm `docker ps -aq`
docker logs 容器id
docker logs -f 容器id #實時重新整理容器內的紀錄檔,例如檢測nginx等紀錄檔資訊
docker commit 容器ID 映象名稱
docker save 映象id > 映象的壓縮檔案
初次匯入映象沒有tag,新增一個即可 docker load < 映象的壓縮檔案 docker tag 映象id 映象新名稱