Docker错误:从Win10运行时找不到或不存在容器命令

科斯塔斯·德米里斯(Kostas Demiris)

这真让我抓狂...

我有Win10,并且已经安装了Docker Toolbox

Docker=1.10.2 
Compose=1.6.0 
VirtualBox=5.0.14

我已经在Linux [Amazon linux]中成功启动了LAMP,但是当我尝试执行相同的操作时,终端会响应“错误:找不到或不存在容器命令”,据我了解,Windows解释器的方式有问题CMD语法。

我试过了

 - CMD ["/run.sh"]
 - ENTRYPOINT ["/run.sh"]     
 - CMD /run.sh
 - CMD '/run.sh'
 - CMD run.sh
 - CMD "/run.sh"

但似乎没有任何效果。

注意:当我运行CMD /run.sh时,错误不会出现,但是容器会立即退出。

注意2:尝试在AWS上使用Docker-Machine设置LAMP时,我遇到了完全相同的问题

我有这个DockerfileLamp

FROM ubuntu

# -- Install needed packages --
ENV DEBIAN_FRONTEND noninteractive

# -- Install additional utilities --
RUN apt-get update && \
  apt-get install -y supervisor git curl apache2 mcrypt cron wget nano unzip

# -- Install PHP 5.5 --
RUN apt-get -y update && \
    apt-get -y install php5 libapache2-mod-php5 mysql-server-5.5 php5-mysql pwgen php-apc php5-mcrypt php5-xdebug php5-gd php5-curl php-pear openssh-server php5-cli php5-apcu php5-intl php5-imagick php5-json

# -- Set localhost to apache conf file --
RUN echo "ServerName localhost" >> /etc/apache2/apache2.conf

# -- Add image configuration and scripts --
ADD ./lamp/start-apache2.sh /start-apache2.sh
ADD ./lamp/start-mysqld.sh /start-mysqld.sh
ADD ./lamp/run.sh /run.sh
RUN chmod 755 /*.sh
ADD ./lamp/my.cnf /etc/mysql/conf.d/my.cnf
ADD ./lamp/supervisord-apache2.conf 
    /etc/supervisor/conf.d/supervisord-apache2.conf
ADD ./lamp/supervisord-mysqld.conf 
    /etc/supervisor/conf.d/supervisord-mysqld.conf

# -- Remove pre-installed database --
RUN rm -rf /var/lib/mysql/*
# -- Add MySQL utils --
ADD ./lamp/setup_MySQL.sh /setup_MySQL.sh
RUN chmod 755 /*.sh

# -- config to enable .htaccess --
##ADD apache_default /etc/apache2/sites-available/000-default.conf
RUN a2enmod rewrite

# -- Environmental variables to configure php --
ENV PHP_UPLOAD_MAX_FILESIZE 10M
ENV PHP_POST_MAX_SIZE 10M

# -- Add volumes for MySQL --
##VOLUME  ["/etc/mysql", "/var/lib/mysql" ]

# -- Set up SSH server --
RUN mkdir /var/run/sshd
RUN echo 'root:root' |chpasswd
RUN sed -ri 's/^PermitRootLogin\s+.*/PermitRootLogin yes/'
    /etc/ssh/sshd_config
RUN sed -ri 's/UsePAM yes/#UsePAM yes/g' /etc/ssh/sshd_config
ADD ./lamp/supervisord-openssh-server.conf
    /etc/supervisor/conf.d/supervisord-openssh-server.conf

# -- Install Python & pip --
RUN apt-get update && \
    apt-get upgrade -y && \
    apt-get install -y python python-pip python-dev && \
    pip install --upgrade pip
# -- Install xvfb --
RUN apt-get install -y xvfb   

EXPOSE 80 3306 22

CMD /run.sh

run.sh

#!/bin/bash

VOLUME_HOME="/var/lib/mysql"

sed -ri -e "s/^upload_max_filesize.*/upload_max_filesize = ${PHP_UPLOAD_MAX_FILESIZE}/" \
    -e "s/^post_max_size.*/post_max_size = ${PHP_POST_MAX_SIZE}/" /etc/php5/apache2/php.ini
if [[ ! -d $VOLUME_HOME/mysql ]]; then
    echo "=> An empty or uninitialized MySQL volume is detected in $VOLUME_HOME"
    echo "=> Installing MySQL ..."
    mysql_install_db > /dev/null 2>&1
    echo "=> Done!"  
    /setup_MySQL.sh
else
    echo "=> Using an existing volume of MySQL"
fi

exec supervisord -n

docker-compose.yml

lamp: # apache + mysql/php
  build: .
  dockerfile: DockerfileLamp
  ports:
    - "8181:80"   # open apache to public
    - "3333:3306" # open mysql to public 
    - "2222:22"   # open SSH to public
科斯塔斯·德米里斯(Kostas Demiris)

我通过简化文件解决了它。我注释掉了所有控件,因为无论尝试如何,它都会不断抛出Syntax Errors

#!/bin/bash

VOLUME_HOME="/var/lib/mysql"

sed -ri -e "s/^upload_max_filesize.*/upload_max_filesize = ${PHP_UPLOAD_MAX_FILESIZE}/" \
    -e "s/^post_max_size.*/post_max_size = ${PHP_POST_MAX_SIZE}/" /etc/php5/apache2/php.ini

