Tag:

在容器之间共享数据

我有一个运行应用程序服务器的docker集装箱。 应用程序日志生成并存储在一个特定的目录中。 在我的情况下,有多个日志文件和跟踪生成并存储在该位置。 我可以理解,有多种方式来访问这些日志 – 例如 docker exec -it <container_id> bash ssh into the container (when the keys are set while creating the container) 除了上面的两个例子,我想通过一个不同的容器(运行一个nginx的web服务器)来访问日志。 理论上我可以理解,在为应用服务器(第一个容器)创builddocker容器时使用“-volumes-from”的概念,我们可以实现,但是我不知道如何让它工作。 我的要求是每当生成日志,它应该通过其他容器的networking服务器。 有没有办法像目录列表一样查看整个日志目录的目录列表(通过卷???)。 我尝试了这样的事情,并没有像预期的那样工作 docker run –name=log_webserver -p 80 –volumes-from logvol:/website_files nginx docker run –name appcontainer -m 1024 -p 9080 -v sysvol:/var/log/rsyslog -v logvol:/opt/servers/simpleappserver/logs krckumar/simpleappserver 任何其他方式来公开日志? 请build议。

Docker和Volumes nocopy

我想从我的主机挂载一个目录到一个Docker容器,我想在容器内进行一些修改。 但是,当我修改挂载点上的内容时,这些更改也反映在主机上。 例如: $ docker run -d –name webserver01 -v /home/guest/app:/app 之后,我在/ app中的容器内进行了一些更改 $ docker exec -ti webserver01 'touch /app/test.txt' 文件test.txt创build在我的主机和容器内(这个想法是只在容器内创build文件) 我试图使用国旗nocopy但我有这个错误: $ docker run -d –name webserver01 -v /home/guest/app:/app:nocopy docker: Error response from daemon: Invalid bind mount spec "/home/guest/app:/app:nocopy": invalid mode: nocopy. docker版本 $ docker –version Docker version 1.11.1, build 5604cbe/1.11.1 谢谢您的帮助!

Mac上的Docker分离内部和外部文件的所有权; 没有这样的Linux

在Mac上运行Docker,使用centos映像,我看到挂载的卷占用了centos(内部)用户的所有权,而在文件系统上,所有权是我的(mdf:mdf)。 在RHEL 7上使用相同的centos映像,我看到装入的卷,但是在内部,在主目录和文件都显示我的uid(1055)。 我可以做一个recursion的chown,例如,insideguy:insideguy,而且看起来都是正确的。 但回到主机文件系统,所有权已经改变为registry中具有与useguid(1001)选定的相同的uid的其他人在执行useradd时。 docker for Linux有一些基本的限制,使得这种情况发生? 作为另一个副作用,在我们的集群中,即使使用sudo权限,也不能在已挂载的文件系统上显示; 只在本地文件系统上。 因此,将docker主目录保存在例如〜/ dockerhome中的愿望失败了,因为docker似乎正在尝试(和失败)执行一些chowns(在Dockerfile或启动脚本中没有描述,所以被假定为 – 体积治疗)。 放置在/ var或/ opt中,适当的所有权,一切顺利。 任何想法两个docker主机之间有什么不同? 细节:OSX 10.11.6; docker v1.12.1 on mac,v1.12.2在RHEL 7上; centos 7

与卷dockerized postgresql

docker工人对我来说比较新。 我想build立一个postgres数据库,但我想知道如何确保数据不会丢失,如果我重新创build容器。 然后我偶然发现了命名卷(不绑定卷)以及如何使用它们。 但是…在Dockerfile中,您不能使用命名卷。 例如数据:/ var / lib等。正如我理解使用Dockerfile它总是一个匿名卷。 所以每当我重新创build一个容器时,都会得到自己的新容量。 所以这里来了我的问题: 首先:如果容器得到更新或重新创build,新容器中的postgres数据库引用相同的数据,而不会丢失对以前创build的匿名卷的引用,那么如何确保容器? 其次:如何使用yml文件? 是否有可能将这种数据库容器的多个副本引用到一个卷中? (高可用性模式)? 如果有人能给我一个提示或最佳实践,那真的很棒。 先谢谢你。

我们可以在Docker容器中创build卷吗?

