Docker筆記2025

Docker筆記

學(xué)習(xí)資料

官方安裝手冊:(Docker官網(wǎng)) - Developers - Documentation - Docker Engin - Install - 找匹配的操作系統(tǒng)

網(wǎng)站Docker學(xué)習(xí)視頻

安裝Docker

本例為CentOS體系操作系統(tǒng)。

卸載所有docker:

sudo yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-engine

安裝yum-util并設(shè)置為國內(nèi)阿里下載源:

sudo yum install -y yum-utils
sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

安裝docker相關(guān)軟件:

sudo yum install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

部分預(yù)裝了組件的系統(tǒng)可能會遇到安裝沖突,可以卸載預(yù)裝的一些組件,再重新安裝docker,比如:

問題 1: 安裝的軟件包的問題 podman-2:4.0.2-6.module+an8.6.0+10751+21528717.x86_64
  - 軟件包 podman-2:4.0.2-6.module+an8.6.0+10751+21528717.x86_64 需要 runc >= 1.0.0-57,但沒有提供者可以被安裝
  
以上通過yum remove runc -y刪除沖突之后,再重新安裝docker

啟動Docker服務(wù),設(shè)置為自啟動:

sudo systemctl start docker
sudo systemctl enable docker

查看Docker信息,如下命令如果能顯示信息就算成功:

docker ps

配置國內(nèi)全局鏡像加速器

編輯 Docker 的配置文件,在大多數(shù) Linux 系統(tǒng)中,Docker 的配置文件位于 /etc/docker/daemon.json。如果該文件不存在,則需要手動創(chuàng)建。

sudo mkdir -p /etc/docker
sudo nano /etc/docker/daemon.json

添加鏡像加速器配置:在 daemon.json 文件中添加以下內(nèi)容:

[root@ops multi-install-apps]# cat /etc/docker/daemon.json
{
  "insecure-registries": [
    "192.168.100.198",
    "192.168.100.199",
    "192.168.100.240",
    "192.168.100.241",
    "r.oso.plus",
    "r.upx.plus",
    "r.seeyon.ren",
    "hub.openeeds.com"
  ],
  "exec-opts": [
    "native.cgroupdriver=systemd"
  ],
  "registry-mirrors": [
    "https://hub.openeeds.com",
    "https://dockerproxy.net",
    "https://docker.1panel.dev",
    "https://dockerpull.com",
    "https://dockerproxy.cn",
    "https://docker.udayun.com",
    "https://docker.1panel.live",
    "https://docker.rainbond.cc",
    "https://docker.1ms.run",
    "https://hub.rat.dev"
  ],
  "data-root": "/data/docker",
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "100m"
  },
  "experimental": true
}

重啟 Docker 服務(wù),保存并關(guān)閉文件后,重啟 Docker 服務(wù)以使配置生效:

sudo systemctl daemon-reload
sudo systemctl restart docker

驗(yàn)證配置是否生效:運(yùn)行以下命令查看 Docker 的配置信息:

sudo docker info

鏡像操作

查找nginx鏡像,國內(nèi)連不上是正常的:

docker search nginx

pull下載鏡像

docker hub搜索下載完整鏡像:

  • 搜索帶Official標(biāo)志的官方鏡像
  • 通過Tag可以找歷史版本

找到拉取鏡像的命令執(zhí)行,示例如下:

docker pull nginx:1.28

正常情況這個連接不通,原因是國內(nèi)將這個屏蔽了:

docker pull nginx:1.28
Error response from daemon: Get "https://registry-1.docker.io/v2/": read tcp 192.168.94.131:39572->98.85.153.80:443: read: connection reset by peer

解決docker pull網(wǎng)絡(luò)不通問題,實(shí)測有兩個方案(當(dāng)前驗(yàn)證時間2025年6月):

方案一:設(shè)置鏡像加速器

sudo mkdir -p /etc/docker
sudo nano /etc/docker/daemon.json

daemon.json中填入以下內(nèi)容后保存:
{
  "registry-mirrors": ["https://docker.m.daocloud.io"]
}

保存后執(zhí)行如下命令重啟使配置生效:
sudo systemctl daemon-reload
sudo systemctl restart docker

使用如下命令檢查mirrors是否配置生效:
sudo docker info

以上完成后,嘗試重新docker pull拉取鏡像。

方案二:使用國內(nèi)個人鏡像地址

訪問 https://docker.aityp.com/ 這個地址,然后搜索需要拉取的鏡像,根據(jù)網(wǎng)頁下半部分的指引,取對應(yīng)命令拉取即可。示例如:

docker pull swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/nginx:1.27.0

查看鏡像列表

docker images

查看鏡像詳情

docker inspect <鏡像ID> | <鏡像名:標(biāo)簽>

刪除鏡像

docker rmi <IMAGE ID> | <REPOSITORY:TAG>

示例如下:
docker rmi nginx:alpine

或者下方93ad19b5b847是image id
docker rmi 93ad19b5b847

保存鏡像

docker save -o <文件名>.tar <鏡像ID> | <鏡像名:標(biāo)簽>

cd /data
文件默認(rèn)導(dǎo)出在當(dāng)前cd的目錄:
docker save -o nginx.tar nginx:alpine
或者:
docker save -o nginx.tar 93ad19b5b847

加載鏡像

將保存的鏡像加載到docker容器中
docker load -i nginx.tar

標(biāo)記鏡像(重命名)

將images中的nginx:alpine改名為myregistry/nginx:alpine
docker tag nginx:alpine myregistry/nginx:alpine

推送鏡像

將自己維護(hù)的鏡像推送到dockerhub:

docker push myregistry/nginx:alpine

容器操作

創(chuàng)建容器:

