写点东西《Docker入门(上)》

这篇具有很好参考价值的文章主要介绍了写点东西《Docker入门(上)》。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Docker 是一个工具,允许开发人员将他们的应用程序及其所有依赖项打包到一个容器中。然后,此容器可以轻松传输并在安装了 Docker 的任何机器上运行,而无需担心环境差异。这是一种标准化的软件打包和运行方式。

什么是容器?

写点东西《Docker入门(上)》,写点东西,部署,docker,eureka,云原生,docker

容器就像一个小包,其中包含程序运行所需的一切,使其易于在不同的计算机上移动和运行,而不会造成任何麻烦。

很酷的是,这个迷你计算机(容器)就像一个披着斗篷的超级英雄。它可以在任何计算机上运行,无论它们有何不同,因为它自带特殊环境。这是一种整洁有序的方式来组织软件,并确保它无论在何处都能以相同的方式工作。

写点东西《Docker入门(上)》,写点东西,部署,docker,eureka,云原生,docker

我们为什么需要 Docker?

  1. 一致性:Docker 确保软件在您的计算机、朋友的计算机或任何计算机上都能以相同的方式工作。它保持一致性。
  2. 可移植性:您可以将软件及其朋友打包到 Docker 容器中,并且它可以随处移动。这就像把你的游戏及其所有规则装进行李箱,然后在朋友家玩一样。
  3. 隔离性:Docker 容器就像一个个小气泡。气泡内部发生的事情会留在气泡内部。这意味着容器中的一个程序不会与容器外的另一个程序发生冲突。
  4. 高效性:Docker 有助于节省计算机资源。您不必为一个程序配备一台完整的计算机,而可以在同一台计算机上运行多个容器,而不会相互干扰。
  5. 速度:Docker 使得启动、停止和共享软件变得快速而简单。这就像打开和关闭游戏机一样——快速而简单。

什么是 Docker 镜像?

写点东西《Docker入门(上)》,写点东西,部署,docker,eureka,云原生,docker

Docker 镜像是一个程序及其运行所需的所有内容的快照。它是一个打包版本,其中包括代码、工具和设置,就像一个包含所有成分的饼干食谱快照。

镜像是食谱,而容器是您按照该食谱实际制作和运行程序时获得的内容。

一些基本的 Docker 命令。

写点东西《Docker入门(上)》,写点东西,部署,docker,eureka,云原生,docker

  1. docker run nginx

    此命令告诉 Docker 使用“nginx”镜像运行容器。这就像告诉 Docker 启动预制程序(nginx,这是一个 Web 服务器)的新实例。

  2. docker ps

    向您显示正在运行的容器列表。这就像检查当前正在运行哪些程序。

  3. docker ps -a

    向您显示所有容器的列表,包括已停止的容器。这就像检查您运行的所有程序的历史记录。

  4. docker stop silly_sammet

    停止名为“silly_sammet”的正在运行的容器。这就像关闭当前正在运行的程序。

  5. docker rm silly_sammet

    删除名为“silly_sammet”的已停止容器。这就像扔掉您不再需要的程序的说明。

  6. docker images

    列出您拥有的所有 Docker 镜像。这就像查看您可以运行的所有不同程序的菜单。

  7. docker rmi nginx

    删除“nginx”镜像。这就像擦除您不再想使用的程序的食谱。

  8. docker pull nginx

    从互联网下载“nginx”镜像。这就像从食谱中获取新食谱。

  9. docker run ubuntu sleep 5

    使用“ubuntu”镜像运行容器并使其休眠 5 秒。这就像启动一个程序,该程序只需等待一小段时间然后停止。

  10. docker exec distracted_mcclintock cat /etc/hosts

    在名为“distracted_mcclintock”的正在运行的容器内执行命令。这就像窥视食谱以查看特定页面。

  11. docker run -d kodekloud/simple-webapp

    从“kodekloud/simple-webapp”映像中以分离模式运行容器。这就像启动程序并让它在后台运行。

  12. docker attach a043d

    使用 ID“a043d”将您的终端连接到正在运行的容器。这就像跳入正在运行的程序以查看正在发生的事情。

