1.docker的基本使用

2022-11-11 15:02:44

1.簡介

Docker 是一個開源的應用容器引擎,讓開發者可以打包他們的應用以及依賴包到一個可移植的映象中,然後釋出到任何流行的 LinuxWindows作業系統的機器上,也可以實現虛擬化。容器是完全使用沙箱機制,相互之間不會有任何介面

 

在之前的專案部署中,我們需要在linux伺服器上安裝python,nginx,uwsgi,redis, ,mysql等等,這是一個非常耗時的過程,可能要花費一天的時間,如果我們在以後遷移到其他伺服器怎麼辦,難道要重新部署一次嗎?!!!

為此我們可以使用docker技術,將所有的部署放在docker中,然後將docker打包,如果以後需要遷移,直接將映象傳送到伺服器,一鍵啟動

1.1 Docker的應用場景

  • Web 應用的自動化打包和釋出。

  • 自動化測試和持續整合、釋出。

1.2 相關連結

Docker 官網:https://www.docker.com

Github Docker 原始碼:https://github.com/docker/docker-ce

 

2.docker的生命週期概念

  • 映象:一個系統的唯讀版本,例如一個微型的centos或者ubuntu系統

  • 容器:容器程序,應用程式以後封裝在容器中執行,相互隔離

  • 倉庫:儲存映象的一個倉庫地址,便於和他人共用映象檔案

我們基於映象執行容器,一個映象可以執行多個容器範例,這樣的話多個容器內的環境也是一模一樣的

3.安裝docker

3.1 下載

使用官方安裝指令碼自動安裝

# 下載curl
sudo apt install curl

curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun

  

3.2 確保docker服務已開啟

# 檢視docker服務狀態 
sudo service docker status
# 重啟docker服務
sudo service docker restart
# 關閉docker
sudo service docker stop
# 開啟docker服務
sudo service docker start

 

3.3 測試docker是否成功安裝

sudo docker run hello-world

顯示如下下介面代表安裝成功

 

4 解除安裝docker

刪除安裝包:

sudo apt-get purge docker-ce

 

刪除映象、容器、組態檔等內容:

sudo rm -rf /var/lib/docker

 

5 操作docker

docker服務操作

sudo service docker start   # 開啟docker服務
sudo service docker stop    # 關閉docker服務
sudo service docker restart # 重啟docker服務
sudo service docker status  # 檢視docker服務狀態

5.1 檢視所有映象

sudo docker images
包括:映象名稱 映象ID 映象建立時間 映象大小

5.2 檢視容器

docker ps   # 檢視存活的容器
docker ps -a  # 檢視所有容器,包括已退出的容器

5.3 執行docker

在執行一個映象的時候,如果容器中沒有存活的程序,容器就會直接掛掉

# 簡單執行一下,通常會執行一下容器就會掛掉
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

 

5.4 docker映象的獲取

方式一:dockerhub獲取,先搜尋後下載
  docker search 映象名稱docker pull  映象名稱

​方式二:自己製作docker commit 容器id 新映象名稱

5.5 刪除映象

# 刪除映象要確保沒有使用該映象的容器,否則失敗
docker rmi   映象id

# 批次刪除映象
docker rmi `docker iamges -aq`

5.6 刪除容器

# 確保容器是未執行的
docker rm   容器id

# 批次刪除容器
docker rm  `docker ps -aq`

5.7 檢視指定容器的執行紀錄檔

docker logs  容器id
docker logs -f  容器id   #實時重新整理容器內的紀錄檔,例如檢測nginx等紀錄檔資訊

5.8 映象的製作,匯出及匯入

  • 映象製作
    docker commit  容器ID  映象名稱

     

     

  • 映象匯出
    docker save  映象id   >   映象的壓縮檔案

     

     

  • 映象匯入
    初次匯入映象沒有tag,新增一個即可
    docker  load   <   映象的壓縮檔案
    docker tag  映象id  映象新名稱