Articles of Docker

与jmx的docker工人tomcat

我正在尝试创build一个tomcat和JMX激活docker的形象。 所以我克隆这个tomcat泊坞窗图像https://github.com/tutumcloud/tutum-docker-tomcat 。 我公开了端口1099并编辑了如下运行脚本: #!/bin/bash if [ ! -f /.tomcat_admin_created ]; then /create_tomcat_admin_user.sh fi export CATALINA_OPTS="-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=1099 -Dcom.sun.management.jmxremote.local.only=false -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false" exec ${CATALINA_HOME}/bin/catalina.sh run 目前我并不真正考虑安全性,我只是想要有一个JMX。 接下来构build图像docker build -t <name>并运行它docker run -d -p 8080:8080 -p 1099:1099 <name> 容器正确启动并正向端口: 0.0.0.0:1099->1099/tcp, 0.0.0.0:8080->8080/tcp : 0.0.0.0:1099->1099/tcp, 0.0.0.0:8080->8080/tcp / 0.0.0.0:1099->1099/tcp, 0.0.0.0:8080->8080/tcp : 0.0.0.0:1099->1099/tcp, 0.0.0.0:8080->8080/tcp 并且端口是开放的telnet 192.168.59.103 1099 。 我使用192.168.59.103因为我在macos上使用boot2docker, 192.168.59.103是boot2docker ip 。 […]

船厂部署错误。 它不要映射docker套接字

我已经安装了Centos 7和docker(服务器版本:0.11.1-dev)。 我正在关注造船厂的快速入门。 我把docker映像造船厂/ deploy: docker牵引造船厂/部署 当我运行命令: docker run -i -t -v /var/run/docker.sock:/docker.sock shipyard / deploy setup 我得到下一个错误: 您必须将您的Docker套接字映射到/docker.sock(即-v /var/run/docker.sock:/docker.sock) 我检查文件docker.sock: ls -la /var/run/docker.sock SRW-RW —-。 1 root docker 0 sep 11 07:24 /var/run/docker.sock Selinux检查 ls -Z /var/run/docker.sock SRW-RW —-。 root docker system_u:object_r:docker_var_run_t:s0 /var/run/docker.sock

获取密码到ssh-keygen

我有一个新的私钥,作为bash脚本的一部分,它将作为Docker容器。 将私钥复制到/root/.ssh/id_rsa我想用以下方法重新生成公共密钥: ssh-keygen -yf /root/.ssh/id_rsa > /root/.ssh/id_rsa.pub 不幸的是,这导致了以下错误: 加载失败 我认为这是因为私钥有一个没有提供给ssh-keygen命令的密码,但是我不知道这是怎么回事。 我读过设置SSH_AUTH_SOCK环境variables就足够了,但它不适合我…仍然要求密码。 然后我碰到了使用-x参数的keygen命令的一个小变化: ssh-keygen -yf /root/.ssh/id_rsa > /root/.ssh/id_rsa.pub -x 令我非常吃惊的是它产生了结果。 正确的结果? 不确定。 实际上,结果与非“-x”变体(当提供密码短语时)明显不同。 我看了一下man文件,并没有提到-x 。 我很困惑。 任何帮助,将不胜感激。 寻找: 更好地理解-x作用以及如何有效地使用它 一种将我的私钥的密码传递给ssh-keygen (也是如此, git也会使用它)

docker集装箱在CIpipe道过程中

我正在尝试在我的简单CIpipe道中集成docker容器来部署一个webapp。 我有3个容器与Nginx,Tomcat和MySQL。 我了解如何使用Dockerfiles创build这些容器并将它们链接在一起的基础知识。 我的工件上传到Nexus服务器,我看到在Docker容器上部署工件的不同方式。 一个是重buildtomcat容器拉动新生成的工件,并在Dockerfile中的ADD中将其复制到容器中。 另一种方法是启动未更改的Tomcat容器,在包含从nexus获取的新工件的主机上安装一个卷。 我不明白从“docker的angular度来看”是什么样的正确方法。 我可以看到一个容器的可重用性与一些固定容器的configuration之间的权衡,我可以在没有额外的提供webapp文件夹进行部署的情况下运行和运行。 这是我的一般困惑。 同样的nginx容器。 如果configuration文件中的特定更改导致容器重build,或者我应该在启动容器时在主机上挂载一些文件? 非常感谢

MariaDB 10.0 / Docker / Vagrant – subprocess/ usr / bin / dpkg返回一个错误代码

