Skip to content

docker

  • 文档
  • 安装 curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyuncurl -sSL https://get.daocloud.io/docker | sh

常用命令

sh
docker pull ubuntu                          # 载入 ubuntu 镜像
docker run -it ubuntu /bin/bash             # 使用 ubuntu 镜像启动一个容器,-i: 交互式操作,-t: 终端
docker rmi id                               # 删除镜像
docker ps                                   # 查看正在运行的容器
docker ps -a                                # 查看所有的容器
docker start id                             # 启动容器
docker restart id                           # 重启容器
docker stop id                              # 停止容器
docker rm -f id                             # 删除容器
docker exec -it id /bin/bash                # 进入容器
docker run -itd --name ubuntu-test ubuntu /bin/bash     # -d: 不会进入容器,后台运行
docker inspect test                         # 查看容器详细信息

网络

sh
docker network create -d bridge test-net    # 新建网络
docker network ls                           # 查看网络
docker run -itd --name ubuntu-test --network test-net ubuntu /bin/bash     # --network: 设置网络

容器

sh
docker rm -f id                             # 删除容器
docker rmi REPOSITORY:TAG                   # 删除镜像
docker build -t hsiangleev/httptest:v1 .    # 构建容器(.为查找当前目录下的Dockerfile)
docker run --name test -d -p 127.0.0.1:3000:3000 hsiangleev/httptest:v1 # 运行容器

文件传输

sh
docker cp container_id:docker容器内的路径 本地保存文件的路径
docker cp 本地文件的路径 container_id:docker容器内的路径

挂载本地文件

sh
docker run -itd --name docs -p 8080:80 \
--mount type=bind,source=/web/docker/default.conf,target=/etc/nginx/nginx.conf \
--mount type=bind,source=/web/docker/dist,target=/usr/share/nginx/html \
nginx

数据卷

sh
docker volume create docs           # 新建数据卷
docker volume ls                    # 查看所有数据卷
docker volume inspect docs          # 查看数据卷详细信息
docker volume rm docs               # 删除数据卷
docker volume prune                 # 删除未被使用的数据卷
sh
docker run -itd --name test -p 8080:80 \
--mount source=docs,target=/usr/share/nginx/html \
nginx

docker-compose

sh
docker compose down -v          # 停止并删除容器(-v: 删除镜像卷)
docker compose pull             # 重新拉取镜像(更新)
docker compose up -d            # 构建启动
docker inspect 容器id | grep com.docker.compose       # 查询docker.compose的文件路径

操作compose中的某个服务

sh
docker compose ps                   # 查看compose服务信息
docker compose restart 服务名       # 重启compose某个服务
docker compose stop 服务名          # 停止compose某个服务
docker compose pull 服务名          # 重启compose某个服务
docker compose up -d 服务名         # 重建compose某个服务

常用软件

sh
nginx: docker run -itd --name nginx -p 80:80 --mount type=bind,source=E:\program\docker\nginx\conf\nginx.conf,target=/etc/nginx/nginx.conf --mount type=bind,source=E:\program\docker\nginx\html,target=/usr/share/nginx/html nginx
gitlab: docker run -d -p 80:80 --name gitlab --restart unless-stopped --volume E:\program\docker\gitlab\etc:/etc/gitlab --volume E:\program\docker\gitlab\log:/var/log/gitlab --volume E:\program\docker\gitlab\data:/var/opt/gitlab gitlab/gitlab-ce:16.9.1-ce.0
gotenberg(pdf转换): docker run -itd --name gotenberg -p 6081:3000 gotenberg/gotenberg:8

常用compose示例

yaml
services:
  ubuntu:
    image: ubuntu:24.04
    stdin_open: true      # 相当于 docker run -i
    tty: true             # 相当于 docker run -t
    ports:
      - 18810:8100
    environment:
      - TZ=Asia/Shanghai
yaml
services:
  nginx:
    image: nginx:alpine
    container_name: nginx
    volumes:
      - ./nginx/nginx.conf:/etc/nginx/nginx.conf:ro
      - ./web:/web
    ports:
      - "1888:80"
    environment:
      - TZ=Asia/Shanghai

镜像加速

  • 常用镜像

    json
    {
        "registry-mirrors": [
            "https://docker.1ms.run",
            "https://dockerproxy.cn",
            "https://k-docker.asia",
            "https://docker.ketches.cn"
        ]
    }
  • 阿里云镜像加速

设置时区

  • docker run -e TZ=Asia/Shanghai your_image_name

  • docker-compose.yml文件中

    yml
    services:
        immich-server:
            environment:
            - TZ=Asia/Shanghai

自动重启策略

restart:

属性名说明
no默认值,不自动重启容器。
always不管退出原因,都会自动重启容器(包括手动 docker restart、系统重启后也会启动)。
on-failure只有当容器 非 0 状态退出(出错) 时才重启。可以配合次数限制(如 on-failure:3)。
unless-stopped和 always 类似,但如果你手动停止了容器(docker stop),即使系统重启也不会重新启动。