Docker 的知识总结

Docker 的发展

Docker 的出现要归功于虚拟化技术的发展。从硬件虚拟化到软件虚拟化,再到容器化,每次技术迭代都带来了显著的技术突破。Docker 的诞生主要依赖于 Linux 的 namespace 和 cgroup 技术,它们分别实现了进程隔离和资源限制。

虚拟化技术的演进

  • 硬件虚拟化:最早的虚拟化技术,依靠硬件层面的支持来实现多个操作系统实例的运行。
  • 软件虚拟化:利用软件技术,在单个操作系统内运行多个独立的虚拟机,每个虚拟机都有独立的操作系统和应用。
  • 容器化:容器化技术进一步优化了资源利用率,通过共享主机的操作系统内核,实现轻量级的虚拟化。Docker 作为容器化技术的代表,极大地简化了应用的开发、测试和部署流程。

Docker 的安装

日常我们安装的 Docker 版本通常为 Docker Community Edition (Docker CE),这是由开源社区维护的版本。此外,还有一个企业版 Docker Enterprise Edition (Docker EE),由 Docker 官方提供支持和维护。

国内安装方法

在国内,推荐使用阿里云镜像源和清华镜像源进行 Docker 的安装,以提高下载速度和稳定性。

Docker 的配置

Docker 的配置文件位于 /etc/docker/daemon.json,以下是一个常见的配置示例:

{
  "hosts": ["unix:///var/run/docker.sock", "tcp://0.0.0.0:2375"], // 配置 Docker 暴露地址
  "log-level": "info",  // 日志等级
  "data-root": "/var/lib/docker", // 存储位置
  "storage-driver": "overlay2",  // 文件系统
  "insecure-registries": ["myregistry.local:5000"], // 免认证镜像仓库
  "registry-mirrors": [   // 加速镜像地址
    "https://dockerproxy.com",  
    "https://docker.mirrors.ustc.edu.cn",
    "https://docker.nju.edu.cn",
    "https://docker.m.daocloud.io"
  ],
  "exec-opts": [
    "native.cgroupdriver=systemd" // 执行操作
  ]
}

Docker 常用命令

  • docker pull:拉取镜像

    docker pull ubuntu:latest
    

    参数说明:

    • ubuntu:latest:指定要拉取的镜像名称和标签。
  • docker build:构建镜像

    docker build -t myimage:1.0 . ## . 会直接寻找当前文件夹的 Dockerfile
    

    参数说明:

    • -t myimage:1.0:指定构建后的镜像名称和标签。
    • .:指定 Dockerfile 所在目录。
  • docker tag:修改镜像标签

    docker tag myimage:1.0 myimage:latest
    

    参数说明:

    • myimage:1.0:源镜像名称和标签。
    • myimage:latest:目标镜像名称和标签。
  • docker push:推送镜像

    docker push myimage:latest
    

    参数说明:

    • myimage:latest:要推送的镜像名称和标签。
  • docker run:运行镜像

    docker run -d -p 8080:80 myimage:latest
    

    参数说明:

    • -d:后台运行容器。
    • -p 8080:80:端口映射,将主机的 8080 端口映射到容器的 80 端口。
    • myimage:latest:要运行的镜像名称和标签。
  • docker system prune -a:清理 Docker 无用的网络、镜像和卷

  • docker inspect:查看容器的详细信息

Dockerfile

Dockerfile 是一个文本文件,用来记录构建镜像的过程。以下是一个简单的 Dockerfile 示例:

# 使用官方的 Python 镜像作为基础镜像
FROM python:3.8-slim

# 设置工作目录
WORKDIR /app

# 复制当前目录的内容到工作目录
COPY . /app

# 安装依赖
RUN pip install --no-cache-dir -r requirements.txt

# 指定容器启动时运行的命令
CMD ["python", "app.py"]

Dockerfile 指令说明:

  • FROM:指定基础镜像。
  • WORKDIR:设置工作目录。
  • COPY:复制文件到容器。
  • RUN:运行命令以构建镜像。
  • CMD:指定容器启动时运行的命令。
  • LABEL:添加元数据到镜像,例如版本、维护者信息等。
  • ENV:设置环境变量。
  • EXPOSE:声明容器暴露的端口。
  • ADD:类似于 COPY,但功能更强大,可以从 URL 下载文件并自动解压 tar 文件。
  • ENTRYPOINT:配置容器启动时执行的主命令,与 CMD 配合使用,不会被 docker run 命令给覆盖
  • VOLUME:创建挂载点,允许持久化存储。
  • USER:指定运行容器的用户。
  • ARG:定义构建参数,在构建时传递变量。

其中特别要注意 ENTRYPOINT 与 CMD 的区别:

  • CMD 指令用来指定容器启动时的默认命令或参数,但可以在 docker run 命令行中被覆盖。如果 Dockerfile 中存在多个 CMD 指令,则只有最后一个生效。
  • ENTRYPOINT 指令用来设置容器启动时的主命令,且不会被 docker run 命令行中指定的参数覆盖。它通常与 CMD 配合使用,用于提供默认参数。即使 Dockerfile 中存在多个 ENTRYPOINT 指令,也只有最后一个生效。

通过以上指令,可以一步步构建出定制化的 Docker 镜像,从而实现应用的轻松部署和扩展。

结语

Docker 通过其强大的虚拟化技术和丰富的生态系统,极大地简化了应用的开发、测试和部署流程,使得软件工程师能够更加高效地进行工作。了解 Docker 的基础知识和常用操作,能够帮助我们更好地利用这一工具,提高工作效率。

  • 5
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Docker是一个客户端-服务器(C/S)架构的程序,它提供了一整套RESTful API以及命令行工具Docker来管理容器。你可以通过Docker客户端向Docker服务器或守护进程发出请求,服务器或守护进程将完成所有工作并返回结果。你可以在同一台宿主机上运行Docker守护进程和客户端,也可以从本地的Docker客户端连接到运行在另一台宿主机上的远程Docker守护进程。 Docker容器是通过Docker镜像创建的独立的运行环境。Docker容器包含了运行所需的所有文件系统、库文件和运行时环境,并且可以与宿主机隔离。你可以使用Docker命令来管理容器,比如创建、启动、停止和删除容器。删除已停止的容器可以使用命令docker rm 容器ID,而删除全部容器可以使用docker rm -f ${docker ps -qa}命令。 除了容器的基本管理,Docker还提供了DockerFile这个配置文件,它可以用来定义如何构建Docker镜像。DockerFile是一个文本文件,包含了一系列指令,告诉Docker如何构建镜像,并且可以通过转存图片并上传来自定义DockerFile。你可以通过解析DockerFile来了解如何构建镜像,并通过Docker实际运用来深入了解Docker的高级知识总结来说,Docker是一个用于管理容器的客户端-服务器架构程序,通过Docker镜像创建独立的运行环境,可以使用Docker命令进行容器的管理,同时可以使用DockerFile来定义镜像的构建过程。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [史上最全Docker容器知识整理【精华内容】](https://blog.csdn.net/qq_41714882/article/details/105734855)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

启明真纳

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值