ZHE知识库 ZHE知识库
首页
JAVA
中间件
易学
小说漫画
其他
Source (opens new window)
首页
JAVA
中间件
易学
小说漫画
其他
Source (opens new window)
  • 首页
  • 记事本
  • 笔记杂项
  • GIT版本控制
  • 操作系统笔记

  • Docker笔记

    • 常用命令笔记
      • Docker安装命令
        • CentOS
        • Ubuntu
        • Debian
        • 镜像加速
      • 辅助命令
      • 镜像命令
      • 容器命令
      • 网桥命令
      • Dockerfile
      • docker-compose
        • 安装Compose
        • 使用Compose
    • 常见环境部署
  • 首页
  • Docker笔记
张涵哲
2023-10-17
目录

常用命令笔记

# Docker安装命令

官方文档地址:https://docs.docker.com/engine/

# CentOS

可选:卸载已安装的 Docker

sudo yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-engine

安装 yum 工具包,添加 Docker 源地址

sudo yum install -y yum-utils
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

下载安装 Docker

$ yum install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

# Ubuntu

可选-卸载已安装的 Docekr

$ for pkg in docker.io docker-doc docker-compose podman-docker containerd runc; do sudo apt-get remove $pkg; done

更新并下载工具包

$ sudo apt update
$ sudo apt -y install ca-certificates curl gnupg

添加 Docker 的官方 GPG 密钥

$ install -m 0755 -d /etc/apt/keyrings
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
$ sudo chmod a+r /etc/apt/keyrings/docker.gpg

设置存储库

$ echo \
  "deb [arch="$(dpkg --print-architecture)" signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
  "$(. /etc/os-release && echo "$VERSION_CODENAME")" stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

再次更新索引后安装 Docker

$ sudo apt update
$ sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

# Debian

可选-卸载已安装的 Docekr

$ for pkg in docker.io docker-doc docker-compose podman-docker containerd runc; do sudo apt-get remove $pkg; done

更新并下载工具包

$ sudo apt-get update
$ sudo apt-get install ca-certificates curl gnupg

添加 Docker 的官方 GPG 密钥

$ sudo install -m 0755 -d /etc/apt/keyrings
$ curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
$ sudo chmod a+r /etc/apt/keyrings/docker.gpg

设置存储库

$ echo \
  "deb [arch="$(dpkg --print-architecture)" signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/debian \
  "$(. /etc/os-release && echo "$VERSION_CODENAME")" stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

再次更新索引后安装 Docker

$ sudo apt-get update
$ sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

# 镜像加速

编辑 Docker 配置文件/etc/docker/daemon.json,没有就新建,添加如下内容

{
  "registry-mirrors": [
    "https://dockerhub.icu",
    "https://docker.registry.cyou",
    "https://docker-cf.registry.cyou",
    "https://dockercf.jsdelivr.fyi",
    "https://docker.mirrors.sjtug.sjtu.edu.cn",
    "https://docker.mirrors.ustc.edu.cn",
    "https://mirror.iscas.ac.cn",
    "https://docker.rainbond.cc"
  ]
}

# 辅助命令

# Docker版本信息查看
$ docker version

# Docker详细信息查看
$ docker info

# 查看Docker硬盘占用信息
$ docker system df

# 删除Docker缓存
$ docker [command] prune
    [command]
        image:删除所有中间层镜像,例如<none>,可以在结尾添加-a,无论是否有名称标签只要未使用都删除
        container:删除所有未运行的容器
        volume:删除所有未使用的容器卷
        network:删除所有未使用网桥
        system:谨慎使用,清理所有未使用的资源

# Docker帮助命令,可以在任何指令结尾使用--help查看帮助
$ docker [command] --help

# 查看Docker中某一项的详细信息
$ docker [command] inspect [id | name]
    [command]
        image:查看镜像详情
        container:查看容器详情,在command中优先级最高
        network:查看网桥详情

# 镜像命令

# 查看本机中所有镜像
$ docker images [options]
    [options]
        -a:列出所有镜像(包含中间映像层)
        -q:只显示镜像id

# 搜索镜像
$ docker search [options] [image]
    [options]
        -s:列出收藏数不少于指定值的镜像
        --no-trunc:显示完整的镜像信息

# 从仓库下载镜像,tag不填默认下载最新版
$ docker pull [image:tag]

