尝试在 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 发行版的经验有限。它似乎不是很受欢迎,因此通过谷歌获得的信息很少或根本没有。
我遇到了一个问题,即无法从版本为 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) 有没有办法可以在容器内运行 bash 脚本,然后删除容器,所有内容都在一行中?该脚本应该能够写入它当前所在的文件夹。
我试过了
docker run --rm -ti ubuntu:trusty bash -c 'source runme.sh'
Run Code Online (Sandbox Code Playgroud)
但是 bash 找不到该文件,我假设是因为容器无权访问脚本所在的文件夹。
我正在使用以下命令在容器内运行 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/"
这次文件夹显示了文件。
任何知道为什么卷安装无法按预期工作的人。这是权限问题吗?
我有两个虚拟机 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 守护程序进行侦听。
我正在运行由 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?
我意识到这个问题可能缺少很多数据,如果我可以提供任何细节来澄清我的问题,请告诉我。
我有一个带有 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) 我有一个无法应对负载的 docker 容器。
我需要增加 in 的值,/proc/sys/net/core/somaxconn但我无法这样做,因为容器未在特权模式下运行。
自从创建 docker 文件以来,对 nignx 和 php 配置进行了一些调整。
是否可以在不丢失我已经进行的配置更改的情况下以特权模式重新启动容器?
在这里,我有一些(可能略有不同)的问题,但彼此相关,因此我更愿意在一个问题中提出问题。
我一直在尝试允许我的 OpenVPN 客户端(OpenVPN 设置为桥接模式)连接到 Docker 容器。
众所周知,Docker 容器都通过桥(docker0桥或其他任何东西)相互连接。
我总是br0在我的家庭服务器上使用我自己的网桥 ( ),在那里我设置 Docker 以使用该网桥 ( br0),并tap0在该网桥上桥接 OpenVPN 接口 ( ) 和我的物理接口 ( eth0),它通过 LAN 连接到我的家用路由器。这总是对我有用,所有 OpenVPN 客户端总是能够访问桥接的每个 Docker 容器br0(OpenVPN 客户端和 Docker 容器在我的 LAN 范围内都有 IP)。
几天前我租了一个 VPS,我的物理接口直接连接到互联网(它有唯一的公共 IP)。
我和以前一样(将 Docker 设置br0为对所有容器使用我的),并tap0在br0.
我面临的问题是,我的 OpenVPN 客户端无法 ping 或访问任何 Docker 的容器(容器能够 ping 并访问其他 Docker 的容器,但不能访问 OpenVPN 客户端),并且客户端无法 ping 每个其他也一样。
这与我没有桥接物理接口有什么关系吗?如果是的话,我想知道为什么除了 OpenVPN TAP 接口之外,我还应该桥接服务器的接口(可能通过 LAN 连接到任何路由器)以获得桥接模式下的功能性 OpenVPN?
这个问题在我脑海中引发了另一个相关问题: …
在我所有正在运行的 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)