Tag: shell

如何从Windows Shell连接到docker VM(MobyLinux)?

是否有远程login到主机虚拟机的shell,类似于我们如何轻松地进入运行容器bash? docker执行官 – 这个bash 我不小心打破了一个容器的关键文件,所以无法启动。 不幸的是,那个容器里面存储着数据。 结果是,每当我试图运行它,它无法启动。 我看到的唯一解决scheme是关于导航到主机docker守护程序的文件。 但是,我在Windows上运行docker虚拟机,并且无法访问VM(MobyLinuxVM)中的文件。 我使用Docker for Windows版本1.12.3-beta30.1(8711)

docker-compose的环境variables在Jenkins里面

我有以下设置: jenkins环境运行docker-compose,但我需要将环境variables传递给yml文件: 示例docker-compose.yml version: '2' services: logon_server: build: . image: my_server:0.0.1 ports: – "9200:9200" command: ${DOCKER_CMD_EXEC} networks: – my_ntwrk networks: my_ntwrk: 当我从我的Mac上的shell提示符下运行以下脚本时,我可以传递不同的命令来执行,一切正常。 exec-tests.sh #!/bin/bash chmod 755 docker/exec-*.sh # Setup env variables export DOCKER_CMD_EXEC=/ci_e2e.sh # Optional: record current versions docker -v && docker-compose -v echo `whoami` echo `sudo -E -u admin printenv` # Build, deploy and […]

在Dockerfile中将数据写入文件

我有一个shell脚本script.sh,它将一些行写入一个文件: #!/usr/bin/env bash printf "blah blah blah blah\n" | sudo tee file.txt 现在在我的Dockerfile中,我添加这个脚本并运行它,然后尝试添加生成的file.txt : ADD script.sh . RUN chmod 755 script.sh && ./script.sh ADD file.txt . 当我这样做,我只是得到一个错误引用ADD file.txt . 命令: lstat file.txt: no such file or directory 为什么docker不能find我的shell脚本生成的文件? 我能在哪里find它?

docker工人运行没有主机卷的本地脚本

目标是在数据库容器运行后,使用curl从下载中将数据添加到多容器Web应用程序的数据库服务器容器中。 我可以通过docker-compose.yml或独立于Web应用程序的docker运行来实现,只要我使用主机卷即可。 如何在不使用主机卷或Web应用程序特定的Docker文件的情况下执行此操作? Docker撰写与主机卷的例子: dbinit: build: ./webtools_config/initdb command: bash -c "/tmp/webtools_config/dbinit.sh" volumes: – ./webtools_config:/tmp/webtools_config links: – db1 – db2 docker运行的例子,我想将脚本文件本地传递给docker 客户端 ,如./dbinit.sh: docker run -a stdin -a stdout -i -t \ –link dir_db1_1:db1 \ –link dir_db2_1:db2 \ initdb /bin/sh -c "./dbinit.sh"

当使用docker / fig运行Django dev服务器时,为什么一些日志输出被隐藏了?

我正在写一个Dockerfile,它需要运行多个命令作为CMD指令的一部分,我认为正确的方法是运行一个shell脚本,通过exec执行主守护进程。 不幸的是,作为这个过程的一部分,我的一些输出(stdout?stderr?我不知道,我也不知道如何发现)会丢失。 这是shell脚本: #!/bin/sh python manage.py migrate exec python manage.py runserver 0.0.0.0:8000 这个想法是, migrate命令只运行一次,其输出显示,然后runserver命令应该接pipe,容器运行,直到该进程退出。 实际的问题是migrate的输出显示正确,但runserver的直接输出不显示。 奇怪的是,以后的runserver请求logging显示得很好。 为了澄清,这是我期望的输出: […] No migrations to apply. […] Starting development server at http://0.0.0.0:8000/ Quit the server with CONTROL-C. [21/Jan/2015 16:27:06] "GET / HTTP/1.1" 200 15829 这是我得到的东西: […] No migrations to apply. […] [21/Jan/2015 16:27:06] "GET / HTTP/1.1" 200 15829 我甚至不知道这是谁的错。 […]

克隆/快照的Docker容器包括他们的数据的脚本?