# 删除镜像
$ docker rmi [options] [id | image:tag]
    [options]
        -f:无视容器启动状态,强制删除镜像

# 11.打包镜像,这里建议使用image:tag进行打包,使用id打包载入后镜像名称和版本为空
$ docker save [id | image:tag] -o 名称.tar

# 12.载入镜像,如果镜像载入后image:tag均为none则使用docker tag命令分配
$ docker load -i 名称.tar
$ docker tag [id] [image:tag]

# 容器命令

当遇到容器与宿主机使用:关联时,除非明确指定哪一侧所在位置,其他默认使用 [ 宿主机:容器 ] 顺序

# 运行容器,最常用的命令参数很多这里优先记录,本地没有镜像会自动下载,未指定tag默认使用最新版
$ docker run [options] [image:tag]
    [options]
        --restart:容器重启策略
            no:不启动容器
            always:容器退出时启动容器
            unless-stopped:非手动停止容器后启动容器
            on-failure:指定退出n次后重启容器,例如 --restart on-failure:3
        --network:指定容器的网桥
        --name:容器别名
        -d:启动守护式容器(在后台启动容器)
        -p:端口映射
        -P:随机指定宿主机端口映射
        -v:文件映射,也就是volume
        -e:用作向容器内传递初始化参数
        --privileged:赋予容器高级权限,可以访问宿主机设备文件,可以执行一些特权操作,可以绕过一些安全性措施
        --env-file:以文件的方式向容器内传入初始化参数

# 创建容器,启动容器、重启容器
$ docker create [options] [image:tag]
$ docker start [id | container]
$ docker restart [id | container]

# 停止容器、删除容器
$ docker stop [id | container]
$ docker rm [options] [id | container]
    [options]
        -f:无视运行状态,强制删除容器

# 查看容器列表,默认只查看运行中的容器
$ docker ps [options]
    [options]
        -a:显示所有容器
        -q:只显示容器ID
        -a -f "status=exited":查看停止的容器

# 查看Docker容器的占用情况,例如CPU,内存,网络资源等
$ docker stats [container]

# 查看所有进程、暂停所有进程、恢复所有进程
$ docker top [id | container]
$ docker pause [id | container]
$ docker unpause [id | container]

# 在容器中执行命令,command是执行的目标
$ docker exec [options] [id | container] [command]
    [options]
        -i:以交互模式运行容器
        -t:分配一个伪终端
    [command]
        /bin/bash:最常用组合 -it /bin/bash,分配伪终端,以交互式运行bash,就可以执行容器内的命令了

# 修改容器配置信息
$ docker update [options]
    [options]
        --restart:修改自启动规则,默认为no表示没有自启动规则
        --blkio-weight:设置IO权重,默认为0表示不限制
        --cpu-shares:设置CPU限制,默认为0表示不限制
        --memory:设置内存限制,默认为0表示不限制

# 查看容器的运行日志
$ docker logs [options] [id | container]
    [options]
        -t:加入时间戳
        -f:跟随最新的日志打印
        --tail:显示最后的几条日志
        --since:显示某个开始时间的所有日志,时间格式支持[RFC3339]、[年月日时分秒]、秒级时间戳

# 容器和宿主机之间复制文件,如果container在左侧就代表复制容器内的文件到宿主机
$ docker cp [container]:[path] [path]
$ docker cp [path] [container]:[path]

# 容器重命名
$ docker rename [container] [新容器名]

# 容器打包成新的镜像
$ docker commit [options] [container:tag]
    [options]
        -a:镜像作者
        -c:使用Dockerfile指令来创建镜像
        -m:提交时的说明文字
        -p:在commit时,将容器暂停

# 网桥命令

# 查看网桥列表
$ docker network ls

# 创建网桥
$ docker network create [options] [network]
    [options]
        -d:驱动程序,就是ls中的driver列,默认使用bridge

# 删除网桥
$ docker network rm [network]

# 查看网桥详细信息以及使用网桥的容器
$ docker inspect network [network]

# Dockerfile

新建一个目录,目录内创建名为Dockerfile的文件,将与镜像相关的文件都放在该目录下

构建镜像的命令

# 正常构建镜像执行该命令即可
$ docker build -t image:tag .

