docker最新版本(docker最新版本是多少)

docker最新版本(docker最新版本是多少)Docker 能够利用 Linux 内核的容器特性 隔离出一个轻便的环境来运行程序 这有什么意义呢 试想以下这些情况 你运行的 Linux 发行版很老 而你需要运行一个更新版本的 Linux 发行版 或者完全不同的 Linux 发行版设计的程序 你和朋友在设计一个大型的程序 而因为你们配置的环境不同 有时候在某个人的机器上正常运行的程序 在另一台机器上没法正常运行

大家好,我是讯享网,很高兴认识大家。



Docker 能够利用 Linux 内核的容器特性,隔离出一个轻便的环境来运行程序。这有什么意义呢?试想以下这些情况:

  • 你运行的 Linux 发行版很老,而你需要运行一个更新版本的 Linux 发行版,或者完全不同的 Linux 发行版设计的程序。
  • 你和朋友在设计一个大型的程序,而因为你们配置的环境不同,有时候在某个人的机器上正常运行的程序,在另一台机器上没法正常运行。
  • 你希望在多台服务器上部署一个项目,但是项目需要非常复杂的配置,一个一个配置服务器的成本非常大。
  • …………

Docker 就可以帮助解决这些问题。它可以快速配置不同的环境(比如说,通过 Docker,你可以在 Ubuntu 上使用 CentOS 的环境),部署应用。

Docker 可以在 Windows, Linux 和 macOS 上安装。下面我们讨论内容都基于 Docker 免费的社区版本。

上面提到,Docker 使用了 Linux 内核的容器特性,它依赖于 Linux。所以在 Windows 和 macOS 上,Docker 不得不通过虚拟 Linux 内核的方式来完成任务。其提供了一套被称为 Docker Desktop 的软件来帮助在 Windows 和 macOS 上配置 Docker。直接从官网下载即可。

各大发行版的软件源包含 Docker,也可以跟从官方文档,安装其提供的 Docker 社区版本。

在安装完成后,可以使用

将需要使用 Docker 的用户加入 用户组。注意: 用户组中的用户拥有与 root 等效的权限。

Docker 默认从 Docker Hub 上拖取所需要的镜像。但由于网络原因,拖取的过程可能会比较慢。一些服务在中国提供了 Docker Hub 的镜像(反代缓存)。以下内容以网易云与百度云为例。

为了使用这些 Docker Hub 镜像,在 Debian/Ubuntu 上,可以编辑 文件(如果文件不存在,请新建一个),写入以下内容。

使用 命令重启 Docker 服务后,再次运行 命令,可以看到如下输出:

如果你看到了上面的输出,说明你的 Docker Registry Mirror 已经配置好了。

Docker 官方提供了最精简的 镜像,可以用来验证 Docker 安装是否正确、是否正常工作。尝试运行 看看吧。

如果你看到了像上面这样的输出,说明你安装的 Docker 已经一切准备就绪,可以使用了。

接下来我们来尝试几个例子,体验 Docker 环境的独立性与易用性。


讯享网

这里, 代表容器停止运行(退出)之后,会被立刻删除; 参数代表给容器命名,如果没有加这个参数,那么 docker 会给容器随机起一个格式类似于 gracious_brahmagupta 的名字。

是为了获得可交互的 Shell 所必须的。 会将容器的 init(主进程,这里是 )的标准输入与 这个程序的标准输入相连接;而 会告知主进程输入为终端(TTY)设备。

在执行以上命令之后,你会获得一个 Ubuntu 20.04 的容器环境,退出 Shell 之后容器就会被销毁。

如果没有加上 ,退出后可以使用 查看系统中所有的容器。

之后使用 启动容器。

代表连接输出以及信号。最后的 代指我们刚刚创建的那个容器。也可以输入容器的 ID 来启动(不需要输入完整的 ID,只需要前几位即可):

如果忘记加上了参数直接启动,也可以使用 将容器的主进程的输入输出接上。

也可以完成相似的事情:它可以在容器中执行指定的命令(当然也包括 Shell 了)。

由于 创建的进程不是主进程,退出后容器也不会退出,适合需要调试容器的场合。

与 相对应, 可以关闭一个容器, 可以删除一个容器。

与上面的例子类似,执行之后会获得一个 Python 3 最新版本的环境。这里我们通过 将创建的容器命名为 。

  • 从 GitHub 上获取本书源码:

在执行完成之后,可以使用浏览器访问本地的 8000 端口,以查看构建结果。

这里多出了两个参数:

  • : 代表将本地的文件(夹)「挂载」(实际是 bind mount)到容器的对应目录中(这里是 )。注意这个参数只接受绝对路径,所以这里读取了 这个变量,通过拼接的方式拼出绝对路径。
  • : 代表将容器的 8000 端口暴露在主机的 8000 端口上,否则容器外部访问不了 8000 端口。
  • 另外,我们不需要在终端中与容器中的进程进行交互,所以没有设置 参数。

命令可以从当前运行的容器新建镜像。以下是一个简单的例子:

得到的 example.tar 即为我们的 Docker 镜像。可以使用 的方式在其他环境中加载。但是,从可维护性等方面考虑,我们更推荐以下使用 Dockerfile 的做法。

Dockerfile 是构建 Docker 镜像的标准格式,下面会举一些例子。我们会基于这些例子简单介绍 Dockerfile 的语法。

构建简单的交叉编译环境

这个例子尝试使用 Debian 仓库中的 RISC-V 交叉编译工具链与 QEMU 模拟器构建一个简单的用于交叉编译的环境。

通过使用 ,我们可以构建出镜像。

代表为这个镜像打上 的标签。构建完成后,使用 执行即可:

从这个例子中,我们可以看到 Dockerfile 的一些指令:

  1. 定义了基础镜像,之后执行的命令都是在基础镜像之上进行操作。如果希望基础镜像为空,可以使用 。
  2. 指定了在镜像中执行的命令。可以注意到,我们将多个命令合并在了一起执行,这有助于减小镜像的冗余大小。
  3. 可以切换当前的所在的工作目录。
  4. 指定了当前的环境变量。
  5. 指定了容器启动时执行的命令。

Docker 在根据 Dockerfile 构建时,会从上到下执行这些指令,每条指令对应镜像的一层。Docker 容器镜像的独特之处就在于它的分层设计:在构建镜像时每层的更改会叠加在上一层上(这意味着,上一层的所有数据仍然会保留,即使在新的一层删除了);如果某一层已经存在,Docker 会直接使用这一层,节约构建的时间和占用的空间。

在生产环境中运行使用 Flask 编写的简单网站

Flask 是一个知名的 Python web 框架。本例子包含了一个运行 Flask 编写的网站的简单 Dockerfile(不包含数据库等部分):

这里使用了 指令,将本地的 目录复制进容器镜像的 中。

Docker Compose 是一个方便的小型容器编排工具。如果前面安装的是 软件包,那么系统中可能未安装 ,使用以下命令安装:

WordPress 是一个知名的博客应用。本例子使用 Docker Compose,创建了一个使用 MySQL 数据库的 WordPress。

新建一个文件夹,在其中放入一个名为 的配置文件:

在文件夹中运行 命令即可启动样例,在 127.0.0.1:80 上即可看到 WordPress 的初始化界面。用 命令可以让容器分离(detach)命令行。运行完成后,可以使用 停止并删除容器。

小讯
上一篇 2025-04-26 18:30
下一篇 2025-04-16 21:14

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/163316.html