我需要从特定目录运行应用程序。
$ sudo docker run -P ubuntu/decomposer 'cd /local/deploy/decomposer; ./decomposer-4-15-2014'
2014/10/09 21:30:03 exec: "cd /local/deploy/decomposer; ./decomposer-4-15-2014": stat cd /local/deploy/decomposer; ./decomposer-4-15-2014: no such file or directory
Run Code Online (Sandbox Code Playgroud)
该目录肯定存在,如果我通过交互式运行 bash 连接到 docker,我可以运行上述命令。
$ sudo docker run -i -t ubuntu/decomposer /bin/bash
# cd /local/deploy/decomposer; ./decomposer-4-15-2014
Run Code Online (Sandbox Code Playgroud)
我可以通过指定完整路径来运行我的程序,但是当它期望从当前目录启动时它会崩溃。我能做什么?
我是一名 Web 开发人员,但我也对一些管理任务感兴趣。因此,从纯管理转向开发运营的新举措对我来说很方便。
无论如何,我有一些问题要将一些事情放入关系中。也许没有,所以我想寻求帮助澄清。
基本上,我想关联的是四种类型的软件(根据我的理解)。确切的产品并不重要,您可以放置任何类似的软件作为替代:
问题 1:我的解释是对的,还是我对这些消费的某些(或全部)有误?
问题 2:我如何混合所有这些工具?这有什么意义吗?
在我的想象和我的理解中,你可以去
这样对吗?如果是这样,你能给我一个关于如何开始使用所有这些的建议(同时使用很多,我还不知道从哪里开始)?
我正在尝试使用在 Docker 中运行的 CentOS 映像列出服务
systemctl list-units
Run Code Online (Sandbox Code Playgroud)
但我收到此错误消息:
Failed to get D-Bus connection: Operation not permitted
Run Code Online (Sandbox Code Playgroud)
任何建议可能是什么问题?
我正在 Windows 10 上安装 Docker for Windows (CE),第一个屏幕问我:
[ ] 使用 Windows 容器而不是 Linux 容器(这可以在安装后更改)
这似乎是一个重要的决定,但Docker 文档、常见问题解答和Windows 容器教程没有提供有关为什么我可能会选择其中一个的信息。
对这种选择的后果有一个客观的概述会很有帮助:
任何可能帮助我得出结论的其他区别将非常受欢迎。
目前我们是在单个 docker 容器上运行的应用程序,该应用程序需要将各种敏感数据作为环境变量传递,
我将它们放在运行命令中,这样它们就不会出现在图像中,然后出现在存储库中,但是我最终得到了一个非常不安全的运行命令,
现在,我知道存在 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
Run Code Online (Sandbox Code Playgroud)
有什么方法可以获得它正在运行的操作系统的文本版本?
我已经设置了以下环境,以便在 apt-get 安装期间不会询问任何问题/对话框:
ENV DEBIAN_FRONTEND noninteractive # export DEBIAN_FRONTEND="noninteractive"
Run Code Online (Sandbox Code Playgroud)
这相当于:
export DEBIAN_FRONTEND="noninteractive"
Run Code Online (Sandbox Code Playgroud)
然而,当从 Dockerfile 构建映像时,在一个特定的 Debian/Ubuntu 软件包安装(使用 apt-get install)结束时,软件包配置 debconf 说:
debconf: unable to initialize frontend: Noninteractive # export DEBIAN_FRONTEND="noninteractive"
debconf: (Bareword "Debconf::FrontEnd::Noninteractive" not allowed while "strict subs" in use at (eval 35) line 3, <> line 1.)
debconf: falling back to frontend: Noninteractive
Subroutine BEGIN redefined at (eval 36) line 2, <> line 1.
Run Code Online (Sandbox Code Playgroud)
哇...我发现我的错误。无法在 Dockerfile 的 ENV 行中添加注释。我要回答自己,因为我确定这会咬其他人......
在我的 Dockerfile 中,我有以下“复制”语句:
# Copy app code
COPY /srv/visitor /srv/visitor
Run Code Online (Sandbox Code Playgroud)
不用说,在我的主机系统中,在“/srv/visitor”目录下,确实有我的源代码:
[root@V12 visitor]# ls /srv/visitor/
Dockerfile package.json visitor.js
Run Code Online (Sandbox Code Playgroud)
现在,当我尝试使用此 Dockerfile 构建映像时,它会在应该发生“复制”的步骤中挂起:
Step 10 : COPY /srv/visitor /srv/visitor
INFO[0155] srv/visitor: no such file or directory
Run Code Online (Sandbox Code Playgroud)
它说没有这样的目录,但显然有。
有任何想法吗?
更新1:
有人指出我错了,因为我理解构建上下文的方式。该建议相当于将“COPY”语句更改为:
COPY . /srv/visitor
Run Code Online (Sandbox Code Playgroud)
问题是我是这样处理的,构建过程在下一步就停止了:
RUN npm install
Run Code Online (Sandbox Code Playgroud)
它说了一些类似“找不到 package.json 文件”的内容,但显然有一个。
更新 2:
我尝试在 Dockerfile 中使用此更改运行它:
COPY source /srv/visitor/
Run Code Online (Sandbox Code Playgroud)
尝试运行 npm 时它停止了:
Step 12 : RUN npm install
---> Running in ae5e2a993e11
npm ERR! install Couldn't read dependencies
npm ERR! Linux 3.18.5-1-ARCH
npm …
Run Code Online (Sandbox Code Playgroud) 使用Docker Compose v1.6.0+,现在有一个新的/版本 2 文件语法docker-compose.yml
。这些更改包括一个名为 的单独顶级密钥volumes
。这允许在一个地方“集中”卷定义。
我想要做的是在那里命名卷,并在我的本地主机磁盘上有一个单一的卷引用多个路径。下面是一个例子,抛出一个以 aTraceback
结尾的异常
AttributeError: 'list' object has no attribute 'items'
Run Code Online (Sandbox Code Playgroud)
示例docker-compose.yml
:
version: '2'
services:
db:
image: postgres
volumes:
- database:/var/lib/postgres/data
php:
image: php-fpm:5.6
volumes:
- phpconf:/etc/php/conf.d
namedvolume:
container_name: namedvolume
build: ./Docker/Testvolume
volumes:
- ./Docker/Testvolume/shareme
volumes:
database:
- ./Docker/Postgres/db:ro
- ./Docker/Postgres/ini
phpconf:
- ./Docker/PHP-FPM/conf
singledir: ./Docker/foo
completemap: ./Docker/bar:/etc/service/conf.d
- namedvolume:/etc/service/conf.d # < this was a separate attempt w/o the other keys
… ?
Run Code Online (Sandbox Code Playgroud)
到目前为止,我通读了所有Docker …
在运行 AMI 的 AWS EC2 实例上安装 Docker 的当前方法是什么?已经发布了 Docker 企业版,现在我想知道是否有任何变化。到现在为止,我一直在使用yum install docker
并且现在确实获得了 Docker 版本1.12.6, build 7392c3b/1.12.6
(2017 年 3 月 3 日)。但是,GitHub 上的 Docker 存储库告诉我已经有更新的版本了。
我记得有官方多克尔(包)库名为包docker-engine
更换docker
前一段时间,现在他们似乎分成了包成docker-ce
和docker-ee
,其中如“不支持红帽企业Linux泊坞社区版(CE泊坞窗)。” [来源]
那么,使用上述方法在运行 AMI 的 EC2 实例上获取最新的稳定 Docker 版本是否正确,或者我是否需要从其他地方提取软件包(如果是,是 CE 还是 EE)?
installation amazon-ami amazon-ec2 amazon-web-services docker
docker ×10
amazon-ami ×1
amazon-ec2 ×1
centos ×1
chef ×1
docker-swarm ×1
installation ×1
linux ×1
lxc ×1
node.js ×1
openstack ×1
security ×1
systemctl ×1
systemd ×1
vagrant ×1
windows-10 ×1