Articles of Docker

是否有可能使用Docker或Vagrant来configuration物理机器

目前在我的工作中,我们使用buildroot来configurationDebian linux的物理机器。 rootfs.cpio.gz编译一个rootfs.cpio.gz文件,使用PXE提取待configuration的机器,运行一个脚本给我们一些安装时间选项,然后从configuration服务器rsyncs根和启动分区。 这个过程大约需要20到30分钟。 我们偶尔会更新一台机器并运行一个脚本,将其内容rsyncs下载到configuration服务器,供下次configuration机器时使用。 我不喜欢这个过程的是,它很难控制版本,看起来有点过时,并且不被主动维护。 我想知道是否有人已经 – 或者看到一种方法 – 使用Vagrant或Docker来执行类似的function(不一定使用PXE)。 或者,就像使用扳手驱动螺丝?

当Docker卷正在使用时,CoreOS如何迁移Docker容器?

我刚学习如何使用CoreOS,并已经遇到了第一个真正困扰我的问题:当使用fleetctl来启动和pipe理单元时,我了解到一个单元被自动移动到另一个机器上,当机器select运行单元重新启动或由于其他原因而无法访问群集。 想象一下当你有一个运行一个Docker容器的单元时,它可以访问特定目录(通过一个Docker卷),而这个容器只存在于特定的机器上。 如果运行这个容器的单元移动到另一台机器会发生什么? 我想单位将失败,因为应该被安装为Docker卷的目录不存在于新机器上。 这是否真的发生? 我怎么能绕过这个问题呢? 一般来说,在自动迁移容器的情况下,如何坚持docker集装箱使用的工作数据?

在sockets/networking以外的docker中的容器之间的通信

在通过套接字/networking以外的docker集装箱之间进行通信有什么方法吗? 也许可以是IPC或其他方式。 这可行吗? 我已经阅读了docker文档,其中说我们可以使用–link选项来链接docker容器,但是并没有说明如何将data / msg从一个容器传输到另一个容器。 我已经创build了一个名为checkram的容器。 现在我想链接一个新的容器与这个容器,我运行docker run -i -t –privileged –link=checkram:linkcheck –name linkcont topimg命令。 然后我检查了包含tcp://172.17.0.14:22 linkcont容器中的envvariablesLINKCHECK_PORT 。 我不知道如何处理这个IP和端口,以及如何与来自linkcont容器的checkram容器进行通信。 任何人都可以帮我解决这个问题吗? 提前致谢。

Docker上的Apache无法写入卷文件系统

我用mod_php构build了一个运行Apache 的图像 ,用于Magento扩展开发。 Magento需要写入webroot:它将文件保存在/srv/magento/var/用于caching,错误报告和其他一些function。 这个图片上的webroot是一个docker卷,Apache不能以root身份运行,所以它不能写入文件系统,所以Magento失败了。 我不能实际chown或chmod在容器内的目录可靠。 我不想使用Docker Volume Container,因为开发者应该可以直接访问Magento webroot中的文件。 我不会特别介意在容器中以root身份运行Apache,但apachectl确实似乎介意。 给Docker容器中的Apache用户写入对卷的访问权的合适方式是什么? 考虑这个例子: $ cd $(mktemp -dt$(date +%s)) $ docker run -d -p 80:80 -v "$PWD:/srv/magento" kojiromike/magento_apache $ cat > index.php <<PHP <?php file_put_contents('foo', 'bar'); PHP $ wget -SO/dev/null http://$(boot2docker ip 2>/dev/null)/index.php –2014-12-15 13:33:59– http://192.168.59.103/index.php Connecting to 192.168.59.103:80… connected. HTTP request sent, awaiting response… HTTP/1.1 […]

Docker:如何在已经创build的图像上执行命令

我创build了一个docker镜像,但在Dockerfile的最后一行忘了ENV命令。 一般来说,我可以在已经build好的镜像上运行一个Dockerfile吗?

SSH隧道到Docker容器

目标:本地连接到远程repl(例如,通过lein repl :connect )。 本地,这很简单: 运行服务器(在端口8081上启动一个embedded式nrepl服务器) 运行lein repl :connect 8081 &瞧! repl连接 我还通过使用SSH隧道,在repl在未打开的端口上运行时连接到远程服务器上的repl: 在某些.host,运行服务器(它开始在端口8081embeddednrepl服务器) SSH通道ssh -N -T -L 8081:localhost:8081 [email protected] 本地, lein repl :connect 8081 &瞧! repl连接 然而,我目前的设置是“服务器”运行在一个Docker容器,它映射端口8081.所以,为了连接到nrepl服务器,它必须去本地 – > some.host – >docker容器 – > nrepl 。 我可以看到我的docker容器映射了端口8081: $ sudo docker port container-id 8081 0.0.0.0:8081 而且,在托pipeDocker容器的服务器上,我可以看到端口8081正在侦听: $ netstat -anl | sed -n '2p;/8081/p' Proto Recv-Q […]

如何检查CoreOS中的SMART HDD状态

如何检查CoreOS中硬盘( SMART )的状态? smartd和smartctl不是CoreOS的一部分。 所以下面的CoreOS哲学smartd将在容器内部运行,因为systemd单元和smartctl将从工具箱中使用 。 我无法从工具箱访问硬盘驱动器。

如何手动升级docker机上的docker版本?

docker-machine提供了一个upgrade命令,但它只升级到最新的稳定版本 我想在我的docker机器上安装1.10RC2,我不确定要做到这一点的步骤 UPDATE 在docker发布页面上显示这个命令: curl -fsSL https://test.docker.com/ | sh 我想我会尝试一下。 我通过docker docker-machine ssh swarm-master进入并运行它。 它看起来很有希望…运行它似乎是一个安装/升级脚本,它做了一堆东西。 之后: root@swarm-master:~# docker version Client: Version: 1.10.0-rc2 API version: 1.22 Go version: go1.5.3 Git commit: c1cdc6e Built: Wed Jan 27 22:14:06 2016 OS/Arch: linux/amd64 Cannot connect to the Docker daemon. Is the docker daemon running on this host? 似乎已经升级,但守护进程没有运行。 https://docs.docker.com/engine/articles/systemd/显示了几种方法。 […]

Docker组合卷无效的字符

无法使用docker构build容器 Docker version 1.9.1, build a34a1d5 Dockerfile FROM ubuntu # File Author / Maintainer MAINTAINER Parzee [email protected] # Install Components. # Update the repository ENV LANG en_US.UTF-8 ENV DEBIAN_FRONTEND noninteractive RUN apt-get update RUN locale-gen en_US en_US.UTF-8 # Install necessary tools RUN apt-get install -y nano vim wget dialog net-tools RUN apt-get install lighttpd -y […]

有没有办法让这两个docker bash命令同步执行?

我自动为我的应用程序的开发环境设置,当我从命令行手动运行这两个命令,我必须等待约10秒后运行第一个运行第二个。 # command one (run the mysql docker container) docker run -p 3306:3306 –name mysql-container-name -e MYSQL_ROOT_PASSWORD=secret -e MYSQL_DATABASE=mydbname -d mysql:latest # command two (import data into created db) docker exec -i mysql-container-name mysql mydbname < ./dev-db.sql –password=secret 我试图将这两个命令自动化成一个bash别名,所以我可以做db-setup但是即使当我用&&分隔命令时,第二个命令执行得太快(在mysql容器完全安装之前)显然是因为我会得到这个错误: ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2) 任何想法如何才能得到第二个命令只有当第一个完全完成它所需的一切?