标签: docker

在 php5-fpm-alpine docker 容器中在 alpine linux 上安装 php-gd 依赖项

尝试在 docker 中的 alpine linux 上安装 GD 依赖项。

我正在构建 php5-fpm-alpine 图像。

FROM php:5-fpm-alpine
RUN docker-php-ext-install mysqli
RUN apk upgrade --update && apk add \
        libfreetype6-dev \
        libjpeg62-turbo-dev \
        libmcrypt-dev \
        libpng12-dev \
    && docker-php-ext-install -j$(nproc) mcrypt \
    && docker-php-ext-configure gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/ \
    && docker-php-ext-install -j$(nproc) gd
Run Code Online (Sandbox Code Playgroud)

我得到错误:

ERROR: unsatisfiable constraints:
  libfreetype6-dev (missing):
    required by: world[libfreetype6-dev]
  libjpeg62-turbo-dev (missing):
    required by: world[libjpeg62-turbo-dev]
  libpng12-dev (missing):
    required by: world[libpng12-dev]
Run Code Online (Sandbox Code Playgroud)

我对 alpine 发行版的经验有限。它似乎不是很受欢迎,因此通过谷歌获得的信息很少或根本没有。

docker

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

使用虚拟化网络的 Docker >= 1.10 中的 HTTPS 请求失败

我遇到了一个问题,即无法从版本为 1.10.3 或 1.11.2 的 Docker 容器内部建立 HTTPS 连接。

我尝试了 apt-get、curl 和 wget,但一旦建立了 HTTPS 连接,一切都失败了。

例如,以下命令失败:

$ docker run -it ubuntu-curl curl -v https://www.google.com
[...]
* gnutls_handshake() failed: Error in the pull function.
* Closing connection 0
Run Code Online (Sandbox Code Playgroud)

Docker 映像ubuntu-curl基于ubuntu:latest,唯一的变化是apt-get update ; apt-get install curl.

如果我使用 HTTP 而不是 HTTPs,它会起作用。如果我从主机发出相同的命令,它就可以工作。如果我在没有网络虚拟化(docker run --net="host")的情况下启动容器,它就可以工作。如果我降级 Docker(我尝试了 1.6.2 和 1.9.1),它也能正常工作。

任何提示可能有什么问题?我尝试了两台主机,Ubuntu 14 LTS 和 CoreOS stable,没有相关的定制——都在 OpenStack 集群中运行。

主机的 iptables(虽然我不明白为什么 iptables 应该只阻止 HTTPs 流量):

$ …
Run Code Online (Sandbox Code Playgroud)

https docker

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

Docker 运行 bash 脚本,然后移除容器

有没有办法可以在容器内运行 bash 脚本,然后删除容器,所有内容都在一行中?该脚本应该能够写入它当前所在的文件夹。

我试过了

docker run --rm -ti ubuntu:trusty bash -c 'source runme.sh'
Run Code Online (Sandbox Code Playgroud)

但是 bash 找不到该文件,我假设是因为容器无权访问脚本所在的文件夹。

docker

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

在 docker 中使用 docker 挂载卷

我正在使用以下命令在容器内运行 docker:
docker run --rm -ti --privileged -v /var/run/docker.sock:/var/run/docker.sock docker:1.12 sh

在该容器的外壳中,我看到一个包含一堆文件的目录。让我们说/project一个文件build.gradle。我想启动一个新容器并使用以下命令挂载此目录

docker run -ti --rm -v /project:/project openjdk:8-jdk bash -c "ls /project".

但是看起来项目目录是空的,ls /project不显示任何文件..

现在尝试挂载文件:

docker run -ti --rm -v /project/build.gradle:/project/build.gradle openjdk:8-jdk bash -c "ls /project/"

这次文件夹显示了文件。

任何知道为什么卷安装无法按预期工作的人。这是权限问题吗?

docker

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

如何获取 docker swarm 节点的 IP 地址?

我有两个虚拟机 ubuntu16 来宾,它们可以通过仅主机网络进行通信:172.28.128.0/16

我使用docker docs 中的步骤创建了一个 docker swarm 。以下是我的群的状态:

vagrant@master:~$ docker node ls
ID                           HOSTNAME  STATUS  AVAILABILITY  MANAGER STATUS
127fuzxjq2j3ashcteu8fo248    worker1   Ready   Active        
43l953k75lv14uw7ni2hbib5j *  master    Ready   Active        Leader
Run Code Online (Sandbox Code Playgroud)

我可以使用这个群来成功运行服务。但是是否可以通过 docker 获取节点的基于 172.28.128.0/16 的 IP 地址?我尝试查看docker commandline reference以及docker remote api 。我的目标是通过远程 api 联系任何 swarm 节点,但为此我需要它的底层 api,在该 api 上启用远程 docker 守护程序进行侦听。

docker docker-swarm

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

Docker 在 Mac 上的 VMWare

我正在运行由 vmware 管理的 mac 虚拟机(在我们的 DC 本地),将它们用作我们 CI 工作流的代理。

我的意图是在这些机器上安装 docker,以便将我的一些构建步骤转换为在容器中运行。唉,在尝试安装 docker 时,我收到以下错误 - https://docs.docker.com/docker-for-mac/troubleshoot/#incompatible-cpu-detected

