Questions tagged «docker»

Docker是一个开源项目,可自动在软件容器内部署应用程序。

2
如何减少Docker映像大小
我有运行GlassFish的容器。当我尝试提交映像时,它变为14GB。后来,我删除/tmp/了10GB的容器并尝试提交映像,但该映像仍然是14GB。似乎从容器中删除文件并没有反映在图像大小中。如何解决此问题?
12 docker 

1
允许Docker容器在主机隧道接口上连接到OpenVPN客户端
我有以下设置: 运行docker服务的CentOS主机 用户定义的Docker桥接网络 2个Docker容器连接到该用户定义的桥接网络 OpenVPN安装(当前在主机上运行。也可以在docker容器中运行) 一些客户端连接到OpenVPN 如何允许docker bridge网络上的docker容器与tun0网络上的openvpn客户端通信? 我希望能够以透明方式在docker1(10.10.0.3)与连接到vpn(172.19.0.x范围)的客户端之间进行基于tcp的通信。 我需要在docker(网络/ iptables / ...)端和主机(iptables?)端设置什么
12 openvpn  docker 

1
在Docker群模式下使用专用物理网络
我正在以集群模式使用Docker进行生产设置(使用Docker 17.03.1-ce)。将涉及2个数据中心。在两个数据中心中,所有机器在专用网络上都具有公用IP和专用(数据中心本地)IP,因此将有2个专用网络。 专用网络接口上的网络流量是免费的,而公用接口上的流量没有一定限制(而且速度较慢),因此,在可能的情况下,我希望网络流量通过专用接口。 现在,根据我的理解(我认为),群模式下Docker节点之间的所有流量都将通过用于与群主机进行通信的相同网络接口,在我的情况下,必须是公共网络才能进行多DC网络连接可能。但是,大多数期望的流量将在同一DC中的节点之间,如果源节点和目标节点恰好在同一专用网络上,那么Doc​​ker能够以某种方式通过我的专用网络路由流量,那将是非常好的。 恐怕开箱即用是不可能的,因为群主不了解这些专用网络和节点上的IP。 我能想到的一种解决方案是设置VPN并在其上部署群集,但这增加了额外的复杂性,我更喜欢纯Docker群集解决方案。 更新:如评论中所建议,解决方案的基础可能是使用iptables将传出流量路由到专用IP而不是公用IP。但是,如果我想这样做,我的下一个问题将是如何管理所有这些规则。在DC中有10台服务器时,我需要10 * 9 = 90台服务器才能通过专用网络路由所有可能的本地流量。我可以想象也许存在一些可以帮助完成此类任务的工具,或者我可以创建一个工具,但是也许有一种更简单的方法可以完成此任务。

2
Docker下的Chrome:CAP_SYS_ADMIN与特权?[关闭]
关闭。这个问题是题外话。它当前不接受答案。 想改善这个问题吗? 更新问题,以使其成为服务器故障的主题。 10个月前关闭。 我在测试环境中在Docker中运行chromedriver + chrome。 在最新的CoreOS升级之前,一切工作正常。 这些是似乎有效的版本: VERSION=1185.5.0 VERSION_ID=1185.5.0 BUILD_ID=2016-12-07-0937 这是导致chrome转储的新版本: VERSION=1235.4.0 VERSION_ID=1235.4.0 BUILD_ID=2017-01-04-0450 查看变化,看来docker已从1.11.x升级到1.12.x,这打破了setns()容器内部的调用。setns()被Chrome浏览器用来创建名称空间。 这是示例输出: jsosic-coreos-test-20161207 ~ # docker --version Docker version 1.11.2, build bac3bae 从此盒子上的一个容器内部: [root@2939f21ecfaa /]# /opt/google/chrome/google-chrome [57:57:0107/015130:ERROR:browser_main_loop.cc(261)] Gtk: cannot open display: 这是新版本破解它的方式: jsosic-coreos-test-2017-01-04 ~ # docker --version Docker version 1.12.3, build 34a2ead [root@13ab34c36c82 /]# …

