1. 程式人生 > 其它 >【基礎】docker常用命令及專案實戰

【基礎】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容器--->啟動/關閉容器

# 拉取映象,不指定版本會拉最新的
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

  1. docker pull拉取jenkins映象

    docker pull jenkins/jenkins
    
  2. 建立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)

  1. 檢視jenkins是否啟動成功,如下圖出現埠號,就為啟動成功了
docker ps -l
  1. 檢視docker容器日誌。
docker logs myjenkins
  1. 配置映象加速,進入 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

修改後

  1. 訪問Jenkins頁面,輸入你的ip加上10240
  1. 管理員密碼獲取方法,編輯initialAdminPassword檔案檢視,把密碼輸入登入中的密碼即可,開始使用。
vi /var/jenkins_mount/secrets/initialAdminPassword
  1. 進行正常進行安裝使用啦!

更多實戰

K8s管理docker
待更新