【Ubuntu 安裝Docker CE-Jenkins】

安裝Docker CE(Ubuntu)

Install | Docker Docs官網

使用apt倉庫安裝

DNS配置(可選)

#手動替換
sudo vim /etc/systemd/resolved.conf
#典型配置如下
[Resolve]
DNS=8.8.8.8
DNS=114.114.114.114
FallbackDNS=1.1.1.1   # 備用 DNS#sed替換
sudo sed -i '/^#DNS=/ {s/#DNS=/DNS=8.8.8.8/a\DNS=114.114.114.114
}' /etc/systemd/resolved.conf
sudo sed -i 's/#FallbackDNS=/FallbackDNS=1.1.1.1/' /etc/systemd/resolved.conf
#重啟服務并更新鏈接
sudo systemctl restart systemd-resolved
sudo ln -sf /run/systemd/resolve/resolv.conf /etc/resolv.conf  # 避免文件被覆蓋:ml-citation{ref="4,5" data="citationList"}#查看當前DNS情況
systemd-resolve --status

1.設置Dockerapt倉庫

運行以下命令以卸載所有沖突的軟件包

for pkg in docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc; do sudo apt-get remove $pkg; done

設置 apt 倉庫

# Add Docker's official GPG key:
sudo apt-get update
sudo apt-get install ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sleep 1
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sleep 2
sudo chmod a+r /etc/apt/keyrings/docker.asc
cat
# Add the repository to Apt sources:
echo \"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \$(. /etc/os-release && echo "${UBUNTU_CODENAME:-$VERSION_CODENAME}") stable" | \sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update

2.安裝Docker軟件包

sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

3.設置Docker鏡像地址

地址來自:國內可用Docker鏡像源加速器/DockerHub鏡像匯總(2025年3月28日) - 文武科技柜

