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 变成了两个服务,需要分别启动和停止

systemctl start docker.socket
systemctl start docker.service

systemctl stop docker.service
systemctl stop docker.socket

systemctl enable docker.socket
systemctl enable docker.service

systemctl disable docker.socket
systemctl disable docker.service

旧版直接操作docker服务即可实现启动和停止

systemctl start docker
systemctl stop docker

systemctl enable docker
systemctl disable docker

# 镜像加速地址

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

{
  "registry-mirrors": [
    "https://docker.1panel.live",
    "https://docker.1ms.run",
    "https://dytt.online",
    "https://docker-0.unsee.tech",
    "https://lispy.org",
    "https://docker.xiaogenban1993.com",
    "https://666860.xyz",
    "https://hub.rat.dev",
    "https://docker.m.daocloud.io",
    "https://demo.52013120.xyz",
    "https://proxy.vvvv.ee",
    "https://registry.cyou",
    "https://mirror.ccs.tencentyun.com"
  ]
}

# 配置代理

镜像加速无效的情况下,可以考虑为 docker 配置代理下载镜像

# 移动到docker服务目录,如果目录不存在则创建通过mkdir -p创建它
mkdir -p /etc/systemd/system/docker.service.d

# 新建/编辑http代理配置文件,填写如下内容
vim /etc/systemd/system/docker.service.d/http-proxy.conf

[Service]
Environment="HTTP_PROXY=http://127.0.0.1:7897"
Environment="HTTPS_PROXY=http://127.0.0.1:7897"
Environment="NO_PROXY=localhost,127.0.0.1"

# 重载配置文件,重启docker服务
systemctl daemon-reload
systemctl restart docker

# 辅助命令

# 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:无视容器启动状态,强制删除镜像

# 打包镜像,这里建议使用image:tag进行保存,可直接保存为tar,也可以保存并压缩
docker save [id | image:tag] -o 名称.tar
docker save [id|image:tag] | gzip > 名称.tar.gz

# 载入镜像,可直接导入tar文件,也可以解压后导入
docker load -i 名称.tar
gunzip -c 名称.tar.gz | docker load

# 如果镜像载入后image:tag均为none,可以使用docker tag命令分配
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:无视依赖情况
        --scale service=2:启动服务集群
        --remove-orphans:自动清理孤儿容器
    [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-12-23, 18:23:38
CentOS笔记
常见环境部署

← CentOS笔记 常见环境部署→

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