3
docker,alpine和matplotlib
我目前正在尝试使用Alpine缩小我们的docker映像之一: FROM python:2.7-alpine 但是,我在安装matplotlib.h时遇到了麻烦: EOF warning: no previously-included files matching '*.pyo' found anywhere in distribution warning: no previously-included files matching '*.pyd' found anywhere in distribution numpy/core/src/multiarray/numpyos.c:18:21: fatal error: xlocale.h: No such file or directory compilation terminated. numpy/core/src/multiarray/numpyos.c:18:21: fatal error: xlocale.h: No such file or directory compilation terminated. Traceback (most recent …
11 python  docker 

5
Docker-分别缩放Nginx和php-fpm
我一直在玩docker和docker-compose,有一个问题。 目前我的docker-compose.yml看起来像这样: app: image: myname/php-app volumes: - /var/www environment: <SYMFONY_ENVIRONMENT>: dev web: image: myname/nginx ports: - 80 links: - app volumes_from: - app 应用程序包含端口9000上的php-fpm和我的应用程序代码。Web是nginx,具有一些配置。 这可以实现我期望的功能,但是为了将nginx连接到php-fpm,我有这条线: fastcgi_pass app:9000; 我如何有效地扩展呢?例如,如果我想运行一个nginx容器,但运行三个app容器,那么我肯定要有三个php-fpm实例,所有实例都试图在端口9000上侦听。 如何在每个给定时间将每个php-fpm实例放在不同的端口上,但仍然知道它们在我的nginx配置中的位置? 我采用错误的方法吗? 谢谢!
11 nginx  php  php-fpm  docker 

2
Docker守护程序在更新后回答``找不到404页面''
我最近将docker从1.4更新为1.5(带有包lxc_docker)。 从那时起,docker守护进程发送如下错误(针对每个命令): $ docker version Client version: 1.5.0 Client API version: 1.17 Go version (client): go1.4.1 Git commit (client): a8a31ef OS/Arch (client): linux/amd64 FATA[0000] Error response from daemon: 404 page not found 但是,如果我使用客户端的先前版本,则会得到很好的答案: $ /usr/bin/docker-old version Client version: 1.4.0 Client API version: 1.16 Go version (client): go1.3.3 Git commit (client): …

2
管理多个Docker容器的IAM安全凭证
在普通EC2环境中,使用IAM角色和凭证(从实例元数据自动获取)来管理对其他AWS资源的访问非常简单。使用CloudFormation甚至更加容易,您可以在其中为实例分配特定的应用程序角色时动态创建角色。 如果我想迁移到Docker并进行某种M-to-N部署(我有M台机器,并在其上运行N个应用程序),我应该如何限制对每个应用程序AWS资源的访问?主机上的任何人都可以访问实例元数据,因此我将使每个应用程序都能够查看/修改同一部署环境中每个其他应用程序的数据。 向在这种环境中运行的应用程序容器提供安全证书的最佳实践是什么?

1
列出docker swarm模式所有节点的容器
我们在几个节点上以集群模式运行docker。 无法找到一种快速简便的方法来从管理器节点列出群集中的所有容器(最好带有状态)。可以看到覆盖网络和连接到这些网络的本地运行的容器,还可以看到服务-但不能看到容器详细信息等。 它是否已经可用或使用REST API是唯一可用的选项?(虽然不确定是否所有必需的信息都可用)

3
如何通过脚本在Docker容器中设置root密码?
我有一个在主机上运行并创建/启动/停止Docker容器的脚本。我希望该脚本更改容器中root用户的密码。 由于容器是ssh服务器,因此我尝试: sshpass -p 'OLDPASS' ssh root@<container-IP> 'echo -e "NEWPASS\nNEWPASS" | passwd root' 但这不起作用。在继续并花费更多时间调试它之前,我想知道是否有更聪明的方法来进行此操作。 我了解正确的“ docker方式”是制作一个由Dockerfile运行的脚本,该脚本从共享卷中提取密码并将其设置为root密码。这听起来很复杂,但是我知道该怎么做,并且可以很好地用于我使用的另一个Docker映像。但是我不想为此做。 我只需要一个使用Docker或ssh来非交互地更改用户密码的命令。
11 ssh  bash  docker  passwd 

1
没有来自Docker容器的IPv6连接
我在docker中启用IPv6时遇到严重问题。 环境 主机正在运行Debian Jessie。 这是一个虚拟服务器(KVM)。 eth0在像w:xy:z :: / 64这样的网络中有一个静态配置的地址,如w:x:y:z :: 1,由我的托管公司分配给我。 我的主机能够毫无问题地使用IPv6:通过ping通外界,可以通过ipv6访问在容器上运行的网站(端口80绑定到主机80)。 问题 但是,我无法从容器中访问外部世界!使用以下参数重启docker后,我的docker0网桥没有IPv6地址。没有路由,也没有网关(没有ipv6地址就没有意义)。 我的Docker设置:使用DOCKER_OPTS中的这些参数启动Docker DOCKER_OPTS="--dns 8.8.8.8 --dns 8.8.4.4 --ipv6 --fixed-cidr-v6=w:x:y:z:a::/80" 某些ipv6主机配置参数: net.ipv6.conf.all.forwarding = 1 net.ipv6.conf.default.forwarding = 1 这是我创建的网络之一: root@wopr:~# docker network inspect wopr6 [ { "Name": "wopr6", "Id": "ddc192d4af2a8edc809975e84cf3e4cb82c24d4cfe970dd8e3fc7d6ff31e20ee", "Scope": "local", "Driver": "bridge", "EnableIPv6": true, "IPAM": { "Driver": "default", …

3
docker-没有用于根的crontab
我的Dockerfile似乎正确构建(告诉我如此)。运行容器时,出现以下错误消息。我尝试CMD使用和不使用服务目录运行命令()。 crontab.sh基本上将cron计划写入文本文件(cron.jobs),然后将文本文件导入crontab。 Dockerfile: FROM node:0.10 MAINTAINER Tom VOLUME /var/log/ RUN mkdir /pulse ADD . /pulse WORKDIR /pulse RUN apt-get update && apt-get install -y cron ADD *.sh /pulse/ RUN chmod 750 /pulse/crontab.sh && chmod 750 /pulse/ RUN chmod 644 /etc/crontab CMD cron -f CMD touch /var/log/cron.log && sh /pulse/crontab.sh && …
10 cron  docker 

6
AWS ElasticBeanstalk docker-thin-pool变满并导致将文件系统重新挂载为只读吗?
我无法弄清楚AWS如何在ElasticBeanstalk上设置其Docker``瘦池''以及如何填充它。我的docker精简池正在以某种方式填满并导致我的应用程序尝试写入磁盘时崩溃。 这是来自容器内部的: >df -h > /dev/xvda1 25G 1.4G 24G 6% 实际上,EBS确实分配了25GB的磁盘。1.6 GB是du -sh /返回的内容。 在EC2的外部,它足够无害地启动了...(通过lvs) LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert docker-pool docker twi-aot--- 11.86g 37.50 14.65 但是,文件系统将很快重新安装为只读。通过dmesg: [2077620.433382] Buffer I/O error on device dm-4, logical block 2501385 [2077620.437372] EXT4-fs warning (device dm-4): ext4_end_bio:329: …

3
Debian / IPv6:默认路由在1800秒后过期,失去了连接能力
我在vServer上运行Debian 8。安装docker并启用IPv6后,我注意到了一些奇怪的地方。我不知道Docker是否与此有关,只是我在安装它后才注意到此问题。 我的默认路由配置为在ca之后失效。1800秒 超时后,我实际上消失了。这是我(显然)松开IPv6连接的时候。 root@wopr:~# ip -6 route xxxx:yyyy:zzz:xxxx::/64 dev eth0 proto kernel metric 256 fe80::/64 dev eth0 proto kernel metric 256 fe80::/64 dev br-5c1ce68ea951 proto kernel metric 256 fe80::/64 dev br-61f6bbfdbe87 proto kernel metric 256 [a lot more routed for my docker containers] default via fe80::1 dev eth0 proto …

2
通过主机名将SSH连接转发到Docker容器
我遇到了一个非常具体的情况,尽管还有其他方法可以做到这一点,但我还是对此非常着迷,并想找到一种完全像这样的方法: 背景 假设我有一台服务器运行多个服务,这些服务藏在隔离的Docker容器中。由于大多数服务都是http,因此我正在使用nginx代理向每个服务公开特定的子域。例如,节点服务器在其端口80绑定到127.0.0.1:8000主机的docker容器上运行。我会在nginx的是代理的所有请求创建一个虚拟主机myapp.mydomain.com来http://127.0.0.1:8000。这样,只能通过外部从外部访问docker容器myapp.mydomain.com。 现在,我要以一种指向gogs容器的方式启动gogsgogs.mydomain.com docker容器。因此,我使用绑定到主机上的端口来启动此gogs容器。并且Nginx网站将请求代理到,并且效果很好...8000127.0.0.1:8001gogs.mydomain.comhttp://127.0.0.1:8001 但是,gogs是一个git容器,我也想像这样访问存储库,git@gogs.mydomain.com:org/repo但不适用于当前设置。进行此工作的一种方法22是将容器的端口绑定到0.0.0.0:8022主机上的端口,然后git ssh url可能类似于git@gogs.mydomain.com:8022/repo。 (这似乎不工作;当我推到与URI这样的原点,混帐要求密码对git上gogs.mydomain.com-而不是gogs.mydomain.com:8022-但不过这可能是什么我做错了,超出范围的这个问题,我也很感谢任何诊断) 问题 我主要关心的是,我希望<gogs container>:22代理ssh端口,就像使用nginx代理http端口一样;即任何gogs.mydomain.com要传递到容器port的ssh连接22。现在,我无法将容器的ssh端口绑定到主机的ssh端口,因为主机上已经有一个sshd在运行。同样,这意味着任何要*.mydomain.com传递到容器sshd的连接。 我想要任何ssh连接到: mydomain.com host.mydomain.com 或mydomain的IP地址被接受并转发到主机上的sshd gogs.mydomain.com或被git.mydomain.com接受传递到gogs容器上的sshd *.mydomain.com(*除上述可能性之外,还有其他什么)被拒绝 如果是http,我可以通过nginx轻松实现。有没有办法做到这一点的SSH? (也想出去问:一般来说,有没有一种方法可以通过任何 tcp服务来完成?) 也欢迎您对我在这里尝试的方式有任何见解。当我要做的事情完全愚蠢时,我不介意被告知。 我已经想到的是: 也许我可以与容器作为ro卷共享主机上的sshd套接字?这意味着容器内的sshd可以拾取与的所有连接*.mydomain.com。有没有办法使容器内的sshd 拒绝除gogs.mydomain.comor 以外的所有连接git.mydomain.com?但是,主机上的sshd *.mydomain.com无论如何都将占用所有的连接,包括gogs.mydomain.com; 所以会有冲突。我不知道,我实际上没有尝试过。我应该尝试吗?

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.