sudo mkdir -p /etc/docker && \
sudo tee /etc/docker/daemon.json <<-'EOF'
{"registry-mirrors": ["https://docker.1ms.run","https://docker.mybacc.com","https://dytt.online","https://lispy.org","https://docker.xiaogenban1993.com","https://docker.yomansunter.com","https://aicarbon.xyz","https://666860.xyz","https://docker.zhai.cm","https://a.ussh.net","https://hub.littlediary.cn","https://hub.rat.dev","https://docker.m.daocloud.io"]
}
EOF
sudo systemctl daemon-reload && \
sudo systemctl restart docker
  • 阿里云專屬鏡像配置(可選)
  1. 訪問 ?**阿里云容器鏡像服務**?,注冊并獲取專屬加速地址;
  2. 將腳本中的鏡像地址替換為你的阿里云專屬地址(如 https://xxx.mirror.aliyuncs.com)。

執行以下命令查看鏡像源狀態 “Registry Mirrors”:

docker info

4.測試

sudo docker run hello-world

輸出: Hello from Docker!

5.Docker命令補全

一、基礎環境配置

  1. ?**安裝 bash-completion**?

    sudo apt-get update && sudo apt-get install -y bash-completion
    

    該工具為 bash shell 提供基礎補全框架,是 Docker 補全功能的前置依賴。

  2. ?激活全局補全配置?
    編輯 ~/.bashrc 文件,確保以下內容已啟用:
    vim ~/.bashrc

    if [ -f /etc/bash_completion ] && ! shopt -oq posix; then. /etc/bash_completion
    fi
    

    執行 source ~/.bashrc 使配置生效。


二、Docker 專用補全配置

  1. ?下載 Docker 官方補全腳本?

    sudo curl -L https://raw.githubusercontent.com/docker/cli/master/contrib/completion/bash/docker \-o /etc/bash_completion.d/docker
    

    該腳本覆蓋所有 Docker 命令及子命令的補全規則。

  2. ?**啟用 Docker Compose 補全(可選)**?

    sudo curl -L https://raw.githubusercontent.com/docker/compose/$(docker-compose version --short)/contrib/completion/bash/docker-compose \-o /etc/bash_completion.d/docker-compose
    

三、驗證與調試

  1. ?立即生效配置?

    exec bash  # 或重新啟動終端
    
  2. ?測試補全功能?

    • 輸入 docker r 后按 Tab,應顯示 runrm 等命令
    • 輸入 docker stop con 后按 Tab,應顯示運行中的容器名

四、常見問題排查

現象解決方案
補全列表不顯示檢查 /etc/bash_completion.d/ 目錄下 docker 補全腳本是否存在且權限為 644
補全響應延遲刪除 /etc/bash_completion.d/ 目錄下的冗余補全腳本
僅部分命令可補全確認安裝的 Docker 版本 >= 20.10,舊版本需手動更新補全腳本
Ubuntu 容器內補全失效執行 dpkg-reconfigure dash 選擇 bash 作為默認 shell

五、進階優化(適用于生產環境)

  1. ?多用戶全局配置?
    將補全腳本部署到 /etc/bash_completion.d/ 而非用戶目錄,實現系統級補全支持

  2. ?容器內補全支持

    ?在 Dockerfile 中添加:

    RUN apt-get update && apt-get install -y bash-completion && \curl -L https://raw.githubusercontent.com/docker/cli/master/contrib/completion/bash/docker \-o /etc/bash_completion.d/docker
    

安裝Jenkins-Docker

Jenkins-Docker官網

1.創建網絡

使用以下命令在 Docker 中創建一個橋接網絡:

docker network create jenkins

2.創建鏡像

要在 Jenkins 節點內執行 Docker 命令,請使用以下 docker run 命令下載并運行 docker:dind Docker 鏡像:

docker run --name jenkins-docker --rm --detach \--privileged --network jenkins --network-alias docker \--env DOCKER_TLS_CERTDIR=/certs \--volume jenkins-docker-certs:/certs/client \--volume jenkins-data:/var/jenkins_home \--publish 2376:2376 \docker:dind --storage-driver overlay2

注釋:

要在 Jenkins 節點內執行 Docker 命令,請使用以下 docker run 命令下載并運行 docker:dind Docker 鏡像:

docker run \--name jenkins-docker \ 1--rm \ 2--detach \ 3--privileged \ 4--network jenkins \ 5--network-alias docker \ 6--env DOCKER_TLS_CERTDIR=/certs \ 7--volume jenkins-docker-certs:/certs/client \ 8--volume jenkins-data:/var/jenkins_home \ 9--publish 2376:2376 \ 10 docker:dind \ 11--storage-driver overlay2 12
1(可選)指定用于運行該鏡像的 Docker 容器名稱。 默認情況下,Docker 會為容器生成一個唯一的名稱。
2(可選)在關閉時自動移除 Docker 容器(Docker 鏡像的副本)。
3(可選)在后臺運行 Docker 容器。 您可以通過運行 docker stop jenkins-docker 來停止此進程。
4在 Docker 中運行 Docker 目前需要特權訪問才能正常工作。 隨著較新的 Linux 內核版本的推出,這一要求可能會放寬。
5這與前面步驟中創建的網絡相對應。
6jenkins 網絡中,將 Docker 中的 Docker 容器作為主機名 docker 提供。
7啟用 Docker 服務器中的 TLS 使用。 由于使用了特權容器,因此建議這樣做,不過這需要使用下面描述的共享卷。 此環境變量控制 Docker TLS 證書的管理根目錄。
8將容器內的 /certs/client 目錄映射到上面創建的名為 jenkins-docker-certs 的 Docker 卷。
9將容器內的 /var/jenkins_home 目錄映射到名為 jenkins-data 的 Docker 卷。 這使得由該 Docker 容器的 Docker 守護進程控制的其他 Docker 容器能夠掛載來自 Jenkins 的數據。
10(可選)在主機上公開 Docker 守護進程端口。 這有助于在主機上執行 docker 命令來控制此內部 Docker 守護進程。
11docker:dind 圖像本身。 運行前請使用命令 docker image pull docker:dind 下載此圖像。
12Docker 卷的存儲驅動程序。 有關支持的選項,請參閱 Docker 存儲驅動程序文檔。

3.Dockerfile創建Jenkins Docker 鏡像

通過執行以下兩個步驟來自定義官方的 Jenkins Docker 鏡像:

創建一個包含以下內容的 Dockerfile:

FROM jenkins/jenkins:2.504.1-jdk21
USER root
RUN apt-get update && apt-get install -y lsb-release ca-certificates curl && \install -m 0755 -d /etc/apt/keyrings && \curl -fsSL https://download.docker.com/linux/debian/gpg -o /etc/apt/keyrings/docker.asc && \chmod a+r /etc/apt/keyrings/docker.asc && \echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] \https://download.docker.com/linux/debian $(. /etc/os-release && echo \"$VERSION_CODENAME\") stable" \| tee /etc/apt/sources.list.d/docker.list > /dev/null && \apt-get update && apt-get install -y docker-ce-cli && \apt-get clean && rm -rf /var/lib/apt/lists/*
USER jenkins
RUN jenkins-plugin-cli --plugins "blueocean docker-workflow json-path-api"

根據此 Dockerfile 構建一個新的 Docker 鏡像,并為該鏡像指定一個有意義的名稱,例如“myjenkins-blueocean:2.504.1-1”:

docker build -t myjenkins-blueocean:2.504.1-1 .

如果您尚未下載官方的 Jenkins Docker 鏡像,上述過程會自動為您下載。

4.啟動容器

使用以下 docker run 命令在 Docker 中以容器形式運行您自己的 myjenkins-blueocean:2.504.1-1 鏡像:

docker run --name jenkins-blueocean --restart=on-failure --detach \--network jenkins --env DOCKER_HOST=tcp://docker:2376 \--env DOCKER_CERT_PATH=/certs/client --env DOCKER_TLS_VERIFY=1 \--publish 8080:8080 --publish 50000:50000 \--volume jenkins-data:/var/jenkins_home \--volume jenkins-docker-certs:/certs/client:ro \myjenkins-blueocean:2.504.1-1

訪問測試

http://192.168.0.225:8080

提示輸入密碼可查看容器日志獲取:

docker logs jenkins-blueocean

注釋:

docker run \--name jenkins-blueocean \ 1--restart=on-failure \ 2--detach \ 3--network jenkins \ 4--env DOCKER_HOST=tcp://docker:2376 \ 5--env DOCKER_CERT_PATH=/certs/client \--env DOCKER_TLS_VERIFY=1 \--publish 8080:8080 \ 6--publish 50000:50000 \ 7--volume jenkins-data:/var/jenkins_home \ 8--volume jenkins-docker-certs:/certs/client:ro \ 9myjenkins-blueocean:2.504.1-1  10
1(可選)指定此 Docker 鏡像實例的 Docker 容器名稱。
2如果容器停止運行,請始終重新啟動它。 如果手動停止了容器,只有在 Docker 守護進程重啟或手動重新啟動容器本身時,它才會重新啟動。
3(可選)以“分離”模式在后臺運行當前容器,并輸出容器 ID。 如果您未指定此選項,則此容器的運行 Docker 日志將在終端窗口中顯示。
4將此容器連接到先前定義的 jenkins 網絡。 現在,Docker 守護進程可通過主機名 docker 供此 Jenkins 容器使用。
5指定由 dockerdocker-compose 以及其他 Docker 工具用于從上一步連接到 Docker 守護進程所使用的環境變量。
6將當前容器的 8080 端口映射到主機的 8080 端口。 第一個數字代表主機上的端口,最后一個數字代表容器的端口。 例如,若要通過主機上的 49000 端口訪問 Jenkins,請為此選項輸入 -p 49000:8080
7(可選)將當前容器的 50000 端口映射到主機的 50000 端口。 只有在您已在其他機器上設置了一個或多個傳入的 Jenkins 代理,并且這些代理又與您的 jenkins-blueocean 容器(即 Jenkins“控制器”)進行交互時,才需要此操作。 默認情況下,傳入的 Jenkins 代理通過 TCP 端口 50000 與 Jenkins 控制器進行通信。 您可以通過“安全”頁面更改 Jenkins 控制器上的此端口號。 例如,如果您將 Jenkins 控制器的傳入 Jenkins 代理的 TCP 端口更新為 51000,則需要通過 docker run … 命令重新運行 Jenkins。 指定“發布”選項如下:第一個值是托管 Jenkins 控制器的機器上的端口號,最后一個值與 Jenkins 控制器上更改的值匹配,例如 --publish 52000:51000 。 傳入的 Jenkins 代理在該端口(此示例中為 52000)與 Jenkins 控制器進行通信。 請注意,WebSocket 代理不需要此配置。
8將容器中的 /var/jenkins_home 目錄映射到名為 jenkins-data 的 Docker 卷。 除了將 /var/jenkins_home 目錄映射到 Docker 卷之外,您還可以將其映射到本地文件系統中的某個目錄。 例如,指定選項 --volume $HOME/jenkins:/var/jenkins_home 可將容器中的 /var/jenkins_home 目錄映射到本地機器上 $HOME 目錄內的 jenkins 子目錄 - 通常是 /Users/<your-username>/jenkins/home/<your-username>/jenkins 。 注意:如果您更改此源卷或目錄,則需要更新上述 docker:dind 容器中的卷以匹配此設置。
9/certs/client 目錄映射到先前創建的 jenkins-docker-certs 卷。 現在,用于連接到 Docker 守護進程所需的客戶端 TLS 證書可在由 DOCKER_CERT_PATH 環境變量指定的路徑中獲取。
10您在上一步構建的 Docker 鏡像的名稱。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/82414.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/82414.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/82414.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

5、開放式PLC梯形圖編程組件 - /自動化與控制組件/open-plc-programming

76個工業組件庫示例匯總 開放式PLC編程環境 這是一個開放式PLC編程環境的自定義組件&#xff0c;提供了一個面向智能倉儲堆垛機控制的開放式PLC編程環境。該組件采用蘋果科技風格設計&#xff0c;支持多廠商PLC硬件&#xff0c;具有直觀的界面和豐富的功能。 功能特點 多語…

內網和外網怎么互通?外網訪問內網的幾種簡單方式

在企業或家庭網絡中&#xff0c;經常會遇到不同內網環境下網絡互通問題。例如&#xff0c;當公司本地局域網內有個辦公OA網站&#xff0c;在辦公室內電腦上網可以登錄使用&#xff0c;但在家帶寬下就無法直接通信訪問到。這就需要我們采取一些實用的內外網互通技巧來解決這個問…

使用大語言模型進行機器人規劃(Robot planning with LLMs)

李升偉 編譯 長期規劃在機器人學領域可以從經典控制方法與大型語言模型在現實世界知識能力的結合中獲益。 在20世紀80年代&#xff0c;機器人學和人工智能&#xff08;AI&#xff09;領域的專家提出了莫雷奇悖論&#xff0c;觀察到人類看似簡單的涉及移動和感知的任務&#x…

【計算機視覺】OpenCV實戰項目: opencv-text-deskew:實時文本圖像校正

opencv-text-deskew&#xff1a;基于OpenCV的實時文本圖像校正 一、項目概述與技術背景1.1 核心功能與創新點1.2 技術指標對比1.3 技術演進路線 二、環境配置與算法原理2.1 硬件要求2.2 軟件部署2.3 核心算法流程 三、核心算法解析3.1 文本區域定位3.2 角度檢測優化3.3 仿射變換…

可視化圖解算法33:判斷是不是平衡二叉樹

1. 題目 描述 輸入一棵節點數為 n 的二叉樹&#xff0c;判斷該二叉樹是否是平衡二叉樹。 在這里&#xff0c;我們只需要考慮其平衡性&#xff0c;不需要考慮其是不是排序二叉樹 平衡二叉樹&#xff08;Balanced Binary Tree&#xff09;&#xff0c;具有以下性質&#xff1…

【Linux網絡】應用層自定義協議與序列化

應用層自定義協議與序列化 應用層 我們程序員寫的一個個解決我們實際問題,滿足我們日常需求的網絡程序,都是在應用層. 協議是一種"約定".Socket的接口,在讀寫數據時,都是按"字符串"的方式來發送接收的.如果我們要傳輸一些"結構化的數據"怎么辦…

MySQL + Elasticsearch:為什么要使用ES,使用場景與架構設計詳解

MySQL Elasticsearch&#xff1a;為什么要使用ES&#xff0c;使用場景與架構設計詳解 前言一、MySQL Elasticsearch的背景與需求1.1 為什么要使用Elasticsearch&#xff08;ES&#xff09;&#xff1f;1.2 為什么MySQL在某些場景下不足以滿足需求&#xff1f;1.3 MySQL Elas…

PPL困惑度的計算

1. 公式 PPL&#xff08;Perplexity&#xff09;困惑度 是自然語言處理&#xff08;NLP&#xff09;中常用的評估語言模型&#xff08;Language Model&#xff09;性能的指標。PPL 用于衡量語言模型對語言序列的預測能力&#xff0c;數值越小&#xff0c;說明模型的預測能力越…

MegaCLI Raid管理工具

整理在CentOS 7.9和Ubuntu 24.04上&#xff0c;MegaCLI 工具的安裝與常用命令。 1. 參考 下載和安裝MegaCLI工具 MegaCli RAID管理工具 Megacli 批量磁盤巡檢 ubuntu24.04 No such file libncursesw.so.5 dell服務器硬盤的狀態變成外來&#xff08;foreign&#xff09;命…

HTML9:頁面結構分析

頁面結構分析 元素名描述header標題頭部區域的內容&#xff08;用于頁面或頁面中的一塊區域&#xff09;footer標記腳部區域的內容&#xff08;用于整個頁面或頁面的一塊區域&#xff09;sectionWeb頁面的一塊獨立區域article獨立的文章內容aside相關的內容或應用&#xff08;…

分布式處理架構

分布式處理架構是一種將計算任務分散到多臺計算機或服務器上協同完成的系統設計方法。這種架構通過將工作負載分配到多個節點&#xff08;可以是物理機、虛擬機或容器&#xff09;來提高性能、可靠性和可擴展性。下面我將從多個角度詳細解釋這一概念&#xff1a; 分布式架構的…

算法每日一題 | 入門-分支結構-Apples Prologue/蘋果和蟲子

Apples Prologue/蘋果和蟲子 題目描述 小 B 喜歡吃蘋果。她現在有 m m m&#xff08;1 ≤ m ≤100&#xff09;個蘋果&#xff0c;吃完一個蘋果需要花費 t t t&#xff08;0 ≤ t≤ 100&#xff09;分鐘&#xff0c;吃完一個后立刻開始吃下一個。 現在時間過去了 s s s&a…

RT Thread Studio創建軟件和硬件RTC工程

MCU型號&#xff1a;STM32F103RET6 一.配置軟件模擬RTC 1.生成一個帶串口輸出的工程文件&#xff0c;新建RT-Thread項目工程文件。 2.查看電路圖中的串口輸出管腳&#xff0c;根據STMCubeMx軟件可知此串口為USART1&#xff0c;選擇芯片型號為STM32F103RET6&#xff0c;控制臺…

STC32G12K128-旋轉編碼器-軟件去抖

STC32G12K128-旋轉編碼器-軟件去抖 簡介代碼 簡介 EC11旋轉編碼器是一種可以連續旋轉的器件A,B,C為旋轉編碼引腳&#xff0c;帶按鍵的有D,E引腳。引腳功能&#xff1a; A&#xff1a;編碼器A相&#xff1b;B&#xff1a;編碼器B相&#xff1b;C&#xff1a;公共端-一般接到GN…

配置Jupyter Notebook環境及Token認證(Linux服務器)

配置Jupyter Notebook環境及Token認證&#xff08;Linux服務器&#xff09; 背景 在Ubuntu 18.04.6 LTS服務器&#xff08;IP: 39.105.167.2&#xff09;上&#xff0c;基于虛擬環境pytorch_env&#xff0c;通過Mac終端&#xff08;SSH&#xff09;配置Jupyter Notebook環境&…

從零開始學Flink:開啟實時計算的魔法之旅

在凌晨三點的數據監控大屏前&#xff0c;某電商平臺的技術負責人突然發現一個異常波動&#xff1a;支付成功率驟降15%。傳統的數據倉庫此時還在沉睡&#xff0c;而基于Flink搭建的實時風控系統早已捕捉到這個信號&#xff0c;自動觸發預警機制。當運維團隊趕到時&#xff0c;系…

基于k8s的Jenkins CI/CD平臺部署實踐(三):集成ArgoCD實現持續部署

基于k8s的Jenkins CI/CD平臺部署實踐&#xff08;三&#xff09;&#xff1a;集成ArgoCD實現持續部署 文章目錄 基于k8s的Jenkins CI/CD平臺部署實踐&#xff08;三&#xff09;&#xff1a;集成ArgoCD實現持續部署一、Argocd簡介二、安裝Helm三、Helm安裝ArgoCD實戰1. 添加Arg…

[C++類和對象]類和對象的引入

面向過程和面向對象 C語言是面向過程的,關注的是過程,分析出求解問題的步驟,通過函數調用來逐步解決問題 C是基于面向對象的,關注的是對象,將一件事情分成不同的對象,靠對象之間完成交互 類的引入 C語言結構體中只能定義變量,在C中,結構體不僅僅可以定義變量,而且可以定義函…

AWS之存儲服務

目錄 一、傳統存儲術語 二、傳統存儲與云存儲的關系 三、云存儲之AWS 使用場景 文件存儲 數據塊存儲 對象存儲 EBS、EFS、S3對比 EBS塊存儲 S3對象存儲 S3 使用案例 S3 存儲類 EFS文件存儲 一、傳統存儲術語 分類 接口/技術類型 應用場景特點 關系及區別 機械硬…

WPDRRC 模型:構建動態閉環的信息安全防御體系

WPDRRC 模型是一種信息安全整體架構設計模型&#xff0c;由預警&#xff08;Warning&#xff09;、保護&#xff08;Protection&#xff09;、檢測&#xff08;Detection&#xff09;、反應&#xff08;Reaction&#xff09;、恢復&#xff08;Recovery&#xff09;和反擊&…