一、 镜像操作
列出镜像
docker image ls
删除镜像
docker image rm 镜像ID
修剪镜像
docker image prune
定制镜像
- 创建 Dockerfile
vim Dockerfile
- 基本语法
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"]
- 多阶段构建
# 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" ]
- 构建镜像
docker build -t my-image .
- 创建 Dockerfile
配置镜像加速器
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" ] }
登录到远程仓库
docker login -u用户名
打标签
docker tag 镜像名 用户名/新镜像名:xx.xx
上传镜像
docker push 用户名/镜像名:版本号
二、 容器操作
列出容器
docker container ls (-a)
删除容器
docker container rm 容器ID
修剪容器
docker container prune
启动容器
- 启动服务(后台运行)
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:版本号
- 运行脚本(前台运行)
docker run --network my-network \ # 本地目录 \ -v $PWD:/path/to/app \ # 数据卷 \ # -v my-volume:/path/to/app \ -it --rm \ image-name:版本号 (+命令)
- 启动服务(后台运行)
容器操作
- 启动
docker container start 容器ID
- 停止
docker container stop 容器ID
- 重启
docker container restart 容器ID
- 进入运行中的容器
docker exec -it 容器ID /bin/bash
- 查看日志
# 查看所有日志 docker container logs 容器ID # 查看最近100条日志 docker container logs -f -t --tail=100 容器ID
- 将容器内部文件/文件夹复制到主机
docker cp 容器ID:/path/to/container/file /path/to/host
- 启动
三、 网络操作
列出网络
docker network ls
删除网络
docker network rm 网络名
修剪网络
docker network prune
创建网络
docker network create -d bridge my-network
四、数据卷操作
列出数据卷
docker volume ls
删除数据卷
docker volume rm 数据卷名
修剪数据卷
docker volume prune
创建数据卷
docker volume create my-volume
查看数据卷信息
docker volume inspect my-volume
五、系统操作
显示系统占用磁盘大小
docker system df
优化 docker 磁盘占用空间
docker system prune
打印系统信息
docker system info
实时显示 docker 事件
docker system events
六、 docker-compose 用法
创建配置文件
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
运行服务
- 前台运行
docker-compose up
- 后台运行
docker-compose up -d
- 强制构建
docker-compose up --build
- 前台运行
文档更新时间: 2024-04-20 10:57 作者:lee