# Docker常见问题 ## 1. Docker镜像拉取失败 > 可以尝试更换镜像源 > > 首先进入打开daemon配置文件 > > ```sh > #执行 > nano /etc/docker/daemon.json > # 或者 > vim /etc/docker/daemon.json > ``` > > 一般是空的文件,我们可以把网上找到的镜像源粘贴到上面,格式形如 > > ```json > { > "dns": ["8.8.8.8", "8.8.4.4"], > "registry-mirrors": [ > "https://docker.mirrors.sjtug.sjtu.edu.cn", > "https://cr.laoyou.ip-ddns.com", > "https://docker.1panel.live", > "https://image.cloudlayer.icu", > "https://hub.fast360.xyz", > "https://docker-0.unsee.tech", > "https://docker.1panelproxy.com", > "https://docker.tbedu.top", > "https://dockerpull.cn", > "https://docker.m.daocloud.io", > "https://hub.rat.dev", > "https://docker.kejilion.pro", > "https://docker.hlmirror.com", > "https://docker.imgdb.de", > "https://docker.melikeme.cn", > "https://ccr.ccs.tencentyun.com" > ] > } > ``` > > 然后重启Docker服务即可 > > ```sh > sudo systemctl restart docker > ``` ## 2. Docker容器自启动 > 这里拿pgsql举例 ### **方法 1:使用 `docker run` 时设置自启动** 在运行容器时,使用 `--restart` 参数指定重启策略 ``` docker run --name my-postgres \ -e POSTGRES_PASSWORD=mysecretpassword \ -p 5432:5432 \ -v /var/lib/postgresql/data:/var/lib/postgresql/data \ --restart unless-stopped \ # 关键参数:设置自启动策略 -d postgres ``` ### **`--restart` 可选策略** | 策略 | 说明 | | :------------------------- | :----------------------------------------------------------- | | `no` | **默认**,容器不会自动重启 | | `always` | **总是重启**(即使手动停止 `docker stop`,Docker 服务重启后也会自动启动) | | `unless-stopped` | **除非手动停止**(`docker stop` 后不会自启,其他情况如系统重启会自动恢复) | | `on-failure[:max-retries]` | **失败时重启**(可设置最大重试次数,如 `on-failure:5`) | ------ ### **方法 2:修改已运行的容器** 如果容器已经创建,可以用 `docker update` 修改其重启策略: ``` docker update --restart unless-stopped my-postgres ``` ------ ### **方法 3:在 `docker-compose.yml` 中配置** 如果使用 Docker Compose,在 `services` 下添加 `restart` 字段: ``` services: postgres: image: postgres container_name: my-postgres restart: unless-stopped # 可选 always / on-failure / no environment: POSTGRES_PASSWORD: mysecretpassword volumes: - /var/lib/postgresql/data:/var/lib/postgresql/data ports: - "5432:5432" ```