Questions tagged «docker»

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

4
将Docker配置为不使用172.17.0.0范围
由于强制门户和默认Docker IP范围的问题,我试图使Docker使用198.18.0.0范围,而不是172.17.0.0,这与我住的火车上使用的强制门户冲突。 在docs之后,我创建了/etc/docker/daemon.json,并在其中添加了以下内容: { "bip":"198.18.0.0/16" } 这适用于docker0,但似乎并没有影响任何其他网络,使用docker compose创建的第一个网络是172.17.0.0,它重新创建了冲突。 我该怎么做才能更改所有 docker网络的默认子网(最好不必在每个撰写文件中声明我的自定义IP范围)?

6
检查容器/服务是否与docker-compose一起运行
我正在使用docker-compose。 有些命令(例如up -d service_name或)start service_name会立即返回,如果您不希望容器运行取决于外壳的状态(例如与normal一样),这将非常有用up service_name。一个用例是从某种持续集成/交付服务器运行它。 但是,这种运行/启动服务的方式之后不会提供有关服务实际状态的任何反馈。 在为泊坞窗撰写CLI参考up命令确实提到相关的选项,但是,至于版本1.7.1,它是相互排斥的-d: --abort-on-container-exit Stops all containers if any container was stopped. *Incompatible with -d.* 我可以以某种方式手动检查容器是否确实在工作并且由于某些错误而没有停止吗?

4
使用iptables限制与docker容器的外部连接的步骤?
我的目标是将对Docker容器的访问限制为仅几个公共IP地址。是否有一个简单,可重复的过程来实现我的目标?在使用Docker的默认选项时仅了解iptables的基础知识,我发现这非常困难。 我想运行一个容器,使其对公共Internet可见,但只允许来自选定主机的连接。我希望将默认的INPUT策略设置为REJECT,然后仅允许来自主机的连接。但是Docker的NAT规则和链妨碍了我的INPUT规则。 在以下假设的基础上,有人可以提供一个示例来说明如何实现我的目标吗? 在eth0上托管公共IP 80.80.80.80 eth1上的主机专用IP 192.168.1.10 docker run -d -p 3306:3306 mysql 阻止从主机4.4.4.4和8.8.8.8到主机/容器3306的所有连接 我很高兴将容器仅绑定到本地ip地址,但是需要有关如何正确设置iptables转发规则的说明,这些规则可以在docker进程和主机重启后继续存在。 谢谢!
20 iptables  docker 

2
Docker容器中正在运行哪个操作系统?
大多数时候,我可以使用这两种方式之一来判断哪个操作系统正在我的Docker容器中运行(alpine,centOS等) 但是这次,我不能告诉: bash-4.2$ uname -a Linux 6fe5c6d1451c 2.6.32-504.23.4.el6.x86_64 #1 SMP Tue Jun 9 20:57:37 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux bash-4.2$ more /etc/issue \S Kernel \r on an \m 有什么方法可以获取正在运行的操作系统的文本版本?

5
chmod在Docker中无法正常工作
我正在为我的Symfony应用程序构建Docker映像,我需要授予对Apache服务器的权限以写入缓存和日志文件夹 #Dockerfile FROM php:7-apache RUN apt-get update \ && apt-get install -y libicu-dev freetds-common freetds-bin unixodbc \ && docker-php-ext-install intl mbstring \ && a2enmod rewrite COPY app/php.ini /usr/local/etc/php/ COPY app/apache2.conf /etc/apache2/apache2.conf COPY ./ /var/www/html RUN find /var/www/html/ -type d -exec chmod 755 {} \; RUN find /var/www/html/ -type f -exec …

2
iptables规则集,以便docker容器可以访问主机IP上的服务
我无法从Docker容器访问主机专用接口(ip)。我相当确定它与我的Iptables规则(或路由)有关。当我将--net=host标志添加到时docker run,一切都会按预期进行。同样,当我指定INPUT策略遵循Liberal时-P INPUT ACCEPT,事情也会按我期望的那样工作。但是,这些都是我要避免的不理想和不安全的选择。 由于它不特定于我的服务(DNS),因此已将其排除在问题之外,因为与docker结合进行搜索会在另一个(受欢迎的)问题区域中产生结果,从而给搜索结果增加了噪音。 另外,链接Docker容器也不是一个可行的选择,因为某些容器需要使用--net = host选项运行,从而阻止了链接,我想在可能的情况下创建一致的情况。 我有以下Iptables规则。我假设结合了CoreOS,Digital Ocean和Docker。 -P INPUT DROP -P FORWARD ACCEPT -P OUTPUT ACCEPT -N DOCKER -A INPUT -i lo -j ACCEPT -A INPUT -i eth1 -j ACCEPT -A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT -A INPUT -p tcp -m tcp --dport 22 -j …
18 iptables  docker 

