Docker 基础
安装 Docker(CentOS)
建议:安装 Docker 的主机不建议使用任何形式的防火墙,因为会出现一系列复杂的网络通信问题;
建议:使用服务商的网关策略来管理服务器的安全
更新现有的软件包
sudo yum update -y安装必要地依赖包
sudo yum install -y yum-utils添加 Docker 的官方仓
sudo yum-config-manager \ --add-repo \ https://download.docker.com/linux/centos/docker-ce.repo安装 Docker Engine
sudo yum install -y docker-ce docker-ce-cli containerd.io启动 Docker 并设置为开机启动
sudo systemctl start docker sudo systemctl enable docker验证 Docker 是否安装成功
sudo docker --version你应该看到类似这样的输出
Docker version 20.10.17, build 100c701测试 Docker 是否正确安装
sudo docker run hello-world
启动 Docker(CentOS)
- 启动
sudo systemctl start docker - 开机启动
sudo systemctl enable docker - 重启
sudo systemctl restart docker - 停止
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 ✅✅✅✅ 1panel https://1panel.live/ ✅✅✅✅
构建 Docker 镜像
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"]构建命令
docker build --platform linux/amd64 -t 192.168.2.80:4000/feishu-md/feishu2md .常见构建参数
选项 说明 --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 删除
- 修改镜像名称/标签
docker tag SOURCE_IMAGE[:TAG] TARGET_IMAGE[:TAG] - 通过镜像ID
docker tag SOURCE_IMAGE_ID TARGET_IMAGE[:TAG]
删除镜像
- 通过镜像名称
docker rmi STARGET_IMAGE[:TAG] - 通过镜像ID
docker rmi STARGET_IMAG_ID
登录/登出指定仓库地址
- 登录
docker login http://192.168.2.80:4000 - 登出
docker logout http://192.168.2.80:4000
复制镜像内文件
通过镜像名称
dcoker cp 镜像ID:/docker内文件地址 /docker外文件地址
镜像<-->压缩包
镜像 -> 压缩包
docker save -o 压缩包.tar 镜像压缩包 -> 镜像
docker load -i 压缩包.tar