docker run -d --name my-nginx -p 8080:80 nginx:alpine

解釋:

  • -d: 后臺運(yùn)行容器
  • --name: 指定容器名稱
  • -p: 映射端口(主機(jī)端口:容器端口)
  • nginx:alpine: 使用的鏡像(也可以IMAGE ID)

查看活動容器

docker ps

重要參數(shù):

  • CONTAINER ID 容器ID
  • NAMES 容器名

查看所有容器(包括已停止的)

docker ps -a

啟動容器

也支持根據(jù)容器ID操作
docker start nginx

停止容器

也支持根據(jù)容器ID操作
docker stop my-container

重啟容器

也支持根據(jù)容器ID操作
docker restart my-container

進(jìn)入容器內(nèi)部:

也支持根據(jù)容器ID操作
docker exec -it my-container /bin/bash

查看容器日志:

docker logs my-container

附加參數(shù):

  • -f: 實(shí)時跟蹤日志。
  • --tail: 顯示最近的若干行日志。

查看容器CPU、內(nèi)存:

docker stats

查看容器詳情

docker inspect <容器Names前三位>
docker inspect 87a

刪除容器:

docker rm my-container

容器目錄掛載

目錄掛載:在Docker容器外設(shè)定一個目錄與Docker容器內(nèi)部的某個目錄進(jìn)行掛載,后續(xù)修改容器外的文件,在容器內(nèi)也會增加對應(yīng)文件。

注意:假設(shè)容器外的目錄沒有文件,容器內(nèi)的目錄有文件,使用目錄掛載后,Docker讀的是容器外的目錄(沒有文件那個)。即目錄掛載以容器外的目錄文件為準(zhǔn)。

目錄掛載,在初始啟動時執(zhí)行,支持設(shè)置多個掛載目錄:

# -v 容器外的目錄:容器內(nèi)的目錄
docker run -d --name my-nginx -p 8080:80 -v /host/path1:/container/path1 -v /host/path2:/container/path2 nginx:alpine

容器卷映射

卷映射:容器內(nèi)有一個目錄下有若干文件,我希望啟動容器時,將容器內(nèi)對應(yīng)目錄的文件同步到容器外,然后修改容器外的文件就讓容器內(nèi)自動生效。

注意:卷映射默認(rèn)是讀取容器內(nèi)的文件,映射到容器外。

卷默認(rèn)存放在/var/lib/docker/volumes/目錄下,就是一個文件夾的名稱,文件夾不用創(chuàng)建,執(zhí)行docker run 自定義卷后,會自動創(chuàng)建。

# 示例如下-v后面的nginxvolume就是卷名,單docker run之后,/var/lib/docker/volumes/nginxvolume就生成了,進(jìn)去就是容器內(nèi)的所有文件
docker run -d --name my-nginx -p 8080:80 -v nginxvolume:/container/nginxconfig nginx:alpine

操作卷命令:

docker volume [option]

自定義網(wǎng)絡(luò)

創(chuàng)建網(wǎng)絡(luò):

docker network create mynet

docker network ls

讓容器走自定義網(wǎng)絡(luò):

docker run -d --name my_nginx1 -p 8080:80 -network mynet nginx:alpine
docker run -d --name my_nginx2 -p 8081:80 -network mynet nginx:alpine

以上兩個容器可以通過如下方式互訪:
http://my_nginx1:80
http://my_nginx2:80

Docker-compose組件

Docker Compose 是一個用于定義和運(yùn)行多容器 Docker 應(yīng)用程序的工具。它允許你通過一個 docker-compose.yml 文件來配置應(yīng)用程序的服務(wù)、網(wǎng)絡(luò)和卷等。

后臺啟動(在docker-compose.yml目錄下執(zhí)行):

docker-compose up -d

查看日志:

docker-compose logs -f

停止服務(wù):

docker-compose down

查看服務(wù)進(jìn)程:

docker-compose ps

Dockerfile

Dockerfile是構(gòu)建 Docker 鏡像的基礎(chǔ)工具,通過它你可以自動化地定義鏡像的構(gòu)建過程。掌握 Dockerfile 的指令和語法,可以幫助你高效地創(chuàng)建和管理 Docker 鏡像。

卸載Docker

sudo yum remove -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin docker-ce-rootless-extras

刪除相關(guān)文件:

sudo rm -rf /var/lib/docker
sudo rm -rf /var/lib/containerd
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Docker應(yīng)用容器 1. 初識 Docker 我們寫的代碼會接觸到好幾個環(huán)境:開發(fā)環(huán)境、測試環(huán)境以及生產(chǎn)環(huán)境。 ...
    itlu閱讀 359評論 0 5
  • Docker 和虛擬機(jī) 容器內(nèi)的進(jìn)程是直接運(yùn)行于宿主內(nèi)核的,這點(diǎn)和宿主進(jìn)程一致,只是容器的 userland 不同...
    Jancd閱讀 560評論 0 8
  • devops:運(yùn)維人員會在項(xiàng)目開發(fā)期間就介入到開發(fā)過程中,了解開發(fā)人員使用的系統(tǒng)架構(gòu)和技術(shù)路線,從而制定適當(dāng)?shù)倪\(yùn)維...
    一笑奈何_abe4閱讀 342評論 0 0
  • Docker概覽 運(yùn)維視角 Docker安裝: 先刪除以前安裝的docker: 添加yum相關(guān)工具: 添加阿里yu...
    知道的太少閱讀 606評論 0 4
  • Docker 簡介 這里引用了《第一本 Docker 書》的解釋。 Docker 遵循 客戶端-服務(wù)器(C/S) ...
    UmaruD閱讀 186評論 0 1

友情鏈接更多精彩內(nèi)容