Tag: docker dockerfile

如何在同一个容器中运行COPY和RUN命令?

我正在尝试从rpm文件安装java到docker centos映像。 > Step 0 : FROM centos:latest —> **34943839435d** Step 1 : COPY . jdk-6u45-linux-x64-rpm.bin —> **2055e5db6ae9** Removing intermediate container 7ae13aaa4424 Step 2 : RUN chmod +x jdk-6u45-linux-x64-rpm.bin && sh jdk-6u45-linux-x64-rpm.bin —> Running in **c4d6b63576bc** jdk-6u45-linux-x64-rpm.bin: jdk-6u45-linux-x64-rpm.bin: is a directory 2014/12/16 06:03:34 The command [/bin/sh -c chmod +x jdk-6u45-linux-x64-rpm.bin && sh jdk-6u45-linux-x64-rpm.bin] returned a […]

在Docker上安装Node模块:为什么它们会消失?

我正在尝试创build我的第一个节点的Docker镜像。 这是一个hubot。 以下是Dockerfile的基础知识: FROM ubuntu:14.04 VOLUME /opt COPY package.json /opt/hubot/ RUN apt-get update && apt-get -y install build-essential nodejs python RUN npm install -g npm WORKDIR /opt/hubot/ RUN npm install –prefix /opt/hubot/ COPY app /opt/hubot/app 问题是生成步骤结束后,node_modules不存在。 我可以看到它在构build步骤期间被放置在我预期的位置: make[1]: Entering directory `/opt/hubot/node_modules/aws2js/node_modules/mime-magic' 所以,我知道Docker文件有些无状态,这就是为什么“更新&&安装”是必要的。 但是有些东西会被抛在后面,否则安装好的位不会在那里结束。 我如何坚持node_modules ?

ENVvariables未正确添加到容器环境

这是我的Dockefile FROM ubuntu:latest MAINTAINER mazzy WORKDIR /tmp RUN apt-get update && apt-get install -y wget RUN wget http://nodejs.org/dist/v0.12.0/node-v0.12.0-linux-x64.tar.gz RUN tar xvf node-v0.12.0-linux-x64.tar.gz RUN cp -r node-v0.12.0-linux-x64 /usr/local/ WORKDIR /usr/local RUN ln -s /usr/local/node-v0.12.0-linux-x64.tar.gz /usr/local/node # FIX HERE ENV PATH /usr/local/node/bin:$PATH RUN npm install -g bower EXPOSE 8080:8080 这个Dockerfile的问题是,当我运行它时,我得到了错误npm找不到。 这可能是由于安装文件夹未正确添加到PATH envvariables所致。 你知道为什么吗?

在运行时拖拽docker容器中的ssh键

我正在创build一个nodejs应用程序,该应用程序将与Git仓库集成,并执行诸如push,pull commit等操作。我正在将应用程序移至Docker。 但是我找不到在运行时将ssh密钥放入泊坞窗图像的方法。 为了安全起见,我想避免在构build时在docker镜像中复制ssh密钥。 我曾尝试在运行时将ssh密钥作为envvariables传递,如下所示: docker run -i -t -e KEY="sshkey" imagename 并在node.js中手动创buildssh文件夹和ssh密钥 mkdirSync('/root/.ssh/', (err) => { writeFileSync('/root/.ssh/id_rsa.pub', sshKey, (err) => { }) }) 但是,这似乎并没有工作,但我仍然在尝试克隆回购时遇到许可错误。 我需要做些什么来加载SSH密钥,以便他们可以使用GIT? 有没有办法使用Dockerfile来做到这一点。 我知道我可以将它添加到构build,时间,但还没有find一种方法来在运行时。 我如何检查正在运行的docker集装箱的FS?

使用系统mongodb的多个docker集装箱?

我对Docker非常陌生,而且我正在努力configuration。 我目前的configuration是,我的本地系统上有多个使用nodemon Node / Express微服务。 所有这些都连接到运行在mongodb://localhost:27017/localv2上的mongodb://localhost:27017/localv2 。 我试图dockerize我所有的微服务。 问题是他们无法连接到localhost:27017上的mongodb localhost:27017 。 我有两个问题: 为什么他们不能连接到本地主机:27017? 如何使他们连接到我的系统中当前正在运行的mongodb?

Dockerfile:跳过私钥的密码

我使用私人密钥从我的Docker文件中从Github下载我的存储库。 我有这样的东西: RUN mkdir -p /root/.ssh && echo "$MY_PRIVATE_KEY" >/root/.ssh/id_rsa && chmod 0600 /root/.ssh/id_rsa && ssh-keyscan github.com >> /root/.ssh/known_hosts && cat /root/.ssh/known_hosts && ssh -vvv git@github.com && pip install git+ssh://git@github.com/my_project.git@v1.0.0 && rm /root/.ssh/id_rsa MY_PRIVATE_KEY是一个参数。 我无法重新创build此密钥。 我的问题是,在连接过程中,我收到以下错误: key_load_private_type: incorrect passphrase supplied to decrypt private key 有没有可能跳过密码?

如何在Dockerfile中正确运行Docker cmds

Docker在Dockerfile中运行命令的方式与在启动容器后手动运行命令之间似乎有区别。 这似乎是由于你可以启动一个shell,一个(我假设)非Dockerfile与交互式shell之间运行诸如docker run -it docker run -it <some-img-id>非交互式shell。 我怎样才能在Docker容器中debugging运行命令,使其运行完全像命令从Dockerfile运行? 只是将/bin/bash –noprofile添加到run cmd就足够了吗? 或者从Dockerfile启动时环境还有什么不同?

在docker容器中安装mongodb

我正在为MongoDB创build一个docker镜像。 我遵循从官方mongodb安装到信的安装说明没有成功。 我已经尝试过每一个博客和安装说明,但没有任何成功。 任何帮助将不胜感激。 我的dockerfile内容: FROM ubuntu:16.04 RUN apt-key adv –keyserver hkp://keyserver.ubuntu.com:80 –recv 0C49F3730359A14518585931BC711F9BA15703C6 RUN echo "deb [ arch=amd64 ] http://repo.mongodb.org/apt/ubuntu/ xenial/mongodb-org/3.4 multiverse" | tee /etc/apt/sources.list.d/mongodb-3.4.list RUN apt-get update && apt-get install -y mongodb-org RUN mkdir -p /data/db RUN chown -R mongodb:mongodb /data/db ADD mongodb.conf /etc/mongodb.conf ADD mongodb.pem /etc/ssl/certs/mongodb.pem VOLUME ["/data/db"] EXPOSE 27017 ENTRYPOINT ["/usr/bin/mongod", […]

Dockerfile与Tomcat:“exec:catalina.sh”没有这样的文件或目录

我试图让我的Web应用程序与Docker上的Tomcat一起工作。 不过,我在实际工作中遇到了一些麻烦。 我对Tomcat和Docker都是全新的,不太清楚我做错了什么。 我的Dockerfile看起来像: FROM java:8-jre #https://github.com/docker-library/tomcat ENV CATALINA_HOME ~/Tomcat ENV PATH $CATALINA_HOME/bin:$PATH RUN mkdir -p "$CATALINA_HOME" WORKDIR $CATALINA_HOME # see https://www.apache.org/dist/tomcat/tomcat-8/KEYS RUN gpg –keyserver pool.sks-keyservers.net –recv-keys \ 05AB33110949707C93A279E3D3EFE6B686867BA6 \ 07E48665A34DCAFAE522E5E6266191C37C037D42 \ 47309207D818FFD8DCD3F83F1931D684307A10A5 \ 541FBE7D8F78B25E055DDEE13C370389288584E7 \ 61B832AC2F1C5A90F0F9B00A1C506407564C17A3 \ 79F7026C690BAA50B92CD8B66A3AD3F4F22C4FED \ 9BA44C2621385CB966EBA586F72C284D731FABEE \ A27677289986DB50844682F8ACB77FC2E86E29AC \ A9C5DF4D22E99998D9875A5110C01C5A2F6059E7 \ DCFD35E0BF8CA7344752DE8B6FB21E8933C60243 \ F3A04C595DB5B6A5F1ECA43E3B7BBB100D811BBE \ F7DA48BB64BCB84ECBA7EE6935CD23C10D498E23 ENV TOMCAT_MAJOR 8 ENV […]

为什么我的Docker容器启动后不能将控制权交还给terminal?

我有一个shell脚本,我用它来导出Envvariables。 这个脚本调用python脚本从运行我的主python脚本之前需要存储的web服务中获取某些值。 我试过使用RUN . /bot/env/setenv.sh RUN . /bot/env/setenv.sh ,但是这似乎并不使envvariables在最终容器中可用。 我试过把内容放在一个以调用python jbot.py结尾的entrypoint.sh文件中,但容器永远不会完成它的设置(我假设因为入口点内的脚本是一个连续的循环?) 我的entrypoint.sh看起来像这样: #!/bin/bash . /jirabot/env/setenv.sh python jbot.py 而setenv.sh只是: #!/bin/bash export SLACK_BOT_TOKEN="xoxb-token" export BOT_ID=`python env/print_bot_id.py ${SLACK_BOT_TOKEN}` 我的完整的Dockerfile是: FROM python:2 COPY jirabot/ /jirabot/ RUN pip install slackclient schedule jira WORKDIR /jirabot #CMD [ "python", "jbot.py" ] ENTRYPOINT [ "/jirabot/entrypoint.sh" ] 当我做docker run bot ,我可以validation应用程序正在运行(机器人响应我的请求相应)。 但是,输出中缺lessjbot.py中的所有print()语句 – 所以我有两个主要问题: […]