Redian新闻
>
当下运行容器的 3 个步骤 | Linux 中国

当下运行容器的 3 个步骤 | Linux 中国

科技
 
导读:在本教程中,你将学习如何在一个“吊舱”中运行两个容器来托管一个 WordPress 站点。       
本文字数:3779,阅读时长大约:5分钟

LCTT 译者 :MjSeven
💎
翻译: 164.0 篇
|
贡献: 1559 天
2018-01-30
2022-05-08
https://linux.cn/lctt/MjSeven

在本教程中,你将学习如何在一个“吊舱”中运行两个容器来托管一个 WordPress 站点。

无论你是将其作为工作的一部分、未来的工作机会或者仅仅是出于对新技术的兴趣,容器对很多人,即使是经验丰富的系统管理员,可能是非常难以应付的。那么如何真正开始使用容器呢?从容器到 Kubernetes🔗 opensource.com 的成长路径是什么?另外,为什么有不止一条路径?如你所料,最好的起点就是现在。

1、了解容器

略一回忆,容器的开端可以追溯到早期 BSD 及其特殊的 chroot 监狱,但让我们直接跳到发展中期讲起。

之前,Linux 内核引入了 “控制组(cgroup)”,允许你能够使用 “命名空间(namespace)” 来“标记”进程。当你将进程分组到一个命名空间时,这些进程的行为就像在命名空间之外的东西不存在一样,这就像你把这些进程放入某种容器中。当然,这种容器是虚拟的,它位于计算机内部,它和你操作系统的其余进程使用相同的内核、内存和 CPU,但你用容器包含了这些进程。

分发的预制容器仅包含运行它所包含的应用程序必须的内容。使用容器引擎,如 Podman🔗 www.redhat.com、Docker 或 CRI-O,你可以运行一个容器化应用程序,而无需进行传统意义上的安装。容器引擎通常是跨平台的,因此即使容器运行在 Linux 上,你也可以在其他 Linux、MacOS 或 Windows 上启动容器。

更重要的是,当需求量很大时,你可以运行同一应用程序的多个容器。

现在你知道了什么是容器,下一步是运行一个容器。

2、运行一个容器

在运行容器之前,你应该有一个想要运行它的理由。你可以编一个,这有助于你对让容器创建过程感兴趣,这样你就会受到鼓舞,真正去使用你所运行的容器。毕竟,运行容器但不使用它提供的应用程序,只能证明你没有注意到任何故障,但使用容器证明它可以工作。

我推荐从 WordPress 开始,它是一个很流行的 Web 应用程序,容易使用,所以一旦容器运行起来,你就可以测试使用它。虽然你可以轻松地配置一个 WordPress 容器,但还是有很多配置选项可以引导你发现更多运行容器的方式(例如运行数据库容器)以及容器如何通信。

我使用 Podman,它是一个友好、方便且无守护进程的容器引擎。如果你没有安装 Podman,可以改用 Docker 命令。它们都是很棒的开源容器引擎,而且它们的语法是相同的(只需输入 docker 而不是 podman)。因为 Podman 没有守护进程,所以它需要更多的配置,但为了这种运行免 root、无守护进程的容器的能力是值得的。

如果你使用 Docker,可以跳到下面的 运行 WordPress 容器 小节,否则,打开终端安装并配置 Podman:

  1. $ sudo dnf install podman

容器会产生许多进程,通常只有 root 用户有权创建数千个进程 ID。创建一个名为 /etc/subuid 的文件,定义一个适当的起始 UID 和大量合法的 PID,这样就可以为你添加一些额外的进程 ID:

  1. seth:200000:165536

在名为 /etc/subgid 的文件中对你的组执行相同的操作。在这个例子中,我的主要组是 staff(对你来说可能是 users,或者和你的用户名一样,这取决于你的系统)。

  1. staff:200000:165536

最后,确认你的用户可以管理很多命名空间:

  1. $ sysctl --all --pattern user_namespaces
  2. user.max_user_namespaces = 28633

如果你的用户无权管理超过 28,000 个命名空间,创建 /etc/sysctl.d/userns.conf 文件来增加数量并输入:

  1. user.max_user_namespaces=28633

运行 WordPress 容器

现在,无论你使用的是 Podman 还是 Docker,你都可以从在线容器仓库中下载 WordPress 容器并运行它。你可以使用以下 Podman 命令完成所有这些操作:

  1. $ podman run --name mypress \
  2. -p 8080:80 -d wordpress

给 Podman 一会时间来找到容器、从互联网下载它,然后启动。

在收到终端返回提示符后,启动 Web 浏览器,打开 localhost:8080。WordPress 正在运行,等待你进行设置。

WordPress 容器

不过,你很快就会遇到障碍,因为 WordPress 使用数据库来存储数据,因此你需要为其提供一个数据库。

在继续之前,停止并删除 WordPress 容器:

  1. $ podman stop mypress
  2. $ podman rm mypress

3、在吊舱中运行容器

正如名字所暗示的那样,容器在设计上是独立的。在容器中运行的应用程序不应该与在容器外的应用程序或基础设施进行交互。因此,当一个容器需要另一个容器才能运行时,一种解决方案是将这两个容器放在一个更大的容器中,称为 “吊舱(pod)”。吊舱确保其容器可以共享重要的命名空间以便相互通信。

