在这个Dockerfile中运行

mysqld时(在我的

Linux机器上,

Linux 12.04)

Dockerfile:

FROM ubuntu:precise

RUN apt-get update

RUN apt-get install -y mysql-server

CMD ["/usr/sbin/mysqld"]

我在加载共享库时遇到mysqld:error:libz.so.1:无法打开共享对象文件:权限被拒绝

而通过boot2docker在我的Mac上运行mysqld启动就好了.

我尝试了不同的基础docker图像:

> phusion / baseimage:0.9.8

> phusion / baseimage:0.9.1

> ubuntu:最新

我在主机系统上运行了apt-get update和apt-get upgrade(包括更新Mysql),我已经重新启动了主机系统.

关于如何进行的任何想法?

关于我的系统的信息:

$docker version

Client version: 0.9.0

Go version (client): go1.2.1

Git commit (client): 2b3fdf2

Server version: 0.9.0

Git commit (server): 2b3fdf2

Go version (server): go1.2.1

Last stable version: 0.9.0

$docker info

Containers: 37

Images: 340

Driver: aufs

Root Dir: /var/lib/docker/aufs

Dirs: 414

WARNING: No swap limit support

$uname -a

Linux Ubuntu-1204-precise-64-minimal 3.8.0-37-generic #53~precise1-Ubuntu SMP Wed Feb 19 21:37:54 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux

回答leeduhem关于libz.so.1权限的评论:

$ls -l /lib/x86_64-Linux-gnu/libz.so.1

lrwxrwxrwx 1 root root 15 Nov 10 2011 /lib/x86_64-Linux-gnu/libz.so.1 -> libz.so.1.2.3.4

$ls -l /lib/x86_64-Linux-gnu/libz.so.1.2.3.4

-rw-r--r-- 1 root root 92720 Nov 10 2011 /lib/x86_64-Linux-gnu/libz.so.1.2.3.4

使用更改权限

$chmod +x /lib/x86_64-Linux-gnu/libz.so.1.2.3.4

我仍然得到错误.

运行strace -o /tmp/mysql.strace mysqld和cat /tmp/mysql.strace给出

execve("/usr/sbin/mysqld", ["mysqld"], [/* 7 vars */]) = 0

brk(0) = 0x7f4d41f7c000

access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory)

