> For the complete documentation index, see [llms.txt](https://docs.chjina.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.chjina.com/it-zhi-shi-ku/docker/docker-chang-yong-ming-ling.md).

# Docker常用命令

### 修改Docker 镜像源

#### 1.编辑一下文件

```
sudo vi /etc/docker/daemon.json
```

#### 2.修改成一下配置

```
{
  "registry-mirrors": [
    "你自己的加速地址",
    "https://dh.chjina.com",
    "https://hub-mirror.c.163.com",
    "https://docker.mirrors.ustc.edu.cn"
  ]
}
```

#### 3.重启docker

```
sudo systemctl daemon-reload
sudo systemctl restart docker
```

### Docker CLI详解

例：

```
docker run -d --restart=unless-stopped -v /etc/alist:/opt/alist/data -p 5244:5244 -e PUID=0 -e PGID=0 -e UMASK=022 --name="alist" alist666/alist:latest
```

#### 核心结构

```
docker run [参数] 镜像名:标签
```

表示启动一个新的 Docker 容器，使用 `alist666/alist:latest` 镜像的最新版本。

#### 参数详解

1. **后台运行模式**

   ```bash
   -d
   ```

   * 以守护进程（detached）模式运行容器，即容器在后台运行。
2. **自动重启策略**

   ```
   --restart=unless-stopped
   ```

   * 容器异常退出时会自动重启（如程序崩溃、系统重启等）。
   * 如果用户手动停止容器（`docker stop`），则不会自动重启。
3. **数据卷映射**

   ```
   -v /etc/alist:/opt/alist/data
   ```

   * 前面是宿主机的目录。后面是容器的目录一般修改前面的宿主机的目录即可，修改容器的目录可能会无法启动。将宿主机的 `/etc/alist` 目录挂载到容器的 `/opt/alist/data`。
   * **作用**：配置文件和数据持久化（重启容器不丢失数据）。
   * **注意**：需确保宿主机 `/etc/alist` 目录存在，否则会自动创建空目录。
4. **端口映射**

   ```
   -p 5244:5244
   ```

   * 将宿主机的 5244 端口映射到容器的 5244 端口。
   * **访问方式**：通过 `http://宿主机IP:5244` 访问 Alist 服务。
5. **用户权限配置**

   ```
   -e PUID=0 -e PGID=0
   ```

   * 设置容器内进程的运行用户权限。
   * `PUID=0` 和 `PGID=0` 表示以 root 用户运行（0 是 root 的 ID）。
   * **安全问题**：非容器作者推荐不建议使用此命令
6. **文件权限掩码**

   ```
   -e UMASK=022
   ```

   * 控制新建文件的默认权限（UNIX 权限掩码）。
   * `022` 表示文件权限为 `755`（目录）和 `644`（文件）。
7. **容器命名**

   ```
   --name="alist"
   ```

   * 将容器命名为 `alist`，便于通过名称管理容器（如 `docker stop alist`）。

#### 镜像信息

```
alist666/alist:latest
```

* 使用 Docker Hub 上用户 `alist666` 维护的 Alist 镜像。
* `latest` 标签表示使用最新版本（生产环境建议指定稳定版本号）。

### Docker Compose 详解

```
version: '3.3'                 # 指定 Docker Compose 版本
services:                     # 定义服务列表
  alist:                      # 服务名称（自定义）
    image: 'alist666/alist:beta' # 指定镜像（此处为 beta 测试版）
    container_name: alist     # 容器命名（覆盖默认生成的名称）
    volumes:                  # 数据卷配置
      - '/etc/alist:/opt/alist/data'  # 宿主机目录映射，前面的是宿主机，后面是容器内
    ports:                    # 端口映射
      - '5244:5244'           # 宿主机端口:容器端口
    environment:              # 环境变量
      - PUID=0                # 用户权限
      - PGID=0                # 用户组权限
      - UMASK=022             # 文件权限掩码
    restart: unless-stopped   # 重启策略 容器异常退出时会自动重启（如程序崩溃、系统重启等）手动
```

### Docker 常用命令

```
查看运⾏中的容器
sudo docker ps

查看所有容器
docker ps -a

搜索镜像
docker search nginx

下载镜像
docker pull nginx

下载指定版本镜像
docker pull nginx:1.26.0

查看所有镜像
docker images

删除指定id的镜像
docker rmi e784f4560448

运⾏⼀个新容器
docker run nginx

停⽌容器
docker stop keen_blackwell

启动容器
docker start 592

重启容器
docker restart 592

查看容器资源占⽤情况
docker stats 592

查看容器⽇志
docker logs 592

删除指定容器
docker rm 592

强制删除指定容器
docker rm -f 592
 
后台启动容器
docker run -d --name mynginx nginx
 
后台启动并暴露端⼝
docker run -d --name mynginx -p 80:80 nginx
 
进⼊容器内部
docker exec -it mynginx /bin/bash
 
提交容器变化打成⼀个新的镜像
docker commit -m "update index.html" mynginx mynginx:v1.0
 
保存镜像为指定⽂件
docker save -o mynginx.tar mynginx:v1.0
 
删除多个镜像
docker rmi bde7d154a67f 94543a6c1aef e784f4560448
```