#if [[ ! -d $VOLUME_HOME/mysql ]]; then
    echo "=> An empty or uninitialized MySQL volume is detected in $VOLUME_HOME"
    echo "=> Installing MySQL ..."
    mysql_install_db > /dev/null 2>&1
    echo "=> Done!"
    /setup_MySQL.sh
#else
#    echo "=> Using an existing volume of MySQL"
#fi

exec supervisord -n

它适用于我的情况,因此我将不做进一步调查。干杯!

已编辑

上述解决方案不是很完整。之所以起作用,是因为我正在容器内部进行更改。

永久解决方案如下:我将run.sh文件迁移到私有Gist。[它不需要是私有的,但是还可以]我认为问题是,当我尝试从Windows计算机(本地或在云提供程序上)构建Dockerfile时,它弄乱了语法,EOF,换行符和其他内容。所以我通过添加要点网址打破了它

ADD http://gist_url/run.sh /run.sh

注意1:必须使用原始文件URL,否则将获取完整的HTML。

注意2:私有要点不受保护。您不需要身份验证即可获取URL。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

找不到或不存在Docker容器命令

来自分类Dev

Windows上的docker-compose-找不到或不存在容器命令“ sh”

来自分类Dev

Windows上的docker-compose-找不到或不存在容器命令“ sh”

来自分类Dev

泊坞窗:来自守护程序的错误响应:找不到或不存在容器命令

来自分类Dev

C#运行时编译错误:在当前上下文中找不到类型'Double'和'Math'/不存在

来自分类Dev

在 docker bash 脚本中运行时找不到命令

来自分类Dev

运行时Docker映像错误:找不到文件

来自分类Dev

找不到或不存在容器命令“ /start.sh”,容器的入口点是shell脚本

来自分类Dev

以sudo运行时找不到命令

来自分类Dev

运行docker容器时找不到npm命令错误

来自分类Dev

运行时错误:找不到InverseBooleanConverter

来自分类Dev

出现错误“不存在Java运行时”,我该如何解决?

来自分类Dev

Cyrus Sieve运行时错误声明邮箱不存在

来自分类Dev

运行时错误'340'vb 6.0,控制数组元素'3'不存在

来自分类Dev

运行时不存在Maven传递依赖项

来自分类Dev

在docker容器中运行时,golang项目找不到依赖项

来自分类Dev

Android SQLite 在打开时不存在错误,并且在运行时创建时已存在错误

来自分类常见问题

grunt:从终端运行时找不到命令

来自分类Dev

fastlane:从launchtl作业运行时找不到命令

来自分类Dev

为什么从〜运行时find命令找不到目录?

来自分类Dev

使用sudo bash运行时找不到命令

来自分类Dev

Python3:从cli运行时找不到命令

来自分类Dev

使用 sudo 运行时找不到 pyenv 命令

来自分类Dev

使用 sudo 运行时找不到命令

来自分类Dev

Qt5信号捕获到插槽会生成运行时错误“信号不存在”

来自分类Dev

运行时错误2467:您输入的表达式引用的对象是已关闭或不存在的对象

来自分类Dev

运行时错误76找不到路径

来自分类Dev

找不到列[0]运行时错误

来自分类Dev

找不到指向Parcelable的运行时错误NoClassDefFoundError

Related 相关文章

  1. 1

    找不到或不存在Docker容器命令

  2. 2

    Windows上的docker-compose-找不到或不存在容器命令“ sh”

  3. 3

    Windows上的docker-compose-找不到或不存在容器命令“ sh”

  4. 4

    泊坞窗:来自守护程序的错误响应:找不到或不存在容器命令

  5. 5

    C#运行时编译错误:在当前上下文中找不到类型'Double'和'Math'/不存在

  6. 6

    在 docker bash 脚本中运行时找不到命令

  7. 7

    运行时Docker映像错误:找不到文件

  8. 8

    找不到或不存在容器命令“ /start.sh”,容器的入口点是shell脚本

  9. 9

    以sudo运行时找不到命令

  10. 10

    运行docker容器时找不到npm命令错误

  11. 11

    运行时错误:找不到InverseBooleanConverter

  12. 12

    出现错误“不存在Java运行时”,我该如何解决?

  13. 13

    Cyrus Sieve运行时错误声明邮箱不存在

  14. 14

    运行时错误'340'vb 6.0,控制数组元素'3'不存在

  15. 15

    运行时不存在Maven传递依赖项

  16. 16

    在docker容器中运行时,golang项目找不到依赖项

  17. 17

    Android SQLite 在打开时不存在错误,并且在运行时创建时已存在错误

  18. 18

    grunt:从终端运行时找不到命令

  19. 19

    fastlane:从launchtl作业运行时找不到命令

  20. 20

    为什么从〜运行时find命令找不到目录?

  21. 21

    使用sudo bash运行时找不到命令

  22. 22

    Python3:从cli运行时找不到命令

  23. 23

    使用 sudo 运行时找不到 pyenv 命令

  24. 24

    使用 sudo 运行时找不到命令

  25. 25

    Qt5信号捕获到插槽会生成运行时错误“信号不存在”

  26. 26

    运行时错误2467:您输入的表达式引用的对象是已关闭或不存在的对象

  27. 27

    运行时错误76找不到路径

  28. 28

    找不到列[0]运行时错误

  29. 29

    找不到指向Parcelable的运行时错误NoClassDefFoundError

热门标签

归档