Docker使用札记 - 使用中遇到的问题总结
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使用札记 - 使用中遇到的问题总结的更多相关文章
- Docker使用札记 - 常用命令
1. 删除untagged的镜像(TAG列为<none>) docker images -f "dangling=true" -q|xargs docker rmi
- Docker使用札记 - Dockerfile指令
ARG ARG跟ENV都可以定义变量,不同在于ARG在构建期结束时是销毁,而ENV定义的是系统中的环境变量,不会在构建结束时销毁,在以后的构建中直接使用. 当ARG和ENV定义相同名称的变量时,ENV ...
- 关于Docker清理
在Docker的日常使用中,我们或许偶尔遇到下面这些情况: 12345678 $ docker-compose ps[27142] INTERNAL ERROR: cannot create temp ...
- 使用Jenkins搭建持续集成服务
1. 什么是持续集成 持续集成 (Continuous Integration, 简称 CI) 是软件工程中的一种实践, 用于将开发人员不同阶段的工作成果集成起来, 通常一天之中会进行多次. 持续集成 ...
- 虚拟机之openVZ简单基础
OpenVZ的是免费的开源软件,基于GNU GPL协议. OpenVZ的是基于Linux的容器虚拟化. OpenVZ在一台服务器上能够创建创建多个安全隔离的Linux容器(也称为虚拟环境或的VPS), ...
- Kubernetes解决了Docker使用中的哪些问题?
kubernetes是谷歌开源的容器集群管理系统,是Google多年大规模容器管理技术Borg的开源版本 (1)基于容器的应用部署.维护和滚动升级 (2)网络,建立容器之间的通信子网如隧道.路由等,解 ...
- 理解Docker容器的进程管理
摘要: Docker在进程管理上有一些特殊之处,如果不注意这些细节中的魔鬼就会带来一些隐患.另外Docker鼓励"一个容器一个进程(one process per container)&qu ...
- Docker三剑客之Swarm介绍
DockOne技术分享(二十): 我用swarm在多台物理机调度管理容器,用ovs实现跨主机的容器互联问题 [编者的话]Swarm项目是Docker公司发布三剑客中的一员,用来提供容器集群服务,目的是 ...
- docker学习使用
安装什么的就略过了,之前已经整理过,这里就说说自己使用中的一些东西,也是初用,记录下(现在使用win10 64位,使用Docker for Windows直接安装就好[需要专业版win10安装hype ...
随机推荐
- thinkphp5 列表页数据分页查询3-带搜索条件
先加载模板然后在前端HTML页面请求数据 /** * 加载列表页模板 * @author 冯广福 */ public function index() { LogWriteService::write ...
- Python正则表达式指南 (转)
本文http://www.cnblogs.com/huxi/archive/2010/07/04/1771073.html 正则表达式经常被用到,而自己总是记不全,转载一份完整的以备不时之需. 1. ...
- jstat查看JVM统计信息
可以查看以下信息 [jdk基于1.8] 1.类装载 2.垃圾收集 3.JIT编译 一.类装载 返回参数的含义 二.垃圾收集 -gc的输出结果含义 JVM的内存结构 三.查看JIT编译 -compile ...
- Linux rcp命令详解
Linux rcp命令 Linux rcp命令用于复制远程文件或目录. rcp指令用在远端复制文件或目录,如同时指定两个以上的文件或目录,且最后的目的地是一个已经存在的目录,则它会把前面指定的所有文件 ...
- 自然语言处理之Levenshtien Distance算法研究
自然语言处理中,一个很重要的应用就是问答系统,这里面,涉及到问题和知识库里面的问题的匹配度,从而检索出问题的答案,这个是一个比较常见的应用算法. 编辑距离(Edit Distance),又称Leven ...
- 100M双绞线接头的标准接法
双绞线接头(RJ45)针脚号码定义
- 2015.4.21第一篇cnblog文章
个人学习记录第一篇. 输出才是最好一条途径,这也是开源的精神所在.
- java实现PC之间的udp数据单向传输
本示例包括两个客户端UDPClient和MyServer.UDPClient发送数据到MyServer,MyServer负责接收数据.可传输文本.视频.音频.图片等. 最近我在学习这一块,写个例子. ...
- linux找不到动态链接库 .so文件的解决方法
linux找不到动态链接库 .so文件的解决方法 如果使用自己手动生成的动态链接库.so文件,但是这个.so文件,没有加入库文件搜索路劲中,程序运行时可能会出现找不到动态链接库的情形. 可以通过ldd ...
- Tomcat实战-调优方案
Tomcat的默认配置,性能并不是最优的,可以通过优化tomcat以此来提高网站的并发能力.提高Tomcat的性能可以分为两个方向. 服务器资源 服务器所能提供CPU.内存.硬盘的性能对处理能力有决定 ...