标签: docker-engine

docker-ce:取决于:libseccomp2(> = 2.3.0)但是要安装2.2.3-3ubuntu3

我在我的ubuntu机器上安装docker并且我正在学习本教程 https://docs.docker.com/engine/installation/linux/docker-ce/ubuntu/#extra-steps-for-aufs

当我运行sudo apt-get install -y docker-ce时,它不会在我的机器上安装docker并给出以下错误

$ sudo apt-get install -y docker-ce
Reading package lists... Done
Building dependency tree       
Reading state information... Done
Some packages could not be installed. This may mean that you have
requested an impossible situation or if you are using the unstable
distribution that some required packages have not yet been created
or been moved out of Incoming.
The following information may help to resolve the situation:

The following packages have unmet dependencies:
 docker-ce : …
Run Code Online (Sandbox Code Playgroud)

ubuntu docker docker-compose ubuntu-16.04 docker-engine

19
推荐指数
7
解决办法
1万
查看次数

如何在docker引擎群模式下跨多个主机共享卷?

我们可以在docker engine swarm模式下跨多个主机共享一个公共/单个命名卷,这是最简单的方法吗?

docker docker-swarm docker-engine docker-swarm-mode

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

如何在 Amazon linux 2023 上安装 Docker?

我正在尝试使用 docker ce repo 在 amazon linux 2023 上安装 docker 引擎,但没有成功。

我尝试使用“amazon-linux-extras”在 amazon linux 2 上安装 Docker,但它在 AL2023 上不再可用,即使它在 AL2 上。

amazon-ec2 docker docker-engine amazon-linux amazon-linux-extras

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

为什么需要 Docker 多架构(而不是由 Docker 引擎抽象差异)

简洁版本

我想知道为什么需要为多种架构创建 Docker 镜像的技术原因。此外,还不清楚这里的重点是为每个 CPU 架构还是为操作系统创建映像。操作系统不应该抽象架构吗?

长版

我能理解为什么 Docker Engine 必须移植到多种架构。它是一个与操作系统交互、进行系统调用的软件,最终它只是针对特定体系结构表示为特定指令集中的指令序列的代码。因此,Docker 引擎必须移植到多个操作系统/架构,就像必须移植 Microsoft Word 一样。

同样的事情也会发生在 JVM 或 VirtualBox 上。

但是,与 Docker 不同的是,为 Windows 上的 JVM 编写的软件可以在 Linux 上运行。JVM 会抽象底层操作系统/架构的差异,并在两个平台上运行相同的代码。

为什么 Docker 镜像不是这样?为什么 Docker 引擎不能抽象出差异并提供通用接口,这样镜像本身就不需要与特定的操作系统/架构兼容?

这是一个决定(比如“让我们为每个架构制作不同的镜像,因为 X 原因更好”),还是 Docker 工作方式的结果(比如“我们需要这样做,因为 Docker 需要 Y”)?

笔记

  • 我没有哭“天啊,为什么??”。这不是咆哮或批评,我只是在寻找不同架构需要不同图像的技术解释。
  • 我不是问如何创建多架构图像。
  • 我不是在寻找像“需要多架构图像,以便您可以在各种平台上运行图像”这样的答案,它回答“有什么用?”,而不是“为什么需要它?” (这是我的问题)。

除此之外,当你看到一张图片时,它的os/arch摘要中通常会有一个,如下所示:

docker 镜像摘要

图像的具体目标是什么?操作系统、架构,还是两者兼而有之?操作系统不应该抽象底层架构吗?


编辑:我开始假设每个架构需要不同的图像:图像将包含其中的应用程序。假设它将包含 Go 编译器。Go编译器本身是一个二进制文件,必须已编译到不同的架构。的镜像x86-64将包含编译为 的 Go 编译器x86-64,等等。它是否正确?如果这是正确的,这是唯一的原因吗?

cpu-architecture docker docker-image docker-engine

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

docker deploy不会在swarm中发布端口

我有一个设有两个节点,一个经理和一个工人的群.我想在swarm中发布一个端口,以便我可以访问我的应用程序,我想知道我是如何实现这一点的.

version: '2'
services:
  server:
    build: .
    image: my-hub.company.com/application/server:latest
    ports:
      - "80:80"
Run Code Online (Sandbox Code Playgroud)

当我运行docker-compose时,这会暴露端口80并且它运行正常,但是当我运行捆绑部署时

docker deploy my-service
Run Code Online (Sandbox Code Playgroud)

这不会发布端口,所以它只是在docker ps中说80/tcp,而不是指向端口.也许这是因为我需要附加负载均衡器或运行一些花哨的命令,或者可能添加另一层配置以实际在多主机群中公开此端口.

有人可以帮助我理解我需要配置/做什么来使这个暴露一个端口.

我最好的情况是暴露端口80,如果我从不同的主机名访问它,它会将我发送到不同的应用程序.

更新:如果我在部署应用程序后运行以下命令似乎有效

docker service update -p 80:80 my-service_server
docker kill <my-service_server id>
Run Code Online (Sandbox Code Playgroud)

我发现这个存储库用于运行HA代理,它看起来很棒并且由docker自己支持,但是我似乎无法使用新的swarm模式将这个单独应用于我的服务.

https://github.com/docker/dockercloud-haproxy

底部有一个很好的描述,描述了网络的外观:

Internet -> HAProxy -> Service_A -> Container A
Run Code Online (Sandbox Code Playgroud)

但是我找不到通过docker service create命令链接服务的方法,最好现在看起来像是一种建立网络的方式,当我在服务上应用这个网络时,它会在HAProxy中找到它.

- 马库斯

docker dockerfile docker-compose docker-swarm docker-engine