运行文档 ( sysctl kern.hv_support)建议的命令返回输出kern.hv_support: 0

无论如何要为mac vms启用hv_support?

我意识到这个问题可能缺少很多数据,如果我可以提供任何细节来澄清我的问题,请告诉我。

virtual-machines mac-osx docker

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

如何将 UDP 数据包从 Docker 容器转发到主机 127.0.0.1?

我有一个带有 StatsD 守护进程的主机 (A) 在 127.0.0.1:8125 监听:

root@A# netstat -uln
Proto Recv-Q Send-Q Local Address           Foreign Address         State      
udp        0      0 127.0.0.1:8125          0.0.0.0:*                          
Run Code Online (Sandbox Code Playgroud)

一个 docker 容器 (B) 在主机 A 上启动,具有桥接网络:

root@A# docker network inspect bridge
[
    {
        "Name": "bridge",
        "Id": "02b013615710b375744975ff74bdd0b5dcc8c25debba4fa23ad8f53da2c684e3",
        "Created": "2017-04-21T08:13:04.389253904Z",
        "Scope": "local",
        "Driver": "bridge",
        "EnableIPv6": false,
        "IPAM": {
            "Driver": "default",
            "Options": null,
            "Config": [
                {
                    "Subnet": "172.17.0.0/16",
                    "Gateway": "172.17.0.1"
                }
            ]
        },
        "Internal": false,
        "Attachable": false,
        "Containers": {
            "e1fde895c871504f64627c88531a380269ee9fe8a9fa5237a98c81500fa47a7a": {
                "Name": "B",
                "EndpointID": "4e4a8758e811bb48cecec67d339c182c60e1d955126506cddb7d451e818c5535",
                "MacAddress": "02:42:ac:11:00:02",
                "IPv4Address": …
Run Code Online (Sandbox Code Playgroud)

linux iptables statsd docker

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

以特权模式重启docker容器

我有一个无法应对负载的 docker 容器。

我需要增加 in 的值,/proc/sys/net/core/somaxconn但我无法这样做,因为容器未在特权模式下运行。

自从创建 docker 文件以来,对 nignx 和 php 配置进行了一些调整。

是否可以在不丢失我已经进行的配置更改的情况下以特权模式重新启动容器?

docker proc

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

为什么我们需要一个与 OpenVPN TAP 接口桥接的 LAN 物理接口才能在桥接模式下运行 OpenVPN?

在这里,我有一些(可能略有不同)的问题,但彼此相关,因此我更愿意在一个问题中提出问题。

我一直在尝试允许我的 OpenVPN 客户端(OpenVPN 设置为桥接模式)连接到 Docker 容器。
众所周知,Docker 容器都通过桥(docker0桥或其他任何东西)相互连接。

我总是br0在我的家庭服务器上使用我自己的网桥 ( ),在那里我设置 Docker 以使用该网桥 ( br0),并tap0在该网桥上桥接 OpenVPN 接口 ( ) 和我的物理接口 ( eth0),它通过 LAN 连接到我的家用路由器。这总是对我有用,所有 OpenVPN 客户端总是能够访问桥接的每个 Docker 容器br0(OpenVPN 客户端和 Docker 容器在我的 LAN 范围内都有 IP)。

几天前我租了一个 VPS,我的物理接口直接连接到互联网(它有唯一的公共 IP)。
我和以前一样(将 Docker 设置br0为对所有容器使用我的),并tap0br0.

我面临的问题是,我的 OpenVPN 客户端无法 ping 或访问任何 Docker 的容器(容器能够 ping 并访问其他 Docker 的容器,但不能访问 OpenVPN 客户端),并且客户端无法 ping 每个其他也一样。

这与我没有桥接物理接口有什么关系吗?如果是的话,我想知道为什么除了 OpenVPN TAP 接口之外,我还应该桥接服务器的接口(可能通过 LAN 连接到任何路由器)以获得桥接模式下的功能性 OpenVPN?

这个问题在我脑海中引发了另一个相关问题: …

networking ethernet openvpn bridge docker

4
推荐指数
2
解决办法
1742
查看次数

Docker - 容器中的时区与主机上的时区不同

在我所有正在运行的 docker 容器中,容器系统时间都设置为 UTC,而在我的主机(debian)上是 CEST。

为什么他们不自动同步?我如何让他们在提出他们时设定正确的时间?

root@v2201510680628925:/home/jacob# docker version
Client:
 Version:      1.11.2
 API version:  1.23
 Go version:   go1.5.4
 Git commit:   b9f10c9
 Built:        Wed Jun  1 21:36:47 2016
 OS/Arch:      linux/amd64

Server:
 Version:      1.11.2
 API version:  1.23
 Go version:   go1.5.4
 Git commit:   b9f10c9
 Built:        Wed Jun  1 21:36:47 2016
 OS/Arch:      linux/amd64
root@v2201510680628925:/home/jacob# date
Wed Aug  2 09:59:20 CEST 2017
root@v2201510680628925:/home/jacob# docker exec -it naos_nginx bash
root@0cefa7f7096c:/# date
Wed Aug  2 07:59:34 UTC 2017
root@0cefa7f7096c:/# exit
exit
root@v2201510680628925:/home/jacob# docker exec -it ah_avail bash …
Run Code Online (Sandbox Code Playgroud)

time host containers timezone docker

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