使用Vagrant,Docker和其他虚拟服务时,MariaDB 10.0不能正确安装。 $ DEBIAN_FRONTEND=noninteractive apt-get install -y mariadb-galera-server Setting up mariadb-galera-server-10.0 (10.0.14+maria-1~trusty) … invoke-rc.d: policy-rc.d denied execution of stop. dpkg: error processing package mariadb-galera-server-10.0 (–configure): subprocess installed post-installation script returned error exit status 1 dpkg: dependency problems prevent configuration of mariadb-galera-server: mariadb-galera-server depends on mariadb-galera-server-10.0 (= 10.0.14+maria-1~trusty); however: Package mariadb-galera-server-10.0 is not configured yet. dpkg: […]

Docker:Django和Postgresql:两个独立的容器还是一个更好?

我打算在docker中部署我的django应用程序。 这个应用程序使用PostgreSQL作为后端,所以我遇到了一个问题,什么是更好的部署scheme:两个docker容器 – 一个用于应用程序和一个数据库,或一个容器与一切? 我认为单独的容器更具可扩展性,因为我可以独立更改应用工作者数量,但是configurationDNS命名parsing并不如一个容器安全性更高?

docker工人无法获得ENTRYPOINT和CMD的工作

我必须在一个容器中启动两项服务 我尝试了各种各样的变化,并认为这是它应该看起来的样子。 但显然我错过了一些东西。 容器马上存在! CMD ["start"] ENTRYPOINT ["/sbin/dockCtrl"] 我也读了,我不应该使用systemd /服务,直接尝试命令没有成功。 (请参阅未注释的命令) build立和运行命令: docker build -t robotamer/citadel citadel docker run -d –name="citadel" –hostname="mail" 24fcf023c95e 我可以使用dockCtrl bash来input容器,而不是-d并使用dockCtrl bash脚本。 dockerfile: FROM debian:testing MAINTAINER RoboTamer <[email protected]> ENV DEBIAN_FRONTEND noninteractive RUN apt-get update && \ apt-get install -y citadel-suite nano rsync && \ apt-get clean ENV DEBIAN_FRONTEND interactive EXPOSE 25/tcp […]

同一端口打开 – 一个在星号(*)地址和一个在本地主机上

在Mac上运行两个docker实例我已经到达这个奇特的情况: ~$ lsof -ni :9905 COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME java 40320 ******* 394u IPv6 0xf5e143eb9100c205 0t0 TCP *:9905 (LISTEN) java 40325 ******* 302u IPv6 0xf5e143eb79be9005 0t0 TCP 127.0.0.1:9905 (LISTEN) 我试图在Python中重新创build这种情况,但失败了(因为我觉得它应该): >>> s = socket.socket() >>> s.bind(("",12345)) >>> s.listen(1) >>> z = socket.socket() >>> z.bind(("localhost",12345)) Traceback (most recent call last): File […]

我如何为不同的用户设置环境variables

我试图让2个docker集装箱启动,并与轨道应用程序链接在一起。 这个应用程序依赖于这些环境variables: POSTGRES_PORT_5432_TCP_ADDR POSTGRES_PORT_5432_TCP_PORT 当我以root身份执行env时,我得到: POSTGRES_PORT_5432_TCP_PORT=5432 POSTGRES_PORT_5432_TCP_ADDR=172.17.0.2 当我在根下运行它,我没有得到任何问题,它的工作原理。 但是应用程序以应用程序用户身份运行 当我做应用程序env时: root@f80f94948393:/home/app# sudo -u app env 我没有看到这些变数。 我search了一下,并已经改变了这些文件: 在/ etc /环境 POSTGRES_PORT_5432_TCP_ADDR="172.17.0.2" POSTGRES_PORT_5432_TCP_PORT="5432" /home/app/.profile POSTGRES_PORT_5432_TCP_PORT="5432";export POSTGRES_PORT_5432_TCP_PORT POSTGRES_PORT_5432_TCP_ADDR="172.17.0.2";export POSTGRES_PORT_5432_TCP_ADDR /home/app/.bashrc POSTGRES_PORT_5432_TCP_PORT="5432";export POSTGRES_PORT_5432_TCP_PORT POSTGRES_PORT_5432_TCP_ADDR="172.17.0.2";export POSTGRES_PORT_5432_TCP_ADDR 但似乎没有任何帮助。 应用程序用户不显示variables。 我在这里错过了什么?

build立Arch Linux的Docker映像挂起 – 运行pacman -Syyu – 需要–noconfirm

我正在尝试使用Dockerfile构build自定义Docker镜像。 我正在使用的基本映像是这样的: l3iggs / ArchLinux的 我的Dockerfile是这样的: FROM l3iggs/archlinux:latest COPY source /srv/visitor WORKDIR /srv/visitor RUN pacman -Syyu –needed –noconfirm && pacman -S –needed –noconfirm cronie nodejs phantomjs && printf "1.2.3.4 www.hahaha.org \n" >> /etc/hosts && printf "*/2 * * * * node /srv/visitor/visitor.js \n" >> cronJobs && printf "*/5 * * * * killall -older-than 5m […]