相关疑难解决方法(0)

在docker CentOS 7容器内启动服务

我想在CentOS 7容器上启动httpd服务.但是systemctl命令在容器中不起作用.在CentOS 6中,我可以通过简单地使用/etc/init.d/apachectl -d命令启动httpd .但是在CentOS 7中我找不到任何apachectl文件/*/systemd/.

那么如何在CentOS 7容器中启动httpd服务呢?

apache docker centos7

3
推荐指数
1
解决办法
5523
查看次数

在docker容器内运行netcat

我使用下面的Dockerfile创建了docker镜像.

 FROM ubuntu
 RUN apt-get update \
  && DEBIAN_FRONTEND=noninteractive apt-get install -y \
    net-tools \
  && apt-get clean \
  && rm -rf /var/lib/apt/lists/*
RUN apt-get update \
  && DEBIAN_FRONTEND=noninteractive apt-get install -y \
    netcat \
  && apt-get clean \
  && rm -rf /var/lib/apt/lists/*
EXPOSE 1234
ENTRYPOINT bin/bash
CMD ["nc", "-l", "1234"]
Run Code Online (Sandbox Code Playgroud)

我从aboce docker文件创建了图像,并通过运行以下命令使用图像运行docker容器.

docker run -d  -i -p 1234:1234 --name daemon  nc-ubuntu nc -l 1234
Run Code Online (Sandbox Code Playgroud)

在另一个终端中,我运行以下命令.

telnet localhost 1234
Run Code Online (Sandbox Code Playgroud)

我得到了以下输出.

$ telnet localhost 1234
Trying ::1...
Connected to localhost.
Escape …
Run Code Online (Sandbox Code Playgroud)

docker dockerfile

3
推荐指数
2
解决办法
5992
查看次数

CMD 在 Dockerfile 中的 ENTRYPOINT 后不运行

所以我有一个 docker 文件可以做到这一点:

ENV ENV ${ENV}
ENV SERVICE_NAME ${SERVICE_NAME}
USER app
ENV HOME=/home/app
COPY target /home/app/target
COPY entrypoint.sh /home/app
WORKDIR /home/app
ENTRYPOINT /usr/bin/chamber exec ${ENV}_${SERVICE_NAME} -r 1 -- ./entrypoint.sh
CMD java -jar -Dspring.profiles.active=docker target/my.jar
Run Code Online (Sandbox Code Playgroud)

因此 ENTRYPOINT 运行并从 AWS Parameter Store 中提取一些秘密,并将它们作为环境变量填充到 entrypoint.sh shell 中。然后 entrypoint.sh 对它们执行一些操作,创建一些文件等,并在其最后一行执行“exec $@”。

然后我期待 CMD 运行,但它只能看到运行“ExecStop=/usr/bin/docker stop app”的 systemd 服务文件。

systemd 服务文件执行此操作以启动容器:

ExecStart=/usr/bin/docker run --name app --memory-reservation=128m --memory=512m -e ENV=dev -e SERVICE_NAME=app 1234567890.dkr.ecr.eu-west-2.amazonaws.com/app:latest
Run Code Online (Sandbox Code Playgroud)

CMD怎么了?

docker dockerfile

3
推荐指数
1
解决办法
9187
查看次数

从同一个 Dockerfile 运行多个主要方法

我有一个大型 java 应用程序,在不同的类中有 5 个主要方法。我想将此应用程序作为 Docker 容器运行。从DockerHub OpenJDK Image,我启动了我的 Dockerfile,如下所示

FROM openjdk:latest
COPY . /usr/src/APP
WORKDIR /usr/src/APP`
Run Code Online (Sandbox Code Playgroud)

我想添加行来运行主要方法。没有 Docker,我使用以下几行运行应用程序

echo 'Starting App'
nohup $JAVA_HOME/bin/java .:./App.jar path.to.main.class1  >> 
/path/to/nohup/nohup.out 2>&1 &
nohup $JAVA_HOME/bin/java .:./App.jar path.to.main.class2  >> 
/path/to/nohup/nohup.out 2>&1 &
nohup $JAVA_HOME/bin/java .:./App.jar path.to.main.class3  >> 
/path/to/nohup/nohup.out 2>&1 &
nohup $JAVA_HOME/bin/java .:./App.jar path.to.main.class4  >> 
/path/to/nohup/nohup.out 2>&1 &
nohup $JAVA_HOME/bin/java .:./App.jar path.to.main.class5  >> 
/path/to/nohup/nohup.out 2>&1 &
echo 'App Started Successfully'`
Run Code Online (Sandbox Code Playgroud)

是否可以在一个 docker 容器中运行上述场景?如果可以的话,一个 Dockerfile 中只能有一条指令,ENTRYPOINT怎么办?CMD

java docker dockerfile

3
推荐指数
1
解决办法
1365
查看次数

SCRATCH 中的 docker 容器如何执行二进制文件?

docker 文档说你可以构建这个最小的镜像:

FROM scratch
ADD hello /
CMD ["/hello"]
Run Code Online (Sandbox Code Playgroud)

据推测,其工作方式是该CMD步骤使用默认 shell(即,bin/sh根据/sf/answers/1509549331/)来运行hello可执行文件。

但如果 SCRATCH 真的完全是空的,那么它从哪里来呢bin/sh?为什么我的图像包含外壳?

shell docker

3
推荐指数
1
解决办法
3527
查看次数

Dockerfile 无法执行 CMD 命令(docker for windows)

无法在 dockerfile 中的 docker for windows 上执行 CMD 命令。

我想使用 CMD 运行几个命令,但是,甚至无法运行单个命令。

我已经尝试了以下方法,但没有任何效果......

1.

CMD "sqlcmd -S database -i C:\db\db_scripts\upgradescript.sql -U sa -P mypassword"
Run Code Online (Sandbox Code Playgroud)

2.

RUN ["powershell", "-NoProfile", "-Command", "c:\db\db_scripts\script.ps1"]
Run Code Online (Sandbox Code Playgroud)

3.

CMD ["cmd", "sqlcmd", "-S", "database", "-i", "C:\db\db_scripts\upgradescript.sql", "-U", "sa", "-P", "mypassword"]
Run Code Online (Sandbox Code Playgroud)

4.

ARG arg1=database
ARG arg2=C:\db\db_scripts\upgradescript.sql
ARG arg3=sa
ARG arg4=mypassword!

RUN ["cmd", "-NoProfile", "-Command", "sqlcmd -S $env:arg1 -i $env:arg2 -U $env:arg3 -P $env:arg4"]
Run Code Online (Sandbox Code Playgroud)

5.

RUN powershell.exe  c:\db\db_scripts\script.ps1
Run Code Online (Sandbox Code Playgroud)

6.

ENTRYPOINT ["powershell", "-NoProfile", "-Command", "sqlcmd"]
CMD ["-S database -i C:\db\db_scripts\upgradescript.sql -U …
Run Code Online (Sandbox Code Playgroud)

containers docker dockerfile docker-container docker-for-windows

2
推荐指数
1
解决办法
3971
查看次数

Docker 和 Laravel 不清除缓存

我有一个使用 docker 和 laravel 运行的应用程序,但有一些指令显然已执行但无法运行。

这些说明是php artisan clear:cachephp artisan optimize。有时我需要进入容器并运行这些指令,以便在浏览器中反映我的更改。除了 kubernetes 由于未反映的更改而检测到的故障

FROM php:7.2.0-fpm as php

RUN apt-get update && apt-get install -y openssl openssh-client \
    rsync sshpass zip unzip git vim libmcrypt-dev mysql-client \
    libssh2-1-dev libmagickwand-dev \n
    gnupg2 --no-install-recommends zlib1g-dev sass \
    && pecl install mcrypt-1.0.1 \
    && docker-php-ext-enable mcrypt \
    && pecl install imagick \
    && docker-php-ext-enable imagick \
    && docker-php-ext-install pdo_mysql \
    && docker-php-ext-install gd \
    && docker-php-ext-install zip \
    && pecl install …
Run Code Online (Sandbox Code Playgroud)

laravel docker dockerfile laravel-5.7 laravel-artisan

2
推荐指数
1
解决办法
3611
查看次数

是否可以使用不同的参数多次运行 docker 容器?

我是 Docker 的新手,我试图弄清楚是否可以使用不同的参数多次运行应用程序。

我使用 .Net 开发了我的应用程序,到目前为止我已经使用 Ubuntu 服务执行了所有实例,例如:

[Unit]
Description=swp %I

[Service]
Environment=ENV=PRODUCTION
Type=simple
User=foo
ExecStart=/usr/bin/dotnet /opt/swp/app.dll %i
WorkingDirectory=/opt/app
Restart=always
RestartSec=5
Run Code Online (Sandbox Code Playgroud)

%I我在启动服务时传递的参数在哪里,例如:

sudo systemctl start app@argument1.service
sudo systemctl start app@argument2.service
sudo systemctl start app@argument3.service
Run Code Online (Sandbox Code Playgroud)

因此,根据提供的参数,我有三个以不同逻辑运行的应用程序实例。

如何使用 Docker 复制相同的内容?

docker

2
推荐指数
2
解决办法
448
查看次数

在dockefile中cmd和入口点之间的差异

我是docker的新手,对dockfile有一个简单的问题.我们可以在dock文件中编写入口点和CMD.似乎在创建容器期间执行入口点.并且在启动容器期间执行CMD.这是真的?

docker

1
推荐指数
1
解决办法
1925
查看次数