创建一个新的吊舱,为它提供一个名称,以及希望能够访问的端口:

  1. $ podman pod create \
  2. --name wp_pod \
  3. --publish 8080:80

确认吊舱存在:

  1. $ podman pod list
  2. POD ID        NAME     STATUS    INFRA ID      # OF CONTAINERS
  3. 100e138a29bd  wp_pod   Created   22ace92df3ef   1

将容器添加到吊舱

现在你已经为相互依赖的容器创建了一个吊舱,你可以通过指定一个运行的吊舱来启动每个容器。

首先,启动一个数据库容器。你可以创建自己的凭据,只要在 WordPress 连接到数据库时使用相同的凭据。

  1. $ podman run --detach \
  2. --pod wp_pod \
  3. --restart=always \
  4. -e MYSQL_ROOT_PASSWORD="badpassword0" \
  5. -e MYSQL_DATABASE="wp_db" \
  6. -e MYSQL_USER="tux" \
  7. -e MYSQL_PASSWORD="badpassword1" \
  8. --name=wp_db mariadb

接下来,在同一个吊舱中启动 WordPress 容器:

  1. $ podman run --detach \
  2. --restart=always --pod=wp_pod \
  3. -e WORDPRESS_DB_NAME="wp_db" \
  4. -e WORDPRESS_DB_USER="tux" \
  5. -e WORDPRESS_DB_PASSWORD="badpassword1" \
  6. -e WORDPRESS_DB_HOST="127.0.0.1" \
  7. --name mypress wordpress

现在启动你最喜欢的网络浏览器并打开 localhost:8080

这一次,设置会正常进行。WordPress 会连接到数据库,因为你在启动容器时传递了这些环境变量。

WordPress 启动

创建用户账户后,你可以登录查看 WordPress 仪表板。

WordPress dashboard running in a container

下一步

你已经创建了两个容器,并在一个吊舱中运行了它们。你现在已经了解了如何在自己的服务器上运行容器及服务。如果你想迁移到云,容器非常适合你。使用像 Kubernetes 和 OpenShift 这样的工具,你可以自动化启动 集群上的容器和吊舱🔗 enterprisersproject.com。如果你正在考虑采取下一步行动,阅读 Kevin Casey 的 3 个开始使用 Kubernetes 的方法🔗 enterprisersproject.com,并尝试他提到的 Minikube 教程。


via: https://opensource.com/article/22/2/start-running-containers

作者:Seth Kenlon 选题:lujun9972 译者:MjSeven 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出


欢迎遵照 CC-BY-SA 协议规定转载,
如需转载,请在文章下留言 “转载:公众号名称”,
我们将为您添加白名单,授权“转载文章时可以修改”。


微信扫码关注该文公众号作者

戳这里提交新闻线索和高质量文章给我们。
相关阅读
你的目的是什么?!Archinstall 新的菜单系统让安装 Arch Linux 更容易了 | Linux 中国图解 Fedora 36 工作站安装步骤 | Linux 中国好消息!Docker Desktop 现已支持 Linux | Linux 中国在虚拟机中运行 Linux 的十大优点 | Linux 中国你的 Linux 启动时有几只小企鹅? | Linux 中国科隆新二日游最适合程序员的 10 款 Linux 发行版 | Linux 中国用 Gwenview 在 Linux 上裁剪和调整照片大小 | Linux 中国Fedora Linux 36 发布 | Linux 中国GNU C 编译器的程序员入门指南 | Linux 中国如何在 Fedora Linux 中安装多媒体编码器 | Linux 中国砍伐后院百年大松树开源朗读者:在虚拟机中运行 Linux 的十大优点 | Linux 中国如何在 Linux 桌面中启用 “激活 Linux” 水印通知 | Linux 中国微软还有另一个 Linux 发行版,而且是基于 Debian 的 | Linux 中国走进繁花:荷兰(7)-如歌的行板使用 dnf 进行 Linux 包管理 | Linux 中国我如何在 Linux 上扫描家庭照片 | Linux 中国在 Linux 上使用 sudo 命令的 5 个理由 | Linux 中国使用 apt 进行 Linux 包管理 | Linux 中国上一个说“丼”不读jǐng的人,已经被我骂哭了Fudgie?令人惊叹的 Budgie 桌面即将登陆 Fedora Linux | Linux 中国分享 8 篇使用 Linux 命令行的技巧 | Linux 中国英伟达在提升 Linux 上的 GPU 使用体验上迈出了一大步 | Linux 中国HydraPaper:一个支持多显示器的 Linux 壁纸管理器 | Linux 中国使用 watch 和 tail 命令监视 Linux 上的活动 | Linux 中国在 Ubuntu Linux 如何安装 H.264 解码器 | Linux 中国Linux 中国开通播客频道:“开源朗读者”和“硬核观察” | Linux 中国普京的战略深不可测在 Linux 中找到你的路由器的 IP 地址(默认网关) | Linux 中国实测 Linux Mint 升级工具 | Linux 中国如何在 Linux 和 Windows 电脑之间共享文件 | Linux 中国在自己的电脑上实验容器和荚 | Linux 中国GNOME 43 中 Nautilus 文件管理器的 6 个新变化 | Linux 中国
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。