Docker 容器在 Ctrl +C 后被杀死

Posted

技术标签:

【中文标题】Docker 容器在 Ctrl +C 后被杀死【英文标题】:Docker container killed after Ctrl +C 【发布时间】:2019-06-03 09:29:21 【问题描述】:

我有一个 nginxphp-fpm 容器。 当我在 projet 的 php 容器中并执行任何需要时间的命令(如 vendor/bin/behat 或 composer update)时,我单击 CTRL+C。我被从容器中弹出。我不知道为什么..当我点击 CTRL+C 而不执行命令时我没有问题。

有什么想法吗?

这是我的 docker-compose.yml 文件:

版本:'3' 服务: nginx: 图片:nginx:最新 重启:总是 端口: - “80:80” 卷: - ./nginx/conf:/etc/nginx/custom_conf - ./nginx/hosts:/etc/nginx/conf.d/ - ./nginx/nginx.conf:/etc/nginx/nginx.conf - ./logs/nginx:/var/log/nginx - ..:/var/www 网络: 我的网络: ipv4_address:10.5.0.31 网络: 建造: 。 重启:总是 端口: - “9000:9000” - “5001:5001” 卷: - ./php/php.ini:/usr/local/etc/php/conf.d/30-php.ini - ./php/app2.conf:/usr/local/etc/php/conf.d/app2.conf - ./keys/:/var/www/.ssh - ./custom-hosts:/etc/custom-hosts - ..:/var/www - ./supervisor/supervisord.conf:/etc/supervisor/supervisord.conf - ./supervisor/conf/:/etc/supervisor/conf.d/ 网络: 我的网络: ipv4_address:10.5.0.20 tty: 真 D b: 构建:mysql 重启:总是 端口: - “3306:3306” 卷: - ./logs/mysql:/var/log/mysqld.log - ./mysql/sql:/var/dumps - 数据:/var/lib/mysql 环境: - MYSQL_ROOT_PASSWORD=root - MYSQL_USER=root - MYSQL_PASSWORD=root 网络: 我的网络: ipv4_address: 10.5.0.23 卷: 数据: 司机:本地 网络: 我的网络: 司机:桥 ipam: 配置: - 子网:10.5.0.0/16

我的 php-fpm Dockerfile:

来自 php:7.1-fpm 工作目录 /var/www 运行 apt-get update && apt-get install -y wget git vim sudo unzip apt-utils 运行 apt-get install -y gnupg 运行 apt-get 更新 ###作曲家 运行 cd /usr/src 运行 curl -sS https://getcomposer.org/installer | sudo php -- --install-dir=/usr/local/bin --filename=composer #xdebug 运行 pecl 安装 xdebug-2.5.0 \ && docker-php-ext-启用 xdebug ### php扩展 运行 echo 'debconf debconf/frontend select Noninteractive' | debconf 设置选择 运行 apt-get clean && apt-get update && apt-get -y --fix-missing install libfreetype6-dev \ libjpeg62-turbo-dev \ libmcrypt-开发\ libpng-开发\ libicu开发者\ libxml2-开发\ 克++\ zlib1g-dev 运行 docker-php-ext-configure gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/ 运行 docker-php-ext-install -j$(nproc) gd 运行 docker-php-ext-install exif 运行 docker-php-ext-install pdo_mysql 运行 docker-php-ext-configure intl 运行 docker-php-ext-install intl 运行 apt-get install -y libzip-dev 运行 docker-php-ext-install 压缩包 ### 主要的 运行 usermod -u 1000 www-data 运行 chmod -R 777 /var/www/ 运行 chown -R www-data:www-data /var/www 添加 bash_profile /var/www/.bash_profile 添加 script.sh /usr/bin/script.sh 运行 chmod 755 /usr/bin/script.sh CMD ["bin/bash"] 入口点 ["script.sh"] 曝光 9000

还有我的 script.sh :

#! /bin/bash php-fpm & echo "Serveur de developpement Cartesia Education" 猫 /etc/custom-hosts >> /etc/hosts dpkg-reconfigure -f 非交互式 tzdata 回声“LC_TIME=fr_FR.utf8”>>/etc/environment 服务主管启动 exec su -l www-data -s /bin/bash

感谢您的帮助。

【问题讨论】:

如何启动容器添加 compose 命令。 【参考方案1】:

您是否尝试过以分离模式(-d 选项)运行容器?

> docker run -d [CONTAINER-NAME]

这将导致容器在后台运行。您仍然可以通过 SSH 连接到正在运行的容器:

> docker exec -it [CONTAINER-NAME] bash

退出容器一次不会终止它。

【讨论】:

以上是关于Docker 容器在 Ctrl +C 后被杀死的主要内容,如果未能解决你的问题,请参考以下文章

docker常用操作命令

查看 docker 容器使用的资源

查看 docker 容器使用的资源

docker stats监控容器资源消耗

成功等待脚本后如何启动 docker 容器

docker在windows下上传文件到容器