我想克隆包含所有数据的dockerized应用程序,在这个例子中使用三个容器:1)一个web应用程序容器,如CMS,2)数据库容器和3)数据卷容器(使用docker卷) 。 使用docker-compose,我可以轻松地创build这些容器的相同实例,只需要初始数据。 但是,如果我想用克隆KVM容器的相似方式克隆同一台服务器上的一组正在运行的容器(包括其所有累积的数据),那又如何呢? 使用KVM,我会暂停或closures虚拟机,克隆一些类似virt-clone的东西,然后启动克隆的guest虚拟机,它具有与原始数据相同的数据。 一个用例是在进行重大更改之前或者在安装新版本的插件之前创build正在运行的开发Web服务器的克隆/快照。 对于Docker来说,这看起来并不那么简单,因为数据不会自动与容器一起复制。 理想情况下,我想做一些像docker-compose clone这样简单的事情,并最终得到与第一组相同的第二组容器,包括所有的数据。 Docker和Docker-compose都不提供克隆命令(从版本1.8开始),因此我需要考虑各种方法,如备份和恢复数据/数据库或使用Flocker等第三方工具。 与此相关的是如何做一个类似于dockerized应用程序的KVM快照的问题,能够轻松地返回到以前的状态。 优选地,克隆,快照和恢复应该是可能的,并具有最小的停机时间。 什么是首选的Docker完成这些事情的方式? 编辑:基于第一个答案,我会让我的问题更具体一点,以便有希望到达编程步骤,以便能够使用bash或python脚本来执行诸如docker-compose-clone和docker-compose-snapshot操作。 克隆docker卷的内容似乎是关键,因为每次我在相同的yaml文件上运行docker-compose时,容器本身都基本被克隆。 通常我的完整克隆脚本将需要 复制包含docker-compose文件的目录 暂时停止集装箱 创build(但不一定运行)第二组容器 确定要复制的数据卷 备份这些数据卷 将数据卷还原到克隆的数据容器中 启动第二组容器 这是否是正确的方式去做,我应该如何执行这个? 我特别不确定如何在脚本中执行步骤4( 确定要复制的数据卷 ),因为命令docker volume ls只能在Docker 1.9中使用。 我怎样才能使用这种方法做类似于KVM快照? (可能使用ZFS中的COW文件系统function,这是我的Docker安装已经使用的function)。

如何检查docker守护进程是否正在运行?

我正在尝试创build一个bash实用程序脚本来检查docker守护程序是否在我的服务器上运行。 有没有更好的方法来检查docker守护进程是否在我的服务器上运行,而不是运行这样的代码? ps -ef | grep docker root 1250 1 0 13:28 ? 00:00:04 /usr/bin/dockerd –selinux-enabled root 1598 1250 0 13:28 ? 00:00:00 docker-containerd -l unix:///var/run/docker/libcontainerd/docker-containerd.sock –shim docker-containerd-shim –metrics-interval=0 –start-timeout 2m –state-dir /var/run/docker/libcontainerd/containerd –runtime docker-runc root 10997 10916 0 19:47 pts/0 00:00:00 grep –color=auto docker 我想创build一个bash shell脚本来检查我的docker守护进程是否正在运行。 如果它正在运行,则不要执行任何操作,但是如果没有,则会启动docker守护进程。 我的伪代码是这样的。 我正在考虑parsing我的ps -ef的输出,但我只想知道是否有更有效的方法来做我的伪代码。 如果(docker不在运行) run docker 结束 […]

在docker中运行solr实例

我正在尝试编写一个shell脚本来在docker容器中运行solr。 我写了下面的脚本,但它不工作。 但是,当我在terminal中一步一步地给出相同的命令时,它工作正常。 #!/bin/bash #pull solr image docker pull makuk66/docker-solr #run solr on a single server SOLR_CONTAINER=$(docker run -d -p 8983:8983 -t makuk66/docker-solr) #create solr core docker exec -it –user=solr $SOLR_CONTAINER bin/solr create_core -c gettingstarted #load data using bin/post from example directory in solr installation directory docker exec -it –user=solr $SOLR_CONTAINER bin/post -c gettingstarted example/films/films.json

docker执行官Heredoc

我基本上试图通过Flask-migrate的Flask应用上下文来执行heredoc 下面是我试图在我的bash脚本中运行的命令 $ docker exec -it mycontainer ./manage shell <<-EOF # shell commands to be executed EOF 当试图执行上面的命令时,我得到: cannot enable tty mode on non tty input 这是pipe理文件: #!/usr/bin/env python from middleware import create_app, config from middleware.models import db from flask.ext.script import Manager from flask.ext.migrate import Migrate, MigrateCommand app = create_app(config) migrate = Migrate(app, db) manager […]

Dockerfile CMD指令将在运行后立即退出容器

我想在我的容器启动时设置一些configuration,因为我使用的是shell脚本。 但是当我的脚本结束时,我的容器就会退出,我尝试了-d标志/分离模式,但是它永远不会以分离模式运行。 以下是我的Dockerfile FROM ubuntu:14.04 ADD shell.sh /usr/local/bin/shell.sh RUN chmod 777 /usr/local/bin/shell.sh CMD /usr/local/bin/shell.sh 下面是我的shell脚本 #!/bin/bash echo Hello-docker 没有任何标志运行 docker run hello-docker 这将在我的控制台上打印“Hello-docker”并退出 使用-itd标志运行 docker run -itd hello-docker 和下面我的控制台输出,这一次也将很快退出。 🙁 我看到的区别是在命令部分,当我运行其他图像命令部分将显示“/ bin / bash”,并将继续在分离模式。 而当我运行我的图像在shell脚本容器与命令部分将显示“/ bin / sh -c / usr / loca”,并退出。 我想运行容器,直到我没有手动停止它。 编辑: 在Dockerfile中添加ENTRYPOINT指令后,这将不会执行我的shell脚本:( FROM ubuntu:14.04 ADD shell.sh /usr/local/bin/shell.sh RUN chmod 777 /usr/local/bin/shell.sh […]