2
如何部署Docker容器和关联的数据容器,包括内容?
首先,我承认我是Docker的新手,我可能是从错误的假设中解决了这个问题……让我知道是否是这种情况。我已经看到了很多关于Docker如何对部署有用的讨论,但是没有有关如何实际完成的示例。 这是我认为可行的方式: 创建数据容器以在计算机A上保存一些持久性数据 创建使用数据容器中的卷的应用程序容器 做一些工作,可能会更改数据容器中的数据 停止应用程序容器 提交并标记数据容器 将数据容器推送到(专用)存储库 在计算机B上拉并运行第6步中的图像 从您在机器B上停下来的地方接起 这里的关键步骤是步骤5,我认为这将保存当前状态(包括文件系统的内容)。然后,您可以将该状态推送到存储库,然后从其他位置将其拉出,从而为您提供一个与原始容器基本相同的新容器。 但这似乎不起作用。我发现步骤5并没有执行我认为的操作,或者步骤7(拉动并运行映像)将容器“重置”为初始状态。 我整理了一组三个Docker映像和容器来进行测试:一个数据容器,一个写程序,每30秒将一个随机字符串写到数据容器中的文件中,以及一个读取器,它简单地echo将数据中的值存储起来容器文件并退出。 资料容器 创建于 docker run \ --name datatest_data \ -v /datafolder \ myrepository:5000/datatest-data:latest Dockerfile: FROM ubuntu:trusty # make the data folder # RUN mkdir /datafolder # write something to the data file # RUN echo "no data here!" …
18 docker 

4
使用主机的Postfix从Docker容器发送邮件
我正在运行Ubuntu 14.04(Linux)服务器。我已经在服务器上很好地安装和配置了Postfix和OpenDKIM。我可以发送电子邮件给自己用,如命令echo hi | sendmail root,和后缀/ opendkim将添加页眉,如Message-Id,Date和DKIM-Signature,将电子邮件转发到我的个人电子邮件地址,一切都很正常。 现在,我想创建一个在Docker容器中运行并且可以轻松发送电子邮件的应用程序。特别是,我不想担心添加诸如之类的标头Message-Id,也不想在容器本身内部进行过多的配置或软件安装。 做这个的最好方式是什么? 有什么方法可以让容器sendmail在主机上运行可执行文件? 我尝试使用端口25上的SMTP协议从容器建立到Postfix的连接,但是Postfix似乎以不同的方式对待接收到的消息。我认为它没有添加任何标题,因此该邮件被gmail完全拒绝为垃圾邮件(它甚至还不足以放入我的Spam文件夹中)。 这里的邮件日志内容 Sep 28 23:35:52 dantooine postfix/smtpd[4306]: connect from unknown[172.17.0.95] Sep 28 23:35:52 dantooine postfix/smtpd[4306]: DD457889B: client=unknown[172.17.0.95] Sep 28 23:35:52 dantooine postfix/cleanup[4309]: DD457889B: message-id=<> Sep 28 23:35:52 dantooine spamd[3175]: spamd: connection from localhost [::1]:59471 to port 783, fd 6 Sep …

3
通过Docker卷共享Unix套接字-权限被拒绝
我尝试php5-fpm通过卷与nginxWeb服务器共享套接字。Fpm和nginx在不同的容器中运行,我想通过共享卷使它们工作,在该共享卷中放置fpm的套接字文件。 2014/04/13 10:53:35 [crit] 33#0: *1 connect() to unix:/container/fpm/run/php5-fpm.sock failed (13: Permission denied) while connecting to upstream, client: 192.168.8.2, server: docker.dev, request: "GET /test.php HTTP/1.1", upstream: "fastcgi://unix:/container/fpm/run/php5-fpm.sock:", host: "docker.dev" 我已经尝试将权限设置为777并将组更改php5-fpm.socket为www-data。 FPM容器的Dockerfile FROM ubuntu:13.10 RUN apt-get update RUN apt-get upgrade -y RUN apt-get install -y php5-cli php5-common RUN apt-get install -y …
18 nginx  socket  docker 

