一、 镜像操作
  1. 列出镜像
    docker image ls

  2. 删除镜像
    docker image rm 镜像ID

  3. 修剪镜像
    docker image prune

  4. 定制镜像

    1. 创建 Dockerfile
      vim Dockerfile
    2. 基本语法
       FROM centos:7
       ENV MY-ENV=example
       # 可以创建 .dockerignore 设置忽略文件
       COPY . /path/to/app
       WORKDIR /path/to/app
       RUN yum -y install epel-release \
           && yum -y install golang
       CMD ["go", "run", "main.go"]
    3. 多阶段构建
       # step-one
       FROM golang:1.17 AS step-one
       ENV GO111MODULE=on \
           GOPROXY=https://goproxy.cn,direct \
           CGO_ENABLED=0 \
           GOOS=linux \
           GOARCH=amd64
       COPY . /myapp
       WORKDIR /myapp
       RUN go mod tidy \
        && go build -v -o /myapp/run .
       # step-two
       FROM alpine:3 AS step-two
       WORKDIR /myapp
       COPY --from=step-one /myapp/run ./run
       RUN chmod +x ./run
       CMD [ "/myapp/run" ]
    4. 构建镜像
      docker build -t my-image .
  5. 配置镜像加速器
    vim /etc/docker/daemon.json

     {
         "registry-mirrors": [
             "https://docker.mirrors.ustc.edu.cn",
             "https://hub-mirror.c.163.com",
             "https://mirror.baidubce.com",
             "https://reg-mirror.qiniu.com"
         ]
     }
  6. 登录到远程仓库
    docker login -u用户名

  7. 打标签
    docker tag 镜像名 用户名/新镜像名:xx.xx

  8. 上传镜像
    docker push 用户名/镜像名:版本号

二、 容器操作
  1. 列出容器
    docker container ls (-a)

  2. 删除容器
    docker container rm 容器ID

  3. 修剪容器
    docker container prune

  4. 启动容器

    1. 启动服务(后台运行)
       docker run --name my-container \
               --network my-network \
               # 本地目录 \
               -v $PWD:/path/to/app:ro \
               # 数据卷 \
               # -v my-volume:/path/to/app:ro \
               -p local-port:container-port \
               --restart=no,always,unless-stopped \
               -d \
               image-name:版本号
    2. 运行脚本(前台运行)
       docker run --network my-network \
                  # 本地目录 \
                  -v $PWD:/path/to/app \
                  # 数据卷 \
                  # -v my-volume:/path/to/app \
                  -it --rm \
                  image-name:版本号  (+命令)
  5. 容器操作

    1. 启动
      docker container start 容器ID
    2. 停止
      docker container stop 容器ID
    3. 重启
      docker container restart 容器ID
    4. 进入运行中的容器
      docker exec -it 容器ID /bin/bash
    5. 查看日志
      # 查看所有日志
      docker container logs 容器ID
      # 查看最近100条日志
      docker container logs -f -t --tail=100 容器ID
    6. 将容器内部文件/文件夹复制到主机
      docker cp 容器ID:/path/to/container/file /path/to/host
三、 网络操作
  1. 列出网络
    docker network ls

  2. 删除网络
    docker network rm 网络名

  3. 修剪网络
    docker network prune

  4. 创建网络
    docker network create -d bridge my-network

四、数据卷操作
  1. 列出数据卷
    docker volume ls

  2. 删除数据卷
    docker volume rm 数据卷名

  3. 修剪数据卷
    docker volume prune

  4. 创建数据卷
    docker volume create my-volume

  5. 查看数据卷信息
    docker volume inspect my-volume

五、系统操作
  1. 显示系统占用磁盘大小
    docker system df

  2. 优化 docker 磁盘占用空间
    docker system prune

  3. 打印系统信息
    docker system info

  4. 实时显示 docker 事件
    docker system events

六、 docker-compose 用法
  1. 创建配置文件
    vim docker-compose.yml

     # 版本声明
     version: '3.5'
     services:
         # 构建后的容器名,容器之间通过该名称进行通信。例:ping go-container
         mysql-container:
             # 直接使用原镜像
             image: mysql:5.7
             restart: on-failure
             # 端口映射
             ports:
                 - 10800:3306
             # 定义环境变量
             environment:
                 - TZ=Asia/Shanghai
     #        # 使用子网段
     #        networks:
     #            my-subnet:
     #                ipv4_address: 10.0.10.11
         # 构建后的容器名,容器之间通过该名称进行通信。例:ping mysql-container
         go-container:
             # 在 mysql-container 容器启动之后再启动
             depends_on:
                 - mysql-container
             # 通过 Dockerfile 文件定制容器
             build:
                 context: ./go/
                 dockerfile: Dockerfile
             restart: always
             # 端口映射
             ports:
                 - 10801:8080
             # 挂载主机目录
             volumes:
                 - .:/myapp
             # 定义环境变量
             environment:
                 - TZ=Asia/Shanghai
     #        # 使用子网段
     #        networks:
     #            my-subnet:
     #                ipv4_address: 10.0.10.12
     # 使用 docker network 创建的网络
     networks:
         default:
             external:
                 name: my-network
     ## 创建子网段
     #networks:
     #    my-subnet:  # 网络名
     #        driver: bridge
     #        ipam:
     #            config:
     #                - subnet: 10.0.10.0/16
  2. 运行服务

    1. 前台运行
      docker-compose up
    2. 后台运行
      docker-compose up -d
    3. 强制构建
      docker-compose up --build
文档更新时间: 2024-04-20 10:57   作者:lee