1. 启动容器时报错误“: No such file or directory”

一般来说作为容器应用的入口都是entrypoint.sh文件,也就是Dockerfile最后一条指令为是:

ENTRYPOINT ["/entrypoint.sh"]

开始以为是修改的部分哪里不对,将内部内容改为只有一行命令:

date && pwd

  

重新构建并启动容器,仍然不行。网上有说是文件权限的,但是由于Windows系统将文件放入Linux镜像中是默认加了执行权限(+x),详细解释可参看这里

原文:

That warning was added, because the Windows filesystem does not have an option to mark a file as 'executable'. Building a linux image from a Windows machine would therefore break the image if a file has to be marked executable.

For that reason, files are marked executable by default when building from a windows client; the warning is there so that you are notified of that, and (if needed), modify the Dockerfile to change/remove the executable bit afterwards.

所以这解释跳过。

后面在SO看到一条回答才猛然醒悟,这个问题每次在Windows上编写shell脚本经常遇到。问题就出在换行符上,将CRLF改为LF,保持再次构建并启动容器,问题得到解决。

2. 在使用Docker-compose中使用MySQL时,没有按预期创建数据库,用户等信息

在设置了所需的环境变量MYSQL_DATABASE等没有按预期创建数据库等信息:

mysql:
image: mysql:5.7
volumes:
- dbdata:/var/lib/mysql
restart: always
environment:
MYSQL_ROOT_PASSWORD: test
MYSQL_DATABASE: test
MYSQL_USER: test
MYSQL_PASSWORD: test  

进过多次实验和查询得知原来是由于其中的volumes项导致的,当然并不是不能使用该项,而且非常有必要。原因出在之前构建时使用的volume中已经存在MySQL文件,则上述的环境变量不再生效,需要删掉volume,删掉后重新创建启动即可:

docker volume ls //获得相应的volume名称
docker volume rm project_db 

或者:

docker-compose down //停掉当前项目的服务
docker volume prune //删除所有未使用的volume

然后重建并重启服务:

docker up -d

更多详情请参看这里

  

Docker使用札记 - 使用中遇到的问题总结的更多相关文章

  1. Docker使用札记 - 常用命令

    1. 删除untagged的镜像(TAG列为<none>) docker images -f "dangling=true" -q|xargs docker rmi

  2. Docker使用札记 - Dockerfile指令

    ARG ARG跟ENV都可以定义变量,不同在于ARG在构建期结束时是销毁,而ENV定义的是系统中的环境变量,不会在构建结束时销毁,在以后的构建中直接使用. 当ARG和ENV定义相同名称的变量时,ENV ...

  3. 关于Docker清理

    在Docker的日常使用中,我们或许偶尔遇到下面这些情况: 12345678 $ docker-compose ps[27142] INTERNAL ERROR: cannot create temp ...

  4. 使用Jenkins搭建持续集成服务

    1. 什么是持续集成 持续集成 (Continuous Integration, 简称 CI) 是软件工程中的一种实践, 用于将开发人员不同阶段的工作成果集成起来, 通常一天之中会进行多次. 持续集成 ...

  5. 虚拟机之openVZ简单基础

    OpenVZ的是免费的开源软件,基于GNU GPL协议. OpenVZ的是基于Linux的容器虚拟化. OpenVZ在一台服务器上能够创建创建多个安全隔离的Linux容器(也称为虚拟环境或的VPS), ...

  6. Kubernetes解决了Docker使用中的哪些问题?

    kubernetes是谷歌开源的容器集群管理系统,是Google多年大规模容器管理技术Borg的开源版本 (1)基于容器的应用部署.维护和滚动升级 (2)网络,建立容器之间的通信子网如隧道.路由等,解 ...

  7. 理解Docker容器的进程管理

    摘要: Docker在进程管理上有一些特殊之处,如果不注意这些细节中的魔鬼就会带来一些隐患.另外Docker鼓励"一个容器一个进程(one process per container)&qu ...

  8. Docker三剑客之Swarm介绍

    DockOne技术分享(二十): 我用swarm在多台物理机调度管理容器,用ovs实现跨主机的容器互联问题 [编者的话]Swarm项目是Docker公司发布三剑客中的一员,用来提供容器集群服务,目的是 ...

  9. docker学习使用

    安装什么的就略过了,之前已经整理过,这里就说说自己使用中的一些东西,也是初用,记录下(现在使用win10 64位,使用Docker for Windows直接安装就好[需要专业版win10安装hype ...

随机推荐

  1. Day 02 编程语言介绍及运行python

    一.编程语言介绍 1.1.机器语言:直接用计算机能理解的二进制指令编写程序,直接控制硬件. 1.2.汇编语言:用英文标签取代二进制指令编写程序,本质也是在直接控制硬件. 1.3.高级语言:用人能理解的 ...

  2. Centos维护命令

    1.查看系统版本 cat /etc/issue cat /etc/redhat-release 3. cat /proc/version 4.uname -a 显示如下 5 uname -r (二)查 ...

  3. Visual Studio: 一键卸载所有组件工具,彻底卸载干净。

    第一步.手动卸载VS主体 第二步.下载工具并解压 网盘下载地址:https://pan.baidu.com/s/1eSHRYxW 也可以在Github上下载最新版本:https://github.co ...

  4. 初次使用CentOs7遇到的问题

    初次使用CentOs7遇到的问题 1.XXX[用户名]不在sudoers文件中.此事将被报告 解决方案:CentOs自带命令visudo,其作用为调用vim来修改“/etc/sudoers”文件,从而 ...

  5. NDK学习笔记(五)Reader机制

    针对每一种后缀名Nuke都提供了对应的模块.为了决定用哪个版本的reader或writer模块,Nuke会先解析文件后缀名再以此为依据调用相关模块. 以JPG为例: 该文件格式有两种后缀名:.jpg和 ...

  6. InfluxDB(官方使用说明)

    安装InfluxDB OSS 此页面提供有关安装,启动和配置InfluxDB的说明. InfluxDB OSS安装要求 root为了成功完成,需要安装InfluxDB软件包或具有管理员权限. Infl ...

  7. Ubuntu 14.04 下安装 MongoDB 服务器 和 PHP MongoDB Driver 数据驱动

    https://laravel-china.org/topics/309/install-mongodb-server-and-php-mongodb-driver-data-driver-under ...

  8. win10和ubuntu16.04双系统Geom Error

    报错信息: Geom Error Reboot and Select proper Boot device or Insert Boot Media in selected Boot device a ...

  9. window7环境MySql5.7 zip安装配置教程

    1.将zip压缩包解压到一个目录下,并改名为mysql5.7 我的是放在D:\web\mysql5.7下 2.修改my-default.ini文件 下面几项是必填的,否则无法启动 basedir = ...

  10. PAT 乙级 1012 数字分类 (20) C++版

    1012. 数字分类 (20) 时间限制 100 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 CHEN, Yue 给定一系列正整数,请按要求对数字进 ...