3
在Docker容器中运行时,如何获取php-fpm登录到stdout / stderr
我在docker容器中安装了php-fpm,并在其中Dockerfile编辑fpm config文件(/etc/php5/fpm/pool.d/www.conf)来设置访问日志/var/log/fpm-access.log和错误日志/var/log/fpm-php.www.log: # Do some php-fpm config # Redirect worker stdout and stderr into main error log # Activate the fpm access log # Enable display errors # Enable the error log RUN sed -i '/^;catch_workers_output/ccatch_workers_output = yes' /etc/php5/fpm/pool.d/www.conf && \ sed -i '/^;access.log/caccess.log = /var/log/fpm-access.log' /etc/php5/fpm/pool.d/www.conf && \ sed …

1
FreeBSD Jails或Docker实例
FreeBSD上的jail和Linux上的Docker之间的主要区别是什么?一个比另一个更安全或更有效吗?Jails比Docker实例更旧,因此可以认为代码本身更安全。但是Jails从不“追赶”,所以也许它们不如Docker实例好?还是仅仅是因为Linux比FreeBSD受欢迎得多?
18 docker  freebsd  jail 

3
“输入设备不是TTY”在“ docker run”输出中到底是什么意思?
这是一个有效的命令: $ echo 'hi there' | docker run -i ubuntu cat hi there 这是一条响应并显示错误消息的命令: $ echo 'hi there' | docker run -it ubuntu cat the input device is not a TTY 我想弄清楚这里到底发生了什么。不只是“删除-t,它将得到解决”。 我知道docker run的-t选项代表‘分配伪TTY’,和我读的是什么TTY代表历史观点,但它并没有帮助我了解什么样的合同在这里侵犯。
18 linux  docker  tty 

9
Amazon ECS-如何重新启动服务的所有任务?
我们的任务是从外部数据源加载一些配置文件。上载设置后,我们希望能够重新启动服务中的所有任务,以便将设置传播到所有实例。 重新启动所有服务的最佳方法是什么? 我们有一个“解决方法”,其中涉及将“任务数”设置为0,然后进行备份,但这绝对不是应该完成的方式,并且会造成停机。

4
使用准备好的数据库方案创建docker mysql容器
我想在mysql映像之上创建一个docker映像,该映像已经包含我的应用程序所需的方案。 我尝试向Dockerfile添加行,这些行会将我的方案导入为sql文件。我是这样做的(我的Dockerfile): FROM mysql ENV MYSQL_ROOT_PASSWORD="bagabu" ENV MYSQL_DATABASE="imhere" ADD imhere.sql /tmp/imhere.sql RUN "mysql -u root --password="bagabu" imhere < /tmp/imhere.sql" 据我了解,这是行不通的,因为mysql docker映像不包含mysql客户端(最佳做法是“不要仅仅因为它们会很舒服就添加东西”)(我对此是否错?) 这样做的好方法可能是什么?我已经想到了一些事情,但是它们似乎都是混乱的解决方法。 安装mysql客户端,做我必须做的事,然后删除/清除它。 将mysql客户端二进制文件复制到该映像,执行我必须做的,然后将其删除。 在另一台sql服务器中创建架构,然后直接直接复制db文件(这看起来很混乱,在我看来像是受污染的问题池) 有什么建议么?希望以一种易于稍后维护并且也可能符合最佳实践的方式吗?
17 mysql  docker 

6
Docker中的Apache:如何“ access.log”?
我刚刚开始使用Docker和Richt,现在我想弄清楚如何设置我的第一个Dockerized Apache 2 / PHP环境。到目前为止,我一直在使用完整的Linux VM,在其中我使用了将日志文件写入/ var / log / apache2的日志文件,然后每天使用“ logrotate”跳至一个新文件。 日志文件主要用于即时错误检测(即登录服务器,并较少使用它来打开当前的access.log和error.log文件)和fail2ban。 如果我是正确的,那在Docker环境中是不可行的-主要是因为您通常无法登录到容器来查看日志。如果删除容器,日志也会丢失。 因此:在这种情况下,使用/模拟/替换access.log / error.log的最常用方法是什么?生产和开发环境的常见解决方案是什么? 到目前为止,我的想法包括使用NFS共享(速度慢,如果不小心可能会导致文件名冲突)和logstash(不确定是否值得这样做,并且对于较小的站点甚至开发环境是否可行?),但是我敢肯定,聪明的人有更好的解决方案? 不知道它是否有所作为,但是目前我将Docker映像基于php:5.6-apache。

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.