Skip to content

Docker 基础

约 1141 字大约 4 分钟

运维Docker

2024-07-22

安装 Docker(CentOS)

建议:安装 Docker 的主机不建议使用任何形式的防火墙,因为会出现一系列复杂的网络通信问题;

建议:使用服务商的网关策略来管理服务器的安全

  1. 更新现有的软件包

    sudo yum update -y
  2. 安装必要地依赖包

    sudo yum install -y yum-utils
  3. 添加 Docker 的官方仓

    sudo yum-config-manager \
    --add-repo \
    https://download.docker.com/linux/centos/docker-ce.repo
  4. 安装 Docker Engine

    sudo yum install -y docker-ce docker-ce-cli containerd.io
  5. 启动 Docker 并设置为开机启动

    sudo systemctl start docker
    sudo systemctl enable docker
  6. 验证 Docker 是否安装成功

    sudo docker --version

    你应该看到类似这样的输出

    Docker version 20.10.17, build 100c701
  7. 测试 Docker 是否正确安装

    sudo docker run hello-world

启动 Docker(CentOS)

  1. 启动
    sudo systemctl start docker
  2. 开机启动
    sudo systemctl enable docker
  3. 重启
    sudo systemctl restart docker
  4. 停止
    sudo systemctl stop docker

配置镜像源

  • 修改配置文件

    sudo vim /etc/docker/daemon.json
  • 重新加载配置并重启

    sudo systemctl daemon-reload
    sudo systemctl restart docker
  • 相关镜像源

    镜像加速器镜像加速器地址当前状态
    Docker 中国官方镜像https://registry.docker-cn.com✅✅✅✅
    DaoCloud 镜像站http://f1361db2.m.daocloud.io✅✅✅✅
    zure 中国镜像https://dockerhub.azk8s.cn✅✅✅✅
    科大镜像站https://docker.mirrors.ustc.edu.cn✅✅✅✅
    阿里云https://ud6340vz.mirror.aliyuncs.com✅✅✅✅
    七牛云https://reg-mirror.qiniu.com✅✅✅✅
    网易云https://hub-mirror.c.163.com✅✅✅✅
    腾讯云https://mirror.ccs.tencentyun.com✅✅✅✅
    1panelhttps://1panel.live/✅✅✅✅

构建 Docker 镜像

  1. Docker 模板

    # 使用 CentOS 作为基础镜像
    FROM centos:7
    
    # 设置镜像的维护者信息(可选)
    LABEL maintainer="your-email@example.com"
    
    # 安装 Java
    RUN yum update -y && \
        yum install -y java-1.8.0-openjdk && \
        yum clean all
    
    # 设置工作目录
    WORKDIR /usr/src/app
    
    # 复制应用的 JAR 文件到工作目录
    COPY your-app.jar .
    
    # 设置环境变量(可选)
    ENV JAVA_OPTS=""
    
    # 公开应用运行的端口
    EXPOSE 8080
    
    # 启动命令
    CMD ["java", "-jar", "your-app.jar"]
  2. 构建命令

    docker build --platform linux/amd64 -t 192.168.2.80:4000/feishu-md/feishu2md .
  3. 常见构建参数

    选项说明
    --add-host添加自定义主机到IP映射(格式:"host:ip")。
    --allow允许额外的特权设置(例如:"network.host", "security.insecure")。
    --attest设置证明参数(格式:"type=sbom,generator=image")。
    --build-arg设置构建时的环境变量。
    --build-context添加额外的构建上下文(例如:name=path)。
    --builder覆盖配置的 builder 实例(默认:"desktop-linux")。
    --cache-from外部缓存源(例如:"user/app:cache", type=local,src=path/to/dir)。
    --cache-to缓存导出目的地(例如:"user/app:cache", type=local,dest=path/to/dir)。
    --cgroup-parent容器的可选父 cgroup。
    -f, --file指定 Dockerfile 的名称(默认:"PATH/Dockerfile")。
    --iidfile将镜像 ID 写入指定文件。
    --label设置镜像的元数据。
    --load简写形式,等同于 "--output=type=docker"
    --metadata-file将构建结果的元数据写入文件。
    --network设置构建期间的网络模式(默认:"default")。
    --no-cache构建时不使用缓存。
    --no-cache-filter不缓存指定的阶段。
    -o, --output输出目的地(格式:"type=local,dest=path")。
    --platform设置构建目标平台。
    --progress设置进度输出类型("auto", "plain", "tty")。 默认:"auto"。
    --provenance简写形式,等同于 "--attest=type=provenance"
    --pull总是尝试拉取所有引用的镜像。
    --push简写形式,等同于 "--output=type=registry"
    -q, --quiet抑制构建输出,并在成功时打印镜像 ID。
    --sbom简写形式,等同于 "--attest=type=sbom"
    --secret向构建暴露的秘密(格式:"id=mysecret[,src=/local/secret]")。
    --shm-size设置 /dev/shm 的大小。
    --ssh暴露给构建的 SSH agent socket 或密钥(格式:`"default
    -t, --tag设置镜像的名称和标签(格式:"name:tag")。
    --target设置要构建的目标构建阶段。
    --ulimit设置 Ulimit 选项。

修改镜像名称/标签

注意:修改标签是镜像多了一个引用,也就是你使用dcker tag ···后,会有多出一个镜像记录,但是镜像 ID 相同

如果你想删除不需要的引用,就需要通过镜像名称删除了,因为镜像 ID 只有一个,因此不可以通过镜像 ID 删除

  1. 修改镜像名称/标签
    docker tag SOURCE_IMAGE[:TAG] TARGET_IMAGE[:TAG]
  2. 通过镜像ID
    docker tag SOURCE_IMAGE_ID TARGET_IMAGE[:TAG]

删除镜像

  1. 通过镜像名称
    docker rmi STARGET_IMAGE[:TAG]
  2. 通过镜像ID
    docker rmi STARGET_IMAG_ID

登录/登出指定仓库地址

  1. 登录
    docker login http://192.168.2.80:4000
  2. 登出
    docker logout http://192.168.2.80:4000

复制镜像内文件

  1. 通过镜像名称

    dcoker cp 镜像ID:/docker内文件地址 /docker外文件地址

镜像<-->压缩包

  1. 镜像 -> 压缩包

    docker save -o 压缩包.tar 镜像
  2. 压缩包 -> 镜像

    docker load -i 压缩包.tar

@All, may there be no war in the world.