我正在尝试在运行的centos docker容器内创build逻辑卷(如/dev/sdb左右)。 如果有人尝试成功,请帮忙! 安装lvm2并运行lvmetad后,当我尝试创build一个VG时,出现下面的错误: bash-4.2#lvcreate -L 2G stackit / dev / mapper / control:打开失败:操作不允许 无法与内核设备映射程序驱动程序通信。 检查设备映射器是否在内核中可用。 条带化:在您的内核中未检测到必需的设备映射程序目标。 运行`lvcreate –help'获取更多信息。

docker运行…input容器…然后每个命令得到“ReferenceError:<command>未定义”

这发生在多个命令变化。 基本上…首先我运行容器: docker run -it –publish 8080:8080 –name app_in_docker node:latest 然后我在几秒钟后在下一行中有这个响应: >这使得我看起来在容器中,即使命令行通常如下所示: root@bcb5705c09c1:/#当我在容器中。 任何我input这个>然而显示这个: ReferenceError: <command> is not defined at repl:1:1 at ContextifyScript.Script.runInThisContext (vm.js:44:33) at REPLServer.defaultEval (repl.js:239:29) at bound (domain.js:301:14) at REPLServer.runBound [as eval] (domain.js:314:12) at REPLServer.onLine (repl.js:440:10) at emitOne (events.js:120:20) at REPLServer.emit (events.js:210:7) at REPLServer.Interface._onLine (readline.js:279:10) at REPLServer.Interface._line (readline.js:626:8) 我使用了诸如ls,cd,exit,help,–help,WORKDIR,docker,error等命令,没有任何成功,我得到了同样的信息。 然后,我只closuresdocker快速入门terminal(我使用的是windows和virtualbox在后台运行)并重新打开terminal。 我现在可以进入容器使用: docker exec […]

如何在Bluemix中的IBM Docker Cloud中备份卷?

我知道如何在本地访问docker映像时保存docker映像,但是如何在IBM Bluemix平台中备份卷容器? 谢谢Ansi

Docker命名卷位置Mac

我使用Mac 1.12.1的Docker,并有一个docker撰写文件,它启动wordpress和mysql服务 撰写文件 version: '2' services: db: container_name: mysql_db image: mysql:5.7 volumes: – "./.data/db:/var/lib/mysql" restart: always environment: MYSQL_ROOT_PASSWORD: wordpress MYSQL_DATABASE: wordpress MYSQL_USER: wordpress MYSQL_PASSWORD: wordpress wordpress: container_name: wordpress depends_on: – db image: wordpress:latest links: – db ports: – "8000:80" restart: always environment: WORDPRESS_DB_HOST: db:3306 WORDPRESS_DB_PASSWORD: wordpress volumes: – wordpress/:/var/www/html/ volumes: wordpress: 然而,成功地把所有东西都find后,我无法find我的Mac上存在的命名卷。 MacBookAir:wordpress carlwainwright$ docker […]

用docker-compose删除一个命名卷?

如果我有一个docker-compose文件,如: version: "3" services: postgres: image: postgres:9.4 volumes: – db-data:/var/lib/db volumes: db-data: …然后做docker-compose up为db-data创build一个命名卷。 有没有办法通过docker-compose删除这个卷? 如果这是一个匿名的数量,那么docker-compose rm -v postgres会做的。 但就目前而言,我不知道如何删除db-data卷,而不会恢复到docker命令。 感觉就像docker-compose CLI中可以这样做。 我错过了什么吗?

Docker:创build一个数据卷容器vs简单地使用-v标志与`run`?

我正在阅读Docker的卷用户指南部分: https : //docs.docker.com/engine/userguide/containers/dockervolumes/ 在第一部分,它指出了如何创build一个容器并将其添加到一个容器中,我将调用“方法1”: 您可以多次使用-v来挂载多个数据卷。 现在,在您的Web应用程序容器中安装一个卷。 $ docker run -d -P –name web -v /webapp training/webapp python app.py 这将在/ webapp的容器内创build一个新卷。 后来谈到数据容量容器,这个我会叫“方法2”: 如果您想要在容器之间共享某些持久性数据,或者想要使用非持久性容器,则最好创build一个名为“数据容量容器”,然后从中装入数据。 $ docker create -v /dbdata –name dbstore training/postgres /bin/true 以下是我没有得到的,通过简单地使用-v命令和docker run (方法1)来实现卷与通过使用“数据卷容器”(方法2)来实现卷之间有什么区别? 看起来你只是创build一个在图像的非持久化容器的生命中持久化的卷,如果我错了,纠正我。