昨天我被问到如何用dockerfile制作对接者图像
这一次我想补充一个问题
如果我想让OS 14:04安装在图像停靠程序上,PostgreSQL9.3.10,安装Java 6,复制文件(重要位置),并在图像上创建一个用户。
是否可以根据需要组合几个文件来处理图像?( postgresql、java、版权文件的dockerfile,并创建一个用户从而创建一个dockerfile)
举例说明。我创建了一个名为"ubuntu“的dockerfile,其中包含以下命令
顶线
# Create dockerfile
# get OS ubuntu to images
FROM ubuntu:
我有一个基本的Dockerfile:
FROM ubuntu:xenial
USER test
ENTRYPOINT ["/bin/bash"]
对于这个Dockerfile,我希望能够创建一个没有密码的用户,并且当Docker容器运行时,我希望使用该用户,而不是root。当我尝试运行容器docker run -it test:1时,我得到了这个错误:
docker: Error response from daemon: linux spec user: unable to find user test: no matching entries in passwd file.
我是openshift的新手,我使用Dockerfile在上面部署了一个镜像,使用ubuntu作为基础镜像。在Dockerfile中,我分配了一个具有root权限的用户。但在容器形成后,我的用户被某个随机用户覆盖。正因为如此,我在创建和读取文件和目录时面临权限被拒绝的错误。我如何阻止这个随机用户覆盖我的dockerfile中提到的用户,或者我如何为这个随机用户分配root权限。我尝试使用sudo,但得到以下错误:
sudo: PERM_SUDOERS: setresuid(-1, 1, -1): Operation not permitted sudo: no valid sudoers so
我正在尝试为我的web应用程序创建一个带有docker -组合的对接者图像。我的web应用程序需要在文件系统上写入文件的权限。
我的Dockerfile包含
# some other stuff
RUN addgroup -S web && adduser -S -g web web
USER web
我想将我当前的.目录挂载到码头容器中的/code;
执行docker-compose build && docker-compose up时,容器中的/code目录属于用户"1000:1000",而不是我在Dockerfile中创建的用户。
v
我在dockerfile中创建InfluxDB用户时遇到了问题。我希望dockerfile也能安装并启动influxd。对于postgres,我可以在安装postgres后在我的Dockerfile中使用以下代码:
RUN /etc/init.d/postgresql start &&\ psql --command "CREATE USER matt WITH PASSWORD 'test123';" &&\ createdb test_db &&\ psql --command "
我使用我的Dockerfile创建了一个自定义用户。这是我的Dockerfile:
FROM python:3.7-alpine3.10
# Make /opt/ working directory in docker container.
WORKDIR /opt/
# Copy source code to image
COPY app app
# Create a user
RUN adduser -S my_user
# Change owner and permissions
RUN chown -R my_user /opt/
RUN chmod -R 755 /opt/
我正在编写一个Dockerfile,其中我希望创建一个用户并使用它,而不是root用户,因为这是一个推荐的实践。
我所做的工作如下:
FROM python:3
WORKDIR /app
RUN adduser -D myuser
USER myuser
...
docker-compose up通过以下错误消息奖励我:
...
Option d is ambiguous (debug, disabled-login, disabled-password)
ERROR: Service 'webapp' failed to build: The command '
我使用的父映像似乎需要根访问来运行它的ENTRYPOINT指令。
在我的Dockerfile中,我需要运行我自己的容器(可执行文件),最后是普通用户。如何在这里的用户之间来回切换?
Psuedo Dockerfile:
FROM parentrepo/parentimg # its Dockerfile probably has ENTRYPOINT at the end which requires root access
#my app specific instructions
WORKDIR ..
RUN mkdir ..
COPY ..
RUN tar ..
EXPOSE 9000
我有一个Dockerfile如下所示:
FROM jenkins/jenkins:latest
USER root
RUN whoami
USER jenkins
RUN whoami
和这个码头-合成文件
version: '2'
services:
test:
build:
context: .
dockerfile: Dockerfile
container_name: test
hostname: test
ports:
- '8080:8080'
user:
最近,我能够使用ibmcom/mq:9.1.3.0-r3运行我的应用程序,并执行Dockerfile定义:
FROM ibmcom/mq:9.1.3.0-r3
ENV LICENSE accept
ENV MQ_QMGR_NAME QM_MY_APP
USER root
RUN usermod -a -G mqm admin
RUN usermod -a -G mqm root
RUN useradd -g mqm my_user_id
ADD QueueManager /etc/mqm/myapp.mqsc
USER mqm
但是现在ibmcom/mq:9.1.3.0-r3在Docker
我只是在尝试一个关于创建自定义映像的修理工教程,这个教程是 one。
基本上,我所做的就是执行以下命令:
$ docker pull training/sinatra
构建Dockerfile有两种方法,我选择使用自定义Dockerfile,因此,我创建了一个新目录并在其中导航并创建了一个文本文件,如下所示。
$ mkdir sinatra
$ cd sinatra
$ touch Dockerfile
我编辑了docker文件如下所示:
# This is a comment
FROM ubuntu:14.04
MAINTAINER Kate Smith <ksmith@example
我正在尝试创建一个Dockerfile,它使用预定义的用户运行RabbitMQ,但是在Dockerfile构建过程中,设置丢失了。
这是我的Dockerfile:
FROM rabbitmq:management
# Set node name to try to avoid settings being lost during intermediate containers creation
RUN echo "NODENAME=rabbit@localhost" > /etc/rabbitmq/rabbitmq-env.conf
# Start server in i
在我的Dockerfile中,我转到用户postgres。总之,环境变量HOME等于/var/lib/pgsql。现在我想创建另一个环境变量PGDATA,它应该是$HOME/data。但不知怎的,我在Dockerfile里做不到。我做了:
user postgres
run env # HOME=/var/lib/pgsql
env PGDATA=$HOME/data
run env # PGDATA=/data
所以当我构建图像时,$HOME在第3行是空的。我犯了什么错?