一些 Docker 概念:

  1. 使用标签运行:
  • 标签就像程序的版本。它指定您要运行哪个版本。
  • 示例代码: docker run nginx:latest
  • 这将运行 Nginx 程序的最新版本。
  1. 使用 STDIN 运行:
  • STDIN 就像在键盘上打字。某些程序需要您的输入。
  • 示例代码: docker run -i -t ubuntu
  • 这在 Ubuntu 容器内运行一个交互式终端,允许您键入命令。
  1. 使用端口映射运行:
  • 端口就像门。程序使用它们与外界通信。
  • 示例代码: docker run -p 8080:80 nginx
  • 这运行 Nginx,它在您计算机的端口 8080 上打开门,将其连接到容器的端口 80。
  1. 使用卷映射运行:
  • 卷就像共享文件夹。它们允许您将内容存储在容器外部。
  • 示例代码: docker run -v /your/local/folder:/container/folder nginx
  • 这运行 Nginx,并将您计算机上的一个文件夹连接到容器内的文件夹。
  1. 检查容器:
  • 检查就像仔细查看正在运行的程序。
  • 示例代码: docker inspect container_name
  • 这会为您提供有关正在运行或已停止的容器的详细信息。
  1. 容器日志:
  • 日志就像日记。它们记录程序已执行的操作。
  • 示例代码: docker logs container_name
  • 这会向您显示特定容器的日志或活动。

环境变量

环境变量就像程序用来查找重要信息的便笺,有点像程序理解和更好地工作的秘密消息!

  1. **
    Python 脚本 (app.py) 中的环境变量:**
  • 想象一下,您有一个用 Python 编写的程序 (app.py)。您可能想在不更改代码的情况下对其进行自定义。您可以使用环境变量。
  • 示例代码 (app.py):
  import os
 
  app_color = os.getenv("APP_COLOR", "default_color")
  print(f"The app color is {app_color}")
 
  • 正常运行脚本: python app.py
  • 使用特定颜色运行: export APP_COLOR=blue; python app.py
  1. 在 Docker 中使用 ENV 变量:

    • Docker 容器也可以使用环境变量。这就像给容器内的程序提供指令。
    • 示例代码:
    • docker run -e APP_COLOR=green simple-webapp-color
    • 这会运行一个 Docker 容器( simple-webapp-color )并将环境变量 APP_COLOR 设置为“green”。
  2. 检查环境变量:

    • 有时,您需要检查正在运行的容器正在使用什么环境变量。
    • 示例代码: docker inspect blissful_hopper
    • 此命令提供有关名为“blissful_hopper”的容器的详细信息,包括其环境变量。

简单来说,环境变量就像程序(或 Docker 容器)可以读取的小注释,用于了解如何运行。您可以在运行程序之前设置这些注释,程序会使用它们来自定义自身。第二个示例中的 export 命令就像在运行程序之前写一个注释,告诉它如何运行。 docker inspect 命令就像窥探容器内部,查看它有什么注释。

Docker 镜像

Dockerfile:

Dockerfile 就像一组 Docker 创建映像的指令。它就像一个烘焙蛋糕的食谱。

# Use the Ubuntu base image
FROM Ubuntu

# Update apt repository
RUN apt-get update

# Install dependencies using apt
RUN apt-get install -y python

# Install Python dependencies using pip
RUN pip install flask
RUN pip install flask-mysql

# Copy source code to /opt folder
COPY . /opt/source-code

# Set the working directory
WORKDIR /opt/source-code

# Specify entry point to run the web server
ENTRYPOINT ["flask", "run"]

创建您自己的映像的步骤:

  1. 使用上述内容创建一个名为 Dockerfile 的文件。
  2. 将其保存在与源代码相同的目录中。

构建 Docker 镜像:

在终端中运行以下命令:

docker build -t your-image-name .

此命令告诉 Docker 使用当前目录中的 Dockerfile ( . ) 构建镜像,并用您选择的名称 ( -t your-image-name ) 标记它。

分层架构:

写点东西《Docker入门(上)》,写点东西,部署,docker,eureka,云原生,docker

  • 可以将 Docker 镜像视为一个分层蛋糕。Dockerfile 中的每条指令都会向镜像添加一层。
  • 层是可重用的。如果您在代码中更改了某些内容,Docker 只会重新构建受影响的层,从而提高效率。

Docker 构建输出:

  • 构建镜像时,Docker 会显示该过程中的每个步骤。如果出现故障,它会给您一条错误消息。

可以容器化什么?

  • 几乎所有内容!应用程序、服务、数据库、网站,基本上任何软件都可以进行容器化。
  • 这就像将软件放入一个容器中,以便它可以在任何地方运行而不会造成麻烦。

