Docker

Docker 安裝

apt update

# 自動安裝 1
curl -fsSL https://get.docker.com -o get-docker.sh
sh get-docker.sh --mirror Aliyun

# 自動安裝 2
curl -sSL https://get.daocloud.io/docker | sh 

# 手動安裝 - 成功率不高
wget https://download.docker.com/linux/debian/dists/buster/pool/stable/arm64/docker-ce_19.03.8~3-0~debian-buster_arm64.deb
sudo dpkg -i docker-ce*.deb
sudo apt -f install

版本

docker info

自啟 / 重啟 / 關閉 / 狀態

systemctl start docker
systemctl restart docker
systemctl stop docker
systemctl status docker

卸載

mv /var/lib/dpkg/info/docker-ce* /tmp/
dpkg --remove --force-remove-reinstreq docker-ce
apt autoremove
apt autoclean
#rm -rf /var/lib/docker

加速鏡像

rm -fr /etc/docker/daemon.json
tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://docker.mirrors.ustc.edu.cn"]
}
EOF

當前鏡像

service docker restart
docker info | grep "Registry Mirrors" -A 1

Docker Web

給 Docker 添加可視化界面

# 忽略
docker rm Portainer -f
docker volume rm Portainer_data

# 創建卷
docker volume create Portainer_data

# 運行
docker run -d \
    --name=Portainer \
    --restart always \
    -e TZ=Asia/Shanghai \
    -p 10000:9000 \
    -v /var/run/docker.sock:/var/run/docker.sock \
    -v Portainer_data:/data \
    portainer/portainer:linux-arm64

# 參數:
-d:后台運行
--name Portainer                                # 容器名稱
--restart always                                # 開機自啟
-e TZ=Asia/Shanghai                             # 設定時區
-p 10000:9000                                   # 宿主機 10000 端口映射容器的 9000 端口
-v /var/run/docker.sock:/var/run/docker.sock:   # 把宿主機的 Docker 守護進程 (Docker daemon) 默認監聽的 Unix 域套接字掛載到容器中。
-v Portainer_data:/data:                        # 把宿主機 Portainer_data 數據卷掛載到容器 /data 目錄

# https://portainer.readthedocs.io/en/stable/deployment.html

Web 訪問地址

IP:10000 -> Local

Portainer 中文(未測試)

1.新建文件夾命名為 public ,把 Portainer-CN.zip 解壓至里面。 

2.public 文件夾傳輸至系統根目錄

3.按需執行以下命令
x86-64 系統使用
docker run -d -p 10000:9000 -v /var/run/docker.sock:/var/run/docker.sock -v Portainer_data:/data -v /public:/public portainer/portainer:1.20.2

arm64
docker run -d -p 10000:9000 -v /var/run/docker.sock:/var/run/docker.sock -v Portainer_data:/data -v /public:/public portainer/portainer:linux-arm64-1.20.2

# 原作者:https://www.quchao.net/Portainer-CN.html
# 步驟:https://www.right.com.cn/forum/thread-940311-1-1.html

Docker 擴容

掛載 U 盤

fdisk -l                    # 查看磁盤情況
mkfs.ext4 /dev/sda          # u 盤是 sda,執行格式化 sda
mkdir /mnt/USB              # 創建目錄供掛載使用
mount -v /dev/sda /mnt/USB  # 掛載 U 盤
df -h                       # 查看掛載狀態
umount -v /dev/sda          # 解除掛載

停止 Docker

service docker stop

方法 A [不推薦]:

mkdir -p /etc/docker

rm -fr /etc/docker/daemon.json
tee /etc/docker/daemon.json <<-'EOF'
{
    "registry-mirrors": ["https://docker.mirrors.ustc.edu.cn"],
    "graph": "/mnt/USB/docker",     # 關鍵行
    "log-opts":{
        "max-size" :"10m","max-file":"3"
    }
}
EOF

方法 B [不推薦]:

nano /etc/fstab
/opt/docker /var/lib/docker none bind 0 0

方法 C:

# 創建目錄
mkdir /mnt/USB/docker -p

# 拷貝數據
# -rpvb 遞歸/保留屬性/覆蓋/詳細
cp /var/lib/docker/* /mnt/USB/docker -rpvb
mv /var/lib/docker /var/lib/docker.bak

# 軟連接:實際 + 目標
ln -s /mnt/USB/docker /var/lib

# 恢復步驟,刪除軟連接(警告!尾部沒有左斜杠 /)
#rm -rf /var/lib/docker

# 生效/啟動
systemctl daemon-reload
service docker restart

# 驗證
docker info
#docker info | grep 'docker Root Dir'
-----------------
顯示=成功
Docker Root Dir: /mnt/USB/docker

# 重啟自動掛載 U 盤,在 rc.local
sed -i '/exit 0/i\mount -v /dev/sda /mnt/USB' /etc/rc.local

Docker 玩法

30 多種玩法!
https://www.right.com.cn/forum/thread-911375-1-1.html