Docker
如无例外 以下均在 ubuntu 系统上操作
docker 官网:https://www.docker.com/
1. 安装
1.1 更简单的安装方法
使用docker 官方提供的安装脚本,来自Docker 官方GitHub仓库
并使用阿里云的镜像
Tips
如果希望安装特定版本,可以使用-v 参数,下文的portainer 和docker 存在一些版本兼容问题 如:
设置docker 开机自启动
1.2 官网文档安装方法
文档:https://docs.docker.com/engine/

需要注意的是,要安装的是 Docker Enfine,而不是Docker Desktop
ubuntu 安装文档 https://docs.docker.com/engine/install/ubuntu/
按照官方文档安装即可,因为涉及到国内网络对docker 官方软件源访问受限的问题,上面阿里云的官方安装脚本是比较好的选择
2. Docker-Compose
非必要
Docker Compose 是 Docker 的一个工具,用于定义和运行多个容器的应用程序。它允许你通过一个 YAML 文件来配置多个容器,定义它们之间的关系和依赖,并且可以一键启动、停止和管理这些容器。
安装 docker-compose
外部网络+静态IP
最近在尝试搭建一个 chat gpt 聊天相关的项目,但是逆向程序还有UI界面在不同的项目,我希望UI直接访问我的逆向项目接口,每一个项目分配一个固定ip
最开始先创建这样一个网络,要求必须 指定 --subnet创建的网络才能指定静态IP
然后一个 docker compose 例子如下:
version: '3'
# 声明外部网络
networks:
chat-net-et0:
external: true
services:
lobe-chat:
image: lobehub/lobe-chat # 这是一个ChatGPT相关的UI界面项目,比较美观
container_name: lobe-chat
ports:
- "3210:3210"
environment:
- OPENAI_API_KEY=xxx
- OPENAI_PROXY_URL=http://172.19.0.6:8888/v1 #另一个容器 被分配 172.19.0.6,我这里直接使用另一个容器的固定ip 访问它
- ACCESS_CODE=xxxx
networks:
chat-net-et0: # 指定网络和ip
ipv4_address: 172.19.0.3
3. Portainer
Tips
官方文档(安装更新):https://docs.portainer.io/start/upgrade/docker
Portainer 是一个开源的 Docker 容器管理工具,https://docs.portainer.io/user/home

docker pull portainer/portainer-ce:latest #ce 是社区版,详情查看官方文档
docker run -d \
-p 8000:8000 \
-p 9000:9000 \
-p 9443:9443 \
--name=portainer \
--restart=always \
-v /var/run/docker.sock:/var/run/docker.sock \
-v portainer_data:/data portainer/portainer-ce:latest
Unable to retrieve image details or access container console after update of Docker to v26
不能打开命令行
docker image rm portainer/portainer-ce:latest
docker pull portainer/portainer-ce:2.20.3
docker image tag portainer/portainer-ce:2.20.3 portainer/portainer-ce:latest
其他
使用代理拉取镜像
设置透明代理方式
sudo ip route del default && sudo ip route add default via 192.168.0.10 dev enp2s0
# 其中 192.168.0.10 为网关地址 eth0 为网卡地址
推荐使用透明代理方式,而非手动配置代理
手动配置代理
docker 配置拉取镜像时候的代理
sudo mkdir -p /etc/systemd/system/docker.service.d
sudo touch /etc/systemd/system/docker.service.d/http-proxy.conf
向 /etc/systemd/system/docker.service.d/proxy.conf 写入代理信息
[Service]
Environment="http_proxy=http://127.0.0.1:7899/"
Environment="https_proxy=http://127.0.0.1:7899/"
Environment="no_proxy=localhost,127.0.0.0/8,docker-registry.somecorporation.com"
重启服务