Docker 笔记

一、基础命令

1. 运行容器

docker run -d \
  -v /etc/sing-box:/etc/sing-box/ \
  --name=sing-box \
  --restart=always \
  ghcr.io/sagernet/sing-box \
  -D /var/lib/sing-box \
  -C /etc/sing-box/ run

2. 导出/导入镜像

# 导出镜像
docker save -o sing-box.docker 31aecdf46da9
docker save -o srs.docker 57c85f93e6d5

# 导入镜像
docker load -i ./sing-box.docker
docker load -i ./srs.docker

# 打标签
docker tag 31aecdf46da9 gzxhwq/sing-box:latest
docker tag 57c85f93e6d5 ossrs/srs-stack:5

3. 拉取镜像

docker pull docker.mirrors.ustc.edu.cn:dreamacro/clash:latest

二、镜像信息

镜像标签镜像ID更新时间大小
centralx/clashlatestad83a41621dc17 months ago222MB
dreamacro/clashlatest09508d094ad522 months ago24.6MB

三、Docker ↔ Podman 兼容操作

操作命令说明
Docker → Podman 导出docker save -o file.tar IMAGE前提:使用默认格式且架构匹配
Docker → Podman 导入podman load -i file.tar同上
Podman → Docker 导出podman save -o file.tar IMAGE前提:架构匹配
Podman → Docker 导入docker load -i file.tar同上

四、Clash 容器操作

1. 运行 Clash

# 使用 dreamacro/clash
docker run -d --name clash \
  -v /data/clash/clash.yaml:/root/.config/clash/config.yaml \
  -p 7890:7890 -p 7891:7891 -p 9090:9090 \
  --network bridge dreamacro/clash

# 使用 centralx/clash
docker run -d --name clash \
  -v /data/clash/clash.yaml:/root/.config/clash/config.yaml \
  -p 7890:7890 -p 7891:7891 -p 9090:9090 \
  centralx/clash

2. 管理 Clash

# 删除容器
docker rm -f clash

# 查看端口映射
docker inspect clash | grep -i port

3. 测试代理

# 测试代理连接
curl --proxy http://127.0.0.1:7890 http://www.google.com
curl --proxy http://192.168.10.185:7890 http://www.google.com

4. 设置环境变量代理

# 临时设置
export http_proxy="http://192.168.10.185:7890"
export https_proxy="http://192.168.10.185:7890"
export HTTP_PROXY="http://192.168.10.185:7890"
export HTTPS_PROXY="http://192.168.10.185:7890"

# 永久生效(写入 ~/.bashrc)
source ~/.bashrc

5. 进入容器并安装工具

docker exec -it clash /bin/sh
apk add curl   # Alpine 系统

五、Docker 代理配置

1. 配置 Docker Daemon 代理

# 创建配置目录
sudo mkdir -p /etc/systemd/system/docker.service.d

# 编辑配置文件
sudo nano /etc/systemd/system/docker.service.d/http-proxy.conf

配置文件内容:

[Service]
Environment="HTTP_PROXY=http://your_username:your_password@your_proxy_address:your_proxy_port"
Environment="HTTPS_PROXY=http://your_username:your_password@your_proxy_address:your_proxy_port"
Environment="NO_PROXY=localhost,127.0.0.1"

重启 Docker:

sudo systemctl daemon-reload
sudo systemctl restart docker

# 检查代理是否生效
docker info | grep -i proxy

2. 命令行指定代理

# 拉取镜像时指定代理
docker pull --tlscert /path/to/cert.pem \
  --tlskey /path/to/key.pem \
  --proxy-server "http://your_proxy_address:port" image_name

# 示例
docker pull --proxy-server "http://192.168.10.185:7890" nocodb/nocodb

3. Docker Search 使用代理

docker search --proxy-server "http://192.168.10.185:7890" ghcr.io/dingyufei615/ai-goofish:latest

六、系统信息查看

# 查看系统版本
cat /etc/*-release
hostnamectl

# Debian/Ubuntu
lsb_release -a

# CentOS
cat /etc/centos-release

七、Docker 镜像加速

1. 腾讯云镜像加速

Debian、CentOS 6、Fedora、openSUSE
编辑 /etc/default/docker

DOCKER_OPTS="--registry-mirror=https://mirror.ccs.tencentyun.com"

CentOS 7、Ubuntu 22.04
编辑 /etc/docker/daemon.json

{
  "registry-mirrors": [
    "https://mirror.ccs.tencentyun.com"
  ]
}

2. 使用加速镜像地址

# 原命令可能很慢
docker pull nginx:latest

# 使用毫秒镜像加速
docker pull docker.1ms.run/nginx:latest

3. 配置多个镜像源

sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": [
    "https://docker.xuanyuan.me",
    "https://docker.1ms.run",
    "https://docker.m.daocloud.io"
  ]
}
EOF

八、Git 代理配置

git clone https://github.com/dingyufei615/ai-goofish-monitor \
  --config http.proxy="http://192.168.10.185:7890"

九、重启服务

# 重启 systemd 和 Docker
sudo systemctl daemon-reload
sudo systemctl restart docker

如果需要进一步分类或补充其他内容,可以告诉我。

标签: none

添加新评论