【基礎】docker常用命令及專案實戰
前言
目標:
帶大家認識docker
學會使用docker,並做具體實戰
流程:
- 瞭解docker概念
- 安裝配置docker
- docker基本使用
- docker實戰
什麼是Docker
概念
Docker 是一個開源的應用容器引擎,開發者可以打包他們的應用以及依賴包到一個可移植的容器中,然後釋出到任何Linux或Windows作業系統的機器上,也可以實現虛擬化,容器是完全使用沙箱機制,相互之間不會有任何介面。
作用
Docker簡化了環境部署和配置,實現“一次構建,處處執行”,避免了因執行環境不一致而導致的異常
docker與傳統VM比較
- 執行速度
- VMware部署環境最快也需要十幾秒,可能還會長達幾分鐘。
- docker幾秒/幾十毫秒之間就可以啟動容器,完成環境部署。
- 佔用記憶體
- VMware部署環境,最少幾個G
- docker一般都是mb的級別,最大也就幾個G
docker組成
-
docker宿主機( host ):docker安裝在哪一個機器,那個機器就是宿主機,來執行Docker守護程序
-
映象(image):如同系統映象,可以安裝到不同的電腦中。或者從軟體程式設計層面講,如同面向物件中的類。
-
容器(container):是通過映象建立的,如前面的例子,可以是不同執行映象的電腦。又或是類的例項概念。
執行映象後生成的例項被稱為容器,當每執行一次映象時就會產生一個容器,容器可以操作啟動、停止、刪除。
容器使用是沙箱機制,互相之間是隔離的,且是獨立、安全的。
可以把容器看作是簡易版的Linux環境,包含檔案系統、使用者許可權、和執行的應用等。 -
倉庫(repository):用來存放映象的地方。
docker安裝及配置
docker安裝前準備
首先需要保證CentOS系統核心版本要高於3.10,且為64位。
使用命令uname -r
來檢視環境是否滿足要求。
如果Centos安裝部署遇到問題或需要包的可以關注公眾號獲取
搭建docker環境
docker基本使用
docker使用流程:下載映象--->執行映象,生產docker容器--->啟動/關閉容器
# 拉取映象,不指定版本會拉最新的 docker pull 映象名:版本 # 檢視docker映象--->展示:映象名稱\映象標籤\映象id\映象建立時間\映象大小 docker images # 獲取映象詳細資訊 docker inspect 映象id # 刪除指定的本地映象:rmi全英文是remove image,-f表示強制刪除(多個映象刪除,不同映象間以空格間隔) docker rmi -f 映象id或者映象名:tag # 啟動映象建立容器,並進入容器 ``` i:互動式操作; t:容器指定一個終端; d:服務後端執行; p:將容器內部使用的網路埠隨機對映到我們使用主機上,後面引數追加埠時,則為指定埠,如:docker run -p 4000:5000(容器5000埠對映到本機4000埠上) P:大寫的,隨機對映到主機埠 --name xxx:自定義容器名稱; /bin/bash:互動式shell ``` docker run - it 映象名 /bin/bash # 設定映象標籤 docker tag 映象id 映象名稱:標籤 # 已存在的倉庫,啟動容器(names) docker start 容器名 # 檢視正在執行的docker容器--->展示:容器ID\映象名稱\容器與宿主機對映的埠號\容器的名稱 docker ps # 顯示所有狀態的容器(包括未執行) docker ps -a # 進入docker容器(i:互動式操作;t:容器指定一個終端;/bin/bash:互動式shell) docker exec -it 容器名 /bin/bash # 檢視web應用日誌(logs -f:與tail -f一樣) docker logs -f 容器id # 檢視容器程序 docker top 容器名 # 停止docker容器 docker stop 容器名稱 # 停止的容器進行重啟 docker restart 容器id # 刪除指定容器 docker rm -f 容器id
其他操作擴充套件:
對於容器的操作可以使用container id或names
# 批量操作容器可使用$()或多個容器空格相隔,如下:
docker rm -f $(docker ps -aq)
docker rm -f 容器1 容器2
# 匯出容器快照
docker export 容器id > 快照檔案(xxx.tar)
# 匯入容器快照
cat docker/ubuntu.tar | docker import - test/ubuntu:v1
# 可以容器埠對映情況
docker port 容器id
推薦大家使用 docker exec 命令,因為此退出容器終端,不會導致容器的停止。 docker attach不建議使用
docker實戰
部署jenkins
-
docker pull拉取jenkins映象
docker pull jenkins/jenkins
-
建立Jenkins掛載目錄並授權許可權(我們在伺服器上先建立一個jenkins工作目錄 /var/jenkins_mount,賦予相應許可權,稍後我們將jenkins容器目錄掛載到這個目錄上,這樣我們就可以很方便地對容器內的配置檔案進行修改。 如果我們不這樣做,那麼如果需要修改容器配置檔案,將會有點麻煩,因為雖然我們可以使用docker exec -it --user root 容器id /bin/bash 命令進入容器目錄,但是連簡單的 vi命令都不能使用)
mkdir -p /var/jenkins_mount chmod 777 /var/jenkins_mount
3.建立並啟動Jenkins容器
-d 後臺執行映象
-p 10240:8080 將映象的8080埠對映到伺服器的10240埠。
-p 10241:50000 將映象的50000埠對映到伺服器的10241埠
-v /var/jenkins_*mount*:/var/jenkins_mount /var/jenkins_home目錄為容器jenkins工作目錄,我們將硬碟上的一個目錄掛載到這個位置,方便後續更新映象後繼續使用原來的工作目錄。這裡我們設定的就是上面我們建立的 /var/jenkins_mount目錄
-v /etc/localtime:/etc/localtime讓容器使用和伺服器同樣的時間設定。
--name myjenkins 給容器起一個別名
docker run -d -p 10240:8080 -p 10241:50000 -v /var/jenkins_mount:/var/jenkins_home -v /etc/localtime:/etc/localtime --name myjk jenkins/jenkins
(https://img2022.cnblogs.com/blog/1897069/202203/1897069-20220328181736112-1984673183.png)
- 檢視jenkins是否啟動成功,如下圖出現埠號,就為啟動成功了
docker ps -l
- 檢視docker容器日誌。
docker logs myjenkins
- 配置映象加速,進入 cd /var/jenkins_mount/ 目錄。
cd /var/jenkins_mount/
修改 vi hudson.model.UpdateCenter.xml
裡的內容
修改前
將 url 修改為 清華大學官方映象:https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json
修改後
- 訪問Jenkins頁面,輸入你的ip加上10240
- 管理員密碼獲取方法,編輯initialAdminPassword檔案檢視,把密碼輸入登入中的密碼即可,開始使用。
vi /var/jenkins_mount/secrets/initialAdminPassword
- 進行正常進行安裝使用啦!
更多實戰
K8s管理docker
待更新