Docker CMD 与 ENTRYPOINT 有什么区别

CMD 在 Docker 中:

  • 可以将 CMD 视为在启动容器时程序执行的默认操作。
  • 这就像在说,“嘿,在运行此容器时,默认执行此操作。”
  • 示例: CMD ["flask", "run"] 表示容器启动时,它会自动运行 Flask Web 服务器。

CMD 示例:

FROM alpine
CMD ["sleep", "5"]

在此示例中,当您使用此映像运行容器时,它会自动休眠 5 秒。

ENTRYPOINT 在 Docker 中:

  • 可以将 ENTRYPOINT 视为容器执行的主要操作。它就像 boss 命令。
  • 它在容器启动时设置默认应用程序以运行,但您仍可以根据需要覆盖它。
  • 示例: ENTRYPOINT ["flask", "run"] 表示容器主要用于运行 Flask Web 服务器,但您仍可以根据需要添加更多命令。

ENTRYPOINT 示例:

FROM alpine
ENTRYPOINT ["sleep"]
CMD ["5"]

在这里,主要目的是睡觉,并且您仍然可以根据需要覆盖睡眠持续时间。

在这两种情况下,容器在启动时都会休眠几秒钟。关键区别在于您如何提供参数以及它们是否可以轻松覆盖。

CMD 就像在说“这是一个默认的操作”,而 ENTRYPOINT 就像在说“这是主要的操作,但您可以在需要时对其进行微调”。它们都有助于定义容器在启动时执行的操作。

Docker 中的网络:

Docker 网络帮助容器(程序)相互通信,确保它们能够顺利协同工作。

默认网络:

  • Docker 为容器创建默认网络以进行通信。
  • 示例代码: docker run ubuntu --network=host
    *
    这将使用主机网络运行 Ubuntu 容器,这意味着它与主机共享网络命名空间。

用户定义网络:

  • 您可以创建自己的网络以实现更好的组织和控制。
  • 示例代码:
  docker network create --driver=bridge --subnet=182.18.0.0/16 custom-isolated-network

  • 这会创建一个名为 custom-isolated-network 的用户定义桥接网络,并带有特定子网。

列出网络:

  • 您可以看到您拥有的所有网络。
  • 示例代码: docker network ls

检查网络:

  • 您可以检查特定网络的详细信息。
  • 示例代码: docker network inspect blissful_hopper
    *
    这显示了有关名为“blissful_hopper”的网络的详细信息。

嵌入式 DNS:

  • Docker 具有内置的 DNS 系统,以便容器可以通过名称相互查找。
  • 示例代码: mysql.connect(mysql)
    *
    这可能是您代码中的一行,其中名为“mysql”的服务使用 Docker 的 DNS 连接到另一个名为“mysql”的服务。

Docker 存储:

写点东西《Docker入门(上)》,写点东西,部署,docker,eureka,云原生,docker

Docker 存储就像决定在使用容器时将数据保存在哪里。您可以将它们保存在容器内,使用卷在容器之间共享它们,或将它们存储在容器外以确保安全。

Docker 中的文件系统:

  • Docker 使用分层架构来构建镜像。Dockerfile 中的每条指令都会向文件系统添加一个新层。
# Dockerfile
FROM Ubuntu
RUN apt-get update && apt-get install -y python
RUN pip install flask flask-mysql
COPY . /opt/source-code
WORKDIR /opt/source-code
ENTRYPOINT ["flask", "run"]

  • Dockerfile 中的层:
    *
    第 1 层:基本 Ubuntu 层
    *
    第 2 层:apt 包中的更改
    *
    第 3 层:pip 包中的更改
    *
    第 4 层:源代码
    *
    第 5 层:使用“flask”命令更新入口点
    *
    第 6 层:容器层

镜像层:

  • 构建 Docker 镜像时,它由只读层组成。每层表示对镜像的更改或添加。
    *
    第 1 层:基本 Ubuntu 层
    *
    第 2 层:apt 包中的更改
    *
    第 3 层:pip 包中的更改
    *
    第 4 层:源代码
    *
    第 5 层:使用“flask”命令更新入口点
# Build the Docker image
docker build -t mmumshad/my-custom-app .

容器层:

  • 当您运行 Docker 容器时,会在只读镜像层之上添加一个读写层。此层特定于正在运行的容器。
    *
    层 6. 容器层
