運行環境
Operating System: Debian GNU/Linux 11 (bullseye)
Kernel: Linux 5.10.0-18-amd64
Architecture: x86-64
透過 Debian 官方軟體倉庫安裝#
# 更新軟體源 並 安裝 docker及相關應用
sudo apt update && sudo apt install -y docker docker.io docker-compose
# 查看docker運行狀態
sudo systemctl status docker
# 查看docker信息
sudo docker info
# 驗證是否安裝成功
sudo docker run hello-world
鏡像加速器#
訪問 https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors 獲取自己的阿里雲鏡像加速器地址
修改 /etc/docker/daemon.json
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"max-concurrent-downloads": 3,
"max-concurrent-uploads": 3,
"max-download-attempts": 3,
"registry-mirrors": ["https://修改為自己的.mirror.aliyuncs.com","https://hub-mirror.c.163.com","https://registry.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
清理 docker 對象#
prune 命令用來刪除不再使用的 docker 對象。
# 刪除所有未被 tag 標記和未被容器使用的鏡像:
$ docker image prune
# 刪除所有未被容器使用的鏡像:
$ docker image prune -af
# 刪除所有停止運行的容器:
$ docker container prune
# 刪除所有未被掛載的卷:
$ docker volume prune
# 刪除所有網路:
$ docker network prune
# 刪除 docker 所有資源:
$ docker system prune
查看容器 ip#
# 查看所有容器的ip
$ docker inspect --format='{{.Name}} - {{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' $(docker ps -aq)
# 查看指定容器的ip網路配置包含網路,ip等
$ docker inspect containerId
# 查看容器的ip
$ docker exec -it containerId ip addr
修改 docker 啟動目錄#
因為裝系統時 /var 分區小,需要把 docker 啟動後的路徑改成 /home/docker , /etc/docker/daemon.json 是 docker 的配置文件,默認是沒有的,需要手動創建。
具體的操作是:
1: 設定 /etc/docker/daemon.json 文件.
內容參考:
{
"data-root":"/home/docker"
}
2. 創建並修改完 daemon.json 文件後,需要讓這個文件生效
# a.修改完成後reload配置文件
sudo systemctl daemon-reload
# b.重啟docker服務
sudo systemctl restart docker.service
# c.查看狀態
sudo systemctl status docker -l
# d.查看服務
sudo docker info
調試鏡像#
# 使用--entrypoint設置(額外增加-it選項可直接進入容器),進入容器成功。
docker run -it --entrypoint /bin/bash --name 容器名 鏡像:v30.2.9
查看程序動態庫依賴關係#
# ldd (Debian GLIBC 2.36-9+deb12u1) 2.36
# Copyright (C) 2022 Free Software Foundation, Inc.
# This is free software; see the source for copying conditions. There is NO
# warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
# Written by Roland McGrath and Ulrich Drepper.
ldd --version
# 判斷某條命令需要哪些共享庫文件的支持,以確保指定的命令在獨立的系統內可以可靠的運行
ldd /bin/bash
參考#
Docker 官方安裝文檔:
https://docs.docker.com/engine/install/debian/
docker-daemon.json 各配置詳解#
{
"api-cors-header":"", //——————在引擎API中設置CORS標頭
"authorization-plugins":[], //——————要加載的授權插件
"bridge":"", //————將容器附加到網橋
"cgroup-parent":"", //——————為所有容器設置父cgroup
"cluster-store":"", //——————分佈式存儲後端的URL
"cluster-store-opts":{}, //————————設置集群存儲選項(默認map [])
"cluster-advertise":"", //————————要通告的地址或接口名稱
"debug": true, //————————啟用調試模式,啟用後,可以看到很多的啟動信息。默認false
"default-gateway":"", //——————容器默認網關IPv4地址
"default-gateway-v6":"", //——————容器默認網關IPv6地址
"default-runtime":"runc", //————————容器的默認OCI運行時(默認為" runc")
"default-ulimits":{}, //——————容器的默認ulimit(默認[])
"dns": ["192.168.1.1"], //——————設定容器DNS的地址,在容器的 /etc/resolv.conf文件中可查看。
"dns-opts": [], //————————容器 /etc/resolv.conf 文件,其他設置
"dns-search": [], //————————設定容器的搜索域,當設定搜索域為 .example.com 時,在搜索一個名為 host 的 主機時,DNS不僅搜索host,還會搜
//索host.example.com 。 注意:如果不設定, Docker 會默認用主機上的 /etc/resolv.conf 來配置容器。
"exec-opts": [], //————————運行時執行選項
"exec-root":"", //————————執行狀態文件的根目錄(默認為’/var/run/docker‘)
"fixed-cidr":"", //————————固定IP的IPv4子網
"fixed-cidr-v6":"", //————————固定IP的IPv6子網
"data-root":"/var/lib/docker", //————-Docker運行時使用的根路徑,默認/var/lib/docker
"group": "", //——————UNIX套接字的組(默認為"docker")
"hosts": [], //——————設定容器hosts
"icc": false, //——————啟用容器間通信(默認為true)
"ip":"0.0.0.0", //————————綁定容器端口時的默認IP(默認0.0.0.0)
"iptables": false, //———————啟用iptables規則添加(默認為true)
"ipv6": false, //——————啟用IPv6網路
"ip-forward": false, //————————默認true, 啟用 net.ipv4.ip_forward ,進入容器後使用 sysctl -a | grepnet.ipv4.ip_forward 查看
"ip-masq":false, //——————啟用IP偽裝(默認為true)
"labels":["nodeName=node-121"], //————————docker主機的標籤,很實用的功能,例如定義:–label nodeName=host-121
"live-restore": true, //——————在容器仍在運行時啟用docker的實時還原
"log-driver":"", //——————容器日誌的默認驅動程序(默認為" json-file")
"log-level":"", //——————設定日誌記錄級別("調試","信息","警告","錯誤","致命")(默認為"信息")
"max-concurrent-downloads":3, //——————設定每個請求的最大並發下載量(默認為3)
"max-concurrent-uploads":5, //——————設定每次推送的最大同時上傳數(默認為5)
"mtu": 0, //——————設定容器網路MTU
"oom-score-adjust":-500, //——————設定守護程序的oom_score_adj(默認值為-500)
"pidfile": "", //——————Docker守護進程的PID文件
"raw-logs": false, //——————全時間戳機制
"selinux-enabled": false, //——————默認 false,啟用selinux支持
"storage-driver":"", //——————要使用的存儲驅動程序
"swarm-default-advertise-addr":"", //——————設定默認地址或群集廣告地址的接口
"tls": true, //————————默認 false, 啟動TLS認證開關
"tlscacert": "", //——————默認 ~/.docker/ca.pem,通過CA認證過的的certificate文件路徑
"tlscert": "", //————————默認 ~/.docker/cert.pem ,TLS的certificate文件路徑
"tlskey": "", //————————默認~/.docker/key.pem,TLS的key文件路徑
"tlsverify": true, //————————默認false,使用TLS並做後台進程與客戶端通訊的驗證
"userland-proxy":false, //——————使用userland代理進行環回流量(默認為true)
"userns-remap":"", //————————用戶名稱空間的用戶/組設置
"bip":"192.168.88.0/22", //——————————指定網橋IP
"registry-mirrors": ["https://192.498.89.232:89"], //————————設定鏡像加速
"insecure-registries": ["192.168.0.123:12312"], //———————設定私有倉庫地址可以設為http
"storage-opts": [
"overlay2.override_kernel_check=true",
"overlay2.size=15G"
], //————————存儲驅動程序選項
"log-opts": {
"max-file": "3",
"max-size": "10m",
}, //————————容器默認日誌驅動程序選項
"iptables": false //————————啟用iptables規則添加(默認為true)
}