标签: containers

docker 中容器之间的通信,而不是套接字/网络

除了通过套接字/网络之外,还有什么方法可以在 docker 容器之间进行通信?可能是 IPC 或其他一些方式。可行吗?

我已经阅读了 docker 文档,它说我们可以使用 --link 选项链接 docker 容器,但它没有说明如何将数据/味精从一个容器传输到另一个容器。我已经创建了一个名为 checkram 的容器。现在我想将一个新容器与这个容器链接起来,然后运行docker run -i -t --privileged --link=checkram:linkcheck --name linkcont topimg命令。然后我检查了LINKCHECK_PORT包含tcp://172.17.0.14:22. 我不知道如何处理这个 ip 和端口以及如何从 linkcont 容器与 checkram 容器通信。谁能帮我解决这个问题?提前致谢。

linux containers docker

4
推荐指数
1
解决办法
1135
查看次数

docker cron 不工作

我正在尝试构建一个包含 cron 的 docker 镜像。从 docker 文件系统的特定位置删除文件的 cron。下面是我的 Dockerfile

FROM ubuntu:latest
MAINTAINER docker@ekito.fr

RUN apt-get update && apt-get -y install cron

# Copy testfiles folder to docker container.
COPY ./testfiles /opt/

# Create the log file to be able to run tail
RUN touch /var/log/cron.log

RUN (crontab -l -u root; echo "* * * * * root rm -rf /opt/*") | crontab

# Run the command on container startup
CMD cron

ENTRYPOINT ["/bin/sh", "-c", "/bin/bash"]
Run Code Online (Sandbox Code Playgroud)

一切都很成功。我的 cron 也设置在容器中

roadrunner:test shailesh$ …
Run Code Online (Sandbox Code Playgroud)

linux ubuntu containers docker

4
推荐指数
1
解决办法
3万
查看次数

无法在 AWS EKS 中列出服务

我正在按照入门指南设置我的第一个 Kubernetes EKS 集群,但我无法通过验证访问的步骤kubectl get svc。而不是我得到的服务列表:

error: the server doesn't have a resource type "svc"
Run Code Online (Sandbox Code Playgroud)

我已经准备好了aws-iam-authenticator,我已经为具有 AWS 管理员权限的用户获得了正确的访问权限和密钥,我检查了我能想到的所有内容,但无法找出导致错误的原因。

containers amazon-web-services kubernetes

4
推荐指数
1
解决办法
1265
查看次数

如何以非交互方式安装 ubuntu-server?

我正在尝试为开发环境构建 ubuntu-server 容器,但系统提示我选择键盘布局和字符集。


运行容器:

docker run --rm it ubuntu
Run Code Online (Sandbox Code Playgroud)

在容器中:

apt-get update && apt-get install -y ubuntu-server
Run Code Online (Sandbox Code Playgroud)

(然后我最终会提示选择和键盘,然后是字符集。)

容器可以工作 - 但它是交互式的 :( 我想用 Dockerfile 以非交互式方式重复这个过程。


一个 Dockerfile(失败):

Dockerfile:

FROM ubuntu:16.04
RUN apt-get update && apt-get install -y ubuntu-server
Run Code Online (Sandbox Code Playgroud)

构建它:

docker build -t ubuntu-server .
Run Code Online (Sandbox Code Playgroud)

- 失败

如何在容器中以非交互方式构建/安装 ubuntu-server?

ubuntu containers docker

3
推荐指数
1
解决办法
2270
查看次数

容器有操作系统吗?

我知道容器使用主机的内核,据我所知,这就是我们不需要操作系统的原因。我的问题是(我在网上找不到任何好的解释):

1) 如果是这种情况,那么我们是否会收到 shell 提示以及我们如何在容器上添加 systemctl、services 等内容

2) 例如,我们如何在 Ubuntu 主机上安装 CentOS 容器?在这种情况下,容器是否在容器映像中安装了操作系统?

linux namespaces containers linux-kernel docker

3
推荐指数
3
解决办法
8302
查看次数

对于内部包含 systemd 的 nspawn 容器,“无法获取 shell PTY:协议错误”

我创建容器

# debootstrap --variant=minbase --include=systemd,iproute2 buster "/var/lib/machines/test"
Run Code Online (Sandbox Code Playgroud)

然后我运行它:

# systemd-nspawn --machine test
Run Code Online (Sandbox Code Playgroud)

仅用于测试目的。容器启动,当我尝试访问它时,machinectl出现错误:

# machinectl shell test
Failed to get shell PTY: Protocol error
Run Code Online (Sandbox Code Playgroud)

经过一番谷歌搜索后,我意识到有一个旧错误导致了这种行为,但这在systemd v226中得到了修复,并且/usr/bin/systemd --version在我的 debian 上显示了版本 246。

我可以使用“非 systemd 容器”方法进入容器,但是我的容器运行 systemd,我应该能够使用machinectl.

containers systemd

3
推荐指数
1
解决办法
2455
查看次数

在 debian systemd 包中找不到 systemd-machined

我有一个 docker 容器,运行非常裸的 debian 版本。有了这个,我必须先在外部安装 systemd。为此,我有一个运行安装的 docker 容器,然后将其提交到一个映像,然后从该映像运行 systemd。当我 bash 进入容器时,在文件系统的任何地方都找不到 machinectl,并且 machined 似乎没有运行。我需要安装特定的软件包吗?或者由于我一开始就在容器中,是否无法进行机加工?我承认容器中的容器是不受欢迎的,但这个容器的目的是运行与 systemd-machined 接口的测试。

重现步骤:

docker run --privileged --cidfile=/tmp/cidfile debian:stretch bash -c 'apt-get update && apt-get install -y build-essential git dbus libsystemd-dev libpam-systemd'
docker commit `cat /tmp/cidfile` deb-machined-test
rm /tmp/cidfile
docker run -d --cidfile=/tmp/cidfile --privileged deb-machined-test /bin/systemd --system
Run Code Online (Sandbox Code Playgroud)

debian packages containers systemd

2
推荐指数
1
解决办法
1036
查看次数

容器退出后如何退出docker exec?

在我连接到docker exec -ti的 docker 退出后,如何优雅地退出我已经连接到的 docker 容器?

如果我退出原始容器,则运行该docker exec命令的 shell会挂起,我能找到退出回其 shell 的唯一方法是docker exec从另一个终端终止该命令。

有没有更优雅的方式?

无论我是否启动容器,都会发生这种情况--rm

我在 Ubuntu 20.04 的 gnome-terminal 3.26.3 中的 bash 5.0.16 下运行 docker 19.03.12。

ubuntu bash containers docker

2
推荐指数
1
解决办法
5935
查看次数

如何列出所有命名空间的挂载?

Linux 命名空间允许不同的命名空间有不同的挂载。如何列出所有命名空间的所有挂载?

我找到了 /proc/*/ns/mnt,但我不知道如何处理它们。

linux containers

1
推荐指数
1
解决办法
2708
查看次数