11
推荐指数
2
解决办法
7422
查看次数

无法在Debian Jessie上安装Docker

尽管尝试了使用这里描述的新apt repo的官方安装机制,以及curl -fsSL https://get.docker.com/ | sh路由,但是E: Unable to locate package docker-engine当我尝试时,我仍然从APT 获得apt-get install docker-engine.

我的版本是:

$ uname -a
Linux blah 4.5.5-x86_64-linode69 #3 SMP Fri May 20 15:25:13 EDT 2016 x86_64 GNU/Linux


$ lsb_release -c
Codename:       jessie

$ cat /etc/debian_version
8.5

$ cat /etc/apt/sources.list
deb http://ftp.uk.debian.org/debian/ stable main contrib non-free
deb-src http://ftp.uk.debian.org/debian/ stable main
deb http://security.debian.org/ stable/updates main
deb-src http://security.debian.org/ stable/updates main
deb http://http.debian.net/debian wheezy-backports main
Run Code Online (Sandbox Code Playgroud)

在我的唯一文件/etc/apt/sources.list.d就是docker.list其中包含:

deb https://apt.dockerproject.org/repo …
Run Code Online (Sandbox Code Playgroud)

debian docker docker-engine

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

`docker start`并行?

我在一个Docker网络上旋转1000个容器,所有这些都来自同一个Docker镜像.

目前部署需要很长时间.我已经分离的过程分为docker createdocker start,而不是单片docker run.

有没有办法同时旋转容器? - 很高兴在编程接口(Go,C,无论如何)中工作,或使用CLI命令.

相关:Docker Engine可以并行启动容器 [3年前询问和回答]

docker docker-engine containerd

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

Docker 主机挂载卷权限

在我们的内部测试环境中,我们从基于 vSphere 的服务器配置 CentOS VM。这些图像是 vanilla 7.1,带有软件包和相关配置,以支持通过 LDAP 进行身份验证。我在 xfs 文件系统上安装了 Docker 1.13.1 和 OverlayFS 驱动程序。

FROM centos:7
RUN useradd dockeruser
USER dockeruser
VOLUME /data
Run Code Online (Sandbox Code Playgroud)

在主机上:

mkdir data
echo "hello from host" > data/host-msg.txt
docker run -ti --rm -v $(pwd)/data:/data testimage bash
Run Code Online (Sandbox Code Playgroud)

容器内部:

echo "hello from container" > /data/container-msg.txt
bash: /data/container-msg.txt: Permission denied
Run Code Online (Sandbox Code Playgroud)

列出容器内的目录内容:

drwxr-xr-x   2 12345 13000    25 Feb 12 21:36 data
drwxr-xr-x   5 root  root    360 Feb 12 21:36 dev
drwxr-xr-x   1 root  root     62 Feb 12 21:36 …
Run Code Online (Sandbox Code Playgroud)

linux docker docker-volume docker-engine

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

如何将 docker 图像链接到它们在磁盘上的组成层?

从 Docker v1.10 开始,随着内容可寻址存储的引入,Docker 彻底改变了图像数据在磁盘上的处理方式。我知道现在图层和图像是分开的。层只是成为没有图像概念的文件和目录的集合,可以在图像之间自由共享。请参阅更新和具有更好解释的博客

docker push和期间docker pull,通过标准输出可以看到层被传输,尽管生成的 SHA 哈希在目的地完全重新生成。

使用ubuntu:14.04base本地构建的镜像,当我使用该docker history命令时,我可以看到构建过程中使用的一系列中间镜像,以及它们贡献的磁盘空间使用情况。

root@ruifeng-VirtualBox:/var/lib/docker/aufs/diff# docker history image_size
IMAGE               CREATED             CREATED BY                                      SIZE                COMMENT
9ae1f372d83c        11 weeks ago        /bin/sh -c #(nop)  CMD ["/bin/sh" "-c" "/bin/   0 B                 
aaf66e9fa85b        11 weeks ago        /bin/sh -c chown -R martian /home/martian       6.299 MB            
9568768134c1        11 weeks ago        /bin/sh -c rm -rf /home/martian/potatoes        0 B                 
2f40f3f58306        11 weeks ago        /bin/sh -c mv /home/martian/water_tanks /home   6.289 …
Run Code Online (Sandbox Code Playgroud)

docker docker-engine

5
推荐指数
2
解决办法
2311
查看次数

不健康的 docker 容器未通过 docker 本机健康检查重新启动

我通过在 Docker 文件中添加 HEALTHCHECK 命令来实现 docker 本机健康检查,如下所示,

HEALTHCHECK --interval=60s --timeout=15s --retries=3 CMD ["/svc/app/healthcheck/healthCheck.sh"]
Run Code Online (Sandbox Code Playgroud)

设置容器的入口点

CMD [".././run.sh"] 
Run Code Online (Sandbox Code Playgroud)

执行 docker run 命令如下所示,

docker run -d  --net=host --pid=host --publish-all=true -p 7000:7000/udp applicationname:temp
Run Code Online (Sandbox Code Playgroud)

当我的应用程序未启动并且我可以看到容器状态为不健康,但它没有重新启动时,healthCheck.sh 将以 1 退出。

STATUS

Up 45 minutes (unhealthy)
Run Code Online (Sandbox Code Playgroud)

以下是 docker 和操作系统的详细信息:

[root@localhost log]# docker -v
Docker version 18.09.7, build 2d0083d
Run Code Online (Sandbox Code Playgroud)

操作系统版本

NAME="CentOS Linux"
VERSION="7 (Core)"
Run Code Online (Sandbox Code Playgroud)

当容器变得不健康时如何自动重新启动容器?

docker dockerfile docker-engine

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