# Run the Docker container
docker run mmumshad/my-custom-app

卷:

  • 卷是一种在容器外保存数据的方式。它们类似于外部存储。
# Create a Docker volume
docker volume create data_volume

# Use the volume in a container
docker run -v data_volume:/var/mysql mysql

  • 您还可以使用 -v 将主机中的特定目录挂载到容器:
# Mount a host directory to a container directory
docker run -v /path/on/host:/var/mysql/mysql -d mysql

  • docker run --mount 命令用于将主机计算机中的特定目录或文件挂载到正在运行的 Docker 容器中。
docker run --mount type=bind,source=/mysql,target=/var/mysql mysql

存储驱动程序:

  • Docker 使用存储驱动程序来管理数据的存储和访问方式。一些常见的存储驱动程序包括 AUFS、ZFS、BTRFS、设备映射器、Overlay 和 Overlay2。

管理 Docker 中的数据
关于存储驱动程序
Volumes

好的,这篇文章到此结束。
感谢您阅读本文,我们将在下一篇文章《Docker入门(下)》中再见!❤️


🌟更多精彩

点击👉这里~~文章来源地址https://www.toymoban.com/news/detail-834701.html

到了这里,关于写点东西《Docker入门(上)》的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 写点东西《JavaScript 中的设计模式:综合指南》

    JavaScript 因其广泛采用和多功能性,已成为现代 Web 开发的基石。随着您深入研究 JavaScript 开发,理解和利用模式变得至关重要。在本文中,我们将踏上揭开 JavaScript 模式的神秘面纱的旅程,并探讨它们如何增强您的编码实践。 要理解本文中讨论的概念和技术,您应该了解

    2024年02月02日
    浏览(41)
  • 写点东西《每个开发人员都必须知道的 10 个 Git 命令》

    对于任何开发人员来说,了解 Git 和 GitHub 至关重要,它们提供了有效的版本控制和代码管理。熟练掌握这些

    2024年02月02日
    浏览(50)
  • 写点东西《边学边写7 种常见的攻击前端的安全性攻击》

    随着网络应用程序对业务运营变得越来越关键,它们也成为网络攻击更具吸引力的目标。但不幸的是,许多网络开发人员在构建安全前端方面落后于他们的后端和 DevOps 同行。这种差距增加了破坏性数据泄露的风险。 最近发生的事件,例如 Balancer Protocol 漏洞,揭示了攻击者在

    2024年02月02日
    浏览(44)
  • 【云原生 • Docker】docker 入门、docker 与虚拟机对比、docker 组件

    目录 一、认识 Docker 1. 什么是虚拟化 2. 什么是 Docker 3. 为什么选择 Docker? 二、容器与虚拟机的区别 三、Docker 组件 1. Docker 服务器与客户端 2. Docker 镜像与容器 3. Registry 注册中心 1. 什么是虚拟化 虚拟化是一种资源管理技术,将计算机的各种实体资源如服务器、内存、网络等

    2024年01月22日
    浏览(40)
  • 【云原生】Docker部署Portainer

    Portainer 是一个轻量级的管理 UI ,可让你轻松管理不同的 Docker 环境(Docker 主机或 Swarm 群集)。 Portainer 的目的是部署和使用一样简单。它由一个可以在任何 Docker 引擎上运行的单一容器组成(可以部署为 Linux 容器或 Windows 本地容器,也支持其他平台)。Portainer 允许你管理所

    2024年02月13日
    浏览(33)
  • 【云原生】使用Docker部署openGauss

    Docker是一个开源的应用容器引擎,让开发者可以把应用及依赖包打包到一个可移植的容器中,然后发布到流行的Linux或Windows机器或虚拟机上。openGauss是一款高性能、高安全、高可靠、高智能的企业级开源关系型数据库。openGauss 3.0.0 发布后,云和恩墨制作了docker版本。基于此,

    2024年01月18日
    浏览(32)
  • 【云原生|Docker系列第3篇】Docker镜像的入门实践

    欢迎来到Docker入门系列的第三篇博客!在前两篇博客中,我们已经了解了什么是Docker以及如何安装和配置它。本篇博客将重点介绍Docker镜像的概念,以及它们之间的关系。我们还将学习如何拉取、创建、管理和分享Docker镜像,这是使用Docker的重要步骤之一。 Docker镜像是Docke

    2024年02月16日
    浏览(37)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包