所以我试图制作一个基本的Dockerfile,但是当我运行它时,它说
The command bin/sh -c sudo apt-get install git python-yaml python-jinja2 returned a non-zero code: 1
Run Code Online (Sandbox Code Playgroud)
我的问题是我在这里做错什么,甚至可以从Dockerfile中执行“ cd”和“ source”之类的命令吗?
FROM Ubuntu
MAINTAINER example
#install and source ansible
RUN sudo apt-get update
RUN sudo apt-get install git python-yaml python-jinja2 python-pycurl
RUN sudo git clone https://github.com/ansible/ansible.git
RUN sudo cd ansible
RUN sudo source ./hacking/env-setup
Run Code Online (Sandbox Code Playgroud)
几个指针/评论在这里:
ubuntu不Ubuntuubuntu(不幸的是,很多图像)中,您不需要使用sudo,默认用户是root(并且在中ubuntu,sudo无论如何都不包括在内)apt-get update,并apt-get install要RUN为同一个命令的一部分,以防止问题与码头工人层快取-y标志来进行apt-get install,因为Docker构建过程非交互式运行新的Dockerfile(考虑到以上内容)将类似于:
FROM ubuntu
MAINTAINER example
#install and source ansible
RUN apt-get update && apt-get install -y \
git \
python-yaml \
python-jinja2 \
python-pycurl
RUN git clone https://github.com/ansible/ansible.git
WORKDIR ansible/hacking
RUN chmod +x env-setup; sync \
&& ./env-setup
Run Code Online (Sandbox Code Playgroud)
您可能还会发现阅读Dockerfile最佳实践很有用。
编辑:Larsks的回答也提出了一些关于容器状态的有用点,这些状态在各层之间不持久,因此您也应该对他进行投票!
| 归档时间: |
|
| 查看次数: |
4401 次 |
| 最近记录: |