# 构建镜像
$ docker build [options] [container:tag]
    [options]
        -t:指定构建的镜像名称及标签,参照上面的[container:tag]
        -f:可以使用该选项指定Dockerfile的路径,而不是默认的当前目录下的Dockerfile
        -q:静默模式,可以使用该选项关闭构建过程中的输出信息,只输出构建结果
        --force-rm:在构建时强制删除同名镜像
        --build-arg:设置构建时的参数通过${}使用,例如 --build-arg NGINX_VERSION=1.19.5

Dockerfile的常用参数笔记

FROM         源镜像
MAINTAINER   作者信息

RUN          构建镜像时运行的指令
CMD          运行容器时执行的shell环境

VOLUME       如果在启动容器时忘记挂载数据卷,该属性会自动挂载到匿名卷
WORKDIR      设置工作目录,后续的相对路径就是基于工作目录,进入容器后默认就是该位置

ENV          构建参数,例如MySQL的root密码
ARG          构建参数,与ENV作用一致,不过作用域不一样,仅在docker build的过程中有效

EXPOSE       声明容器的服务端口(仅仅是声明)

COPY         拷贝文件或目录到容器中
ADD          拷贝文件或目录到容器中,如果是URL会自动下载,压缩包会自动解压

ENTRYPOINT   运行容器时执行的shell命令

# docker-compose

官方文档:https://docs.docker.com/compose

开源地址:https://github.com/docker/compose

# 安装Compose

新版免安装 docker-compose

新版 Docker 在安装时提供了docker-compose-plugin插件,安装 Docker 时顺便就安装了 compose,可以回顾上面的安装命令

# docker-compose 已安装
$ docker compose version
Docker Compose version v2.21.0

旧版安装 docker-compose

旧版的 Docker 需要在Github上下载docker-compose文件并赋予执行权限

# 访问Github将文件下载到/usr/local/bin/目录下重命名为docker-compose
$ curl -SL https://github.com/docker/compose/releases/download/v2.20.3/docker-compose-linux-x86_64 -o /usr/local/bin/docker-compose

# 赋予docker-compose可执行权限
$ chmod +x /usr/local/bin/docker-compose

# 检查安装情况
$ docker-compose version
Docker Compose version v2.20.3

# 使用Compose

在当前目录下创建docker-compose.yml文件后就可以使用compose了

docker-compose 常用命令及参数

# 拉取镜像
$ docker compose pull

# 创建容器但不启动,没有镜像会下载
$ docker compose create

# 停止所有容器
$ docker compose stop

# 删除所有容器
$ docker compose rm

# 启动所有服务,没有服务会创建,没有镜像会下载,最常用的命令,在这里介绍参数,-d 参数在后台执行
$ docker compose up [options] [name]
    [options]
        -d:后台启动docker-compose
        --no-deps:无视依赖情况
    [name]:结尾的name为可选项,默认compose处理所有容器,使用name后就处理指定名称的容器

# 停止并删除所有服务, -v 同时删除容器卷和网桥
$ docker compose down

# 列出所有服务的状态
$ docker compose ps

# 显示所有服务的日志, -f 可实时查看
$ docker compose logs

# 重启所有服务
$ docker compose restart

# 构建镜像
$ docker compose build

docker-compose.yml 参考文件

version: "3.9"

networks:
  channel:
    name: mynet
    driver: bridge

services:

  minio:
    hostname: minio
    container_name: minio
    image: minio/minio:latest
    restart: always
    networks:
      - mynet
    ports:
      - "9000:9000"
      - "9001:9001"
    environment:
      - "TZ=Asia/Shanghai"
      - "MINIO_ACCESS_KEY=minio"
      - "MINIO_SECRET_KEY=1234567890"
    volumes:
      - "/opt/docker/minio/data:/data"
      - "/opt/docker/minio/conf:/root/.minio"
    command: server /data --console-address ":9000" --address ":9001"

  nginx:
    hostname: nginx
    container_name: nginx
    image: nginx:1.22.0
    restart: always
    networks:
      - mynet
    ports:
      - "80:80"
      - "443:443"
    environment:
      - "TZ=Asia/Shanghai"
    volumes:
      - "/opt/docker/nginx/conf/:/etc/nginx"
      - "/opt/docker/nginx/webs/:/usr/share/nginx"
      - "/opt/docker/nginx/logs/:/var/log/nginx"
    depends_on:
      - minio
上次更新: 2025-03-09, 16:24:38
CentOS笔记
常见环境部署

← CentOS笔记 常见环境部署→

Theme by Vdoing | Copyright © 2023-2025 Zhe | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式