mmap(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f4d403c5000

access("/etc/ld.so.preload", R_OK) = -1 ENOENT (No such file or directory)

open("/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = -1 EACCES (Permission denied)

open("/lib/x86_64-Linux-gnu/tls/x86_64/libz.so.1", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)

stat("/lib/x86_64-Linux-gnu/tls/x86_64", 0x7fff713907f0) = -1 ENOENT (No such file or directory)

open("/lib/x86_64-Linux-gnu/tls/libz.so.1", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)

stat("/lib/x86_64-Linux-gnu/tls", 0x7fff713907f0) = -1 ENOENT (No such file or directory)

open("/lib/x86_64-Linux-gnu/x86_64/libz.so.1", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)

stat("/lib/x86_64-Linux-gnu/x86_64", 0x7fff713907f0) = -1 ENOENT (No such file or directory)

open("/lib/x86_64-Linux-gnu/libz.so.1", O_RDONLY|O_CLOEXEC) = -1 EACCES (Permission denied)

stat("/lib/x86_64-Linux-gnu", 0x7fff713907f0) = -1 EACCES (Permission denied)

open("/usr/lib/x86_64-Linux-gnu/tls/x86_64/libz.so.1", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)

stat("/usr/lib/x86_64-Linux-gnu/tls/x86_64", 0x7fff713907f0) = -1 ENOENT (No such file or directory)

open("/usr/lib/x86_64-Linux-gnu/tls/libz.so.1", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)

stat("/usr/lib/x86_64-Linux-gnu/tls", 0x7fff713907f0) = -1 ENOENT (No such file or directory)

open("/usr/lib/x86_64-Linux-gnu/x86_64/libz.so.1", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)

stat("/usr/lib/x86_64-Linux-gnu/x86_64", 0x7fff713907f0) = -1 ENOENT (No such file or directory)

open("/usr/lib/x86_64-Linux-gnu/libz.so.1", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)

stat("/usr/lib/x86_64-Linux-gnu", 0x7fff713907f0) = -1 EACCES (Permission denied)

open("/lib/tls/x86_64/libz.so.1", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)

stat("/lib/tls/x86_64", 0x7fff713907f0) = -1 ENOENT (No such file or directory)

open("/lib/tls/libz.so.1", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)

stat("/lib/tls", 0x7fff713907f0) = -1 ENOENT (No such file or directory)

open("/lib/x86_64/libz.so.1", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)

stat("/lib/x86_64", 0x7fff713907f0) = -1 ENOENT (No such file or directory)

open("/lib/libz.so.1", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)

stat("/lib", 0x7fff713907f0) = -1 EACCES (Permission denied)

open("/usr/lib/tls/x86_64/libz.so.1", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)

stat("/usr/lib/tls/x86_64", 0x7fff713907f0) = -1 ENOENT (No such file or directory)

open("/usr/lib/tls/libz.so.1", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)

stat("/usr/lib/tls", 0x7fff713907f0) = -1 ENOENT (No such file or directory)

open("/usr/lib/x86_64/libz.so.1", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)

stat("/usr/lib/x86_64", 0x7fff713907f0) = -1 ENOENT (No such file or directory)

open("/usr/lib/libz.so.1", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)

stat("/usr/lib", 0x7fff713907f0) = -1 EACCES (Permission denied)

writev(2, [{"mysqld", 6}, {": ", 2}, {"error while loading shared libra"..., 36}, {": ", 2}, {"libz.so.1", 9}, {": ", 2}, {"cannot open shared object file", 30}, {": ", 2}, {"Permission denied", 17}, {"\n", 1}], 10) = 107

查看跟踪似乎指示的目录/ lib和/ lib / x86_64-Linux-gnu是不允许的:

$ls -ld /lib

drwxr-xr-x 12 root root 4096 Dec 16 13:42 /lib

$ls -ld /lib/x86_64-Linux-gnu

drwxr-xr-x 3 root root 4096 Mar 17 13:39 /lib/x86_64-Linux-gnu

删除容器为我解决了这个问题.

更新:该解决方案的工作时间不长.

所以我一直在搜索,找到了something related with Apparmor.

如果您在主机上安装了mysql,Apparmor可能会限制对Docker容器上安装的mysql访问此共享库.以下修复了问题:

#Type this on your host terminal

sudo ln -s /etc/apparmor.d/usr.sbin.mysqld /etc/apparmor.d/disable/

sudo apparmor_parser -R /etc/apparmor.d/usr.sbin.mysqld

libz mysql_Docker和Mysql:libz.so.1:无法打开共享对象文件:权限被拒绝相关推荐

  1. mysql sillyr x.so_mysql2.so:libmysqlclient_r.so.15:无法打开共享对象文件:没有这样的文件或目录...

    我试图运行一个Rails两个应用程序与Ubuntu 10.04服务器,sphinx,myql2版本0.2.7和percona服务器5.5(Myslql 5.5). mysql2在irb工作正常,我可以 ...

  2. libz.dylib的研究 libz.1.2.5.tbd

    官方文档 A file ending in the extension  .dylib  is a dynamic library: it's a library that's loaded at r ...

  3. mysql 二进制日志 解析c++_mysql二进制日志文件恢复数据库

    二进制日志的文件的作用 mysql二进制日志文件用来记录所有用户对数据库操作,即记录用户对数据库操作的sql语句.如果有此文件,当数据库发生意外时,可以通过此文件查看到用户在此文件记录的时间段内用户所 ...

  4. proto文件导入mysql_导出mysql表结构生成grpc需要的proto文件工具

    使用过grpc的同学都知道,写proto文件比较繁琐,尤其是写message,对应很多字段,为此写了一个简单的从mysql直接读取表结构,生成proto文件的工具. 工具的使用很简单,需要简单的配置, ...

  5. mysql 打开文件数_MySQL打开的文件描述符限制

    如果遇到如下错误: Can't open file: '.\test\mytable.frm' (errno: 24) shell> perror 24 OS error code 24: To ...

  6. 天堂2启动mysql就没了_启用二进制日志文件进行mysql数据恢复

    启用二进制日志文件进行mysql数据恢复 查看文件/etc/my.cnf中[mysqld]配置块的是否配置log-bin 项,用来记录数据库更改的日志, 然后设置要需要写入日志的数据库或者不要写入日志 ...

  7. c# ef报错_C# EF调用MySql出现“未将对象引用设置到对象的实例”错误解决方案

    C# EF调用MySql出现"未将对象引用设置到对象的实例"错误解决方案---修改步骤---1.打开Nuget管理包,把Mysql.Data替换为6.10.0以下任意版本.这里选择 ...

  8. mysql根据idb还原数据_mysql通过idb文件,恢复数据库

    原因: 由于一次未知原因,服务器停机后,导致数据库不能启动,由于刚接手项目,对此数据库的配置不是那么清晰,分析了很多,最后还是没发正常启动.由于发现数据idb文件还在,最后就采取了险招,重新安装mys ...

  9. lnmp 清除mysql日志,军哥LNMP 如何关闭 Mysql 日志,并且删除 mysql-bin.0000*日志文件...

    mysql日志文件有段时间真的把我害我非常的惨,那时使用的腾讯云主机,默认的数据盘,linux系统仅给了8G的空间容量,安装了系统以及lnmp之后还剩6G左右吧,挂了一个采集站,一个月左右硬盘就满了, ...

最新文章

  1. QQ和新浪微博登陆第三方的简单实现
  2. 基于Flink SQL构建流批一体实时数仓
  3. php自动加载类与路由,PHP实现路由与类自动加载步骤详解
  4. 文巾解题 176. 第二高的薪水
  5. Java 内部类示例
  6. 修改6S Fortran77 代码,建立查找表
  7. Linux宏定义实现类成员函数,全面解析Linux内核的同步与互斥机制
  8. 目标函数,代价函数,损失函数
  9. c语言单链表_突破C语言难点之单链表?一绘图即可
  10. 用java编写圆锥_求java大神帮忙 求大神帮助!Java
  11. Qt总结之十二:C/C++内存分配方式与存储区
  12. 如何使用pattern recognition letter 的word写作模板
  13. html多重阴影,求问:CSS3多重阴影效果实现的问题。为什么没有任何的效果,怎么改颜色都没用。...
  14. 流利阅读 2019.3.18 Can baijiu, China’s sorghum firewater, go global?
  15. bcdedit用法详解
  16. pointnet语义分割_训练并预测自己的数据
  17. 开源OSSIM企业运维疑难问题解析
  18. kafka利用自带的zookeeper进行集群部署
  19. android 手机系统排行榜,手机系统排行榜出炉:第一名意料之中,MIUI排名令人意外!...
  20. xxx牌JUC学习加油奥利给001初始篇章

热门文章

  1. 【less-7】sqli-labs靶场第七关(类似less-5)
  2. HTCondor下多台Linux计算集群的搭建
  3. Java构造函数执行顺序
  4. .net开发中用BackgroundWorker实现多线程
  5. 目标检测之SSD数据处理、训练与预测流程记录
  6. 关于笔算递归的通用算法——迭代
  7. 敏捷开发免费管理工具——火星人预览之六:我的空间,我的通知
  8. vue 组件模板template定义时的注意事项
  9. LLRP 提供程序概述
  10. ASP.NET Core 项目配置 ( Startup ) - ASP.NET Core 基础教程 - 简单教程,简单编程