docker - 使用 Docker chown 容器目录 (ubuntu - mysql/mysql-server)
问题描述
我正在尝试使用 /var/lib/mysql/ 目录实例化一个 mysql 容器,该目录具有适当的权限和所有权,以便从我的旧 mysql 服务器 COPY 绑定 sql 转储。但是由于 /var/lib/mysql/ 拥有其权限和所有权,容器在挂载时退出。所以我试图在实例化容器时改变这个目录的权限和所有权。但这被证明是困难的......
目标:rwxr-xr-x mysql:root /var/lib/mysql
配置:
Dockerfile: FROM mysql/mysql-server
RUN chmod 755 /var/lib/mysql
RUN chown -R mysql:root /var/lib/mysql/图像:存储库标签图像 ID 创建大小
wat 1.0 09edc2e9d91d 大约一小时前 381MB
mysql/mysql-server 最新 716286be47c6 2 个月前 381MBdocker-compose.yml:版本:“3”
服务:
mysqlmysql-server:
图像:wat:1.0
container_name:mysqlmysql-server
加工 ...
$ docker ps
CONTAINER ID 图像命令创建的状态端口名称
b21339cf2986 wat:1.0 "/entrypoint.sh mysq..." 11 分钟前 11 分钟前(健康)3306/tcp,33060/tcp mysqlmysql-server
b21339cf2986# ls /var/lib -al | grep -e mysql$
drwxr-x--- 7 mysql mysql 4096 Jun 27 04:06 mysql
这是错误的。我现在至少期待 rwxr-xr-x 和/或 mysql:root
拆解/广场 1 ##
$ sudo 码头工人停止 *; 须藤码头rm *;sudo 码头工人图像 rmi *; sudo docker pull mysql/mysql-server
$ sudo docker build --tag wat:1.0 - < mysqlmysql-server/Dockerfile-mysqlmysql-server
成功构建 2a38f54299d8
成功标记 wat:1.0
$ sudo docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
wat 1.0 2a38f54299d8 大约一分钟前 381MB
mysql/mysql-server 最新 716286be47c6 2 个月前 381MB
$ sudo docker-compose up -d
$ sudo docker ps
CONTAINER ID 图像命令创建状态端口名称
b94f9e776d78 wat:1.0 "/entrypoint.sh mysq..." 大约一分钟前 Up 59 seconds (healthy) 3306/tcp, 33060/tcp mysqlmysql-server
$ sudo docker exec -it b94f9e776d78 bash
bash-4.2# ls /var/lib -al | grep -e ql$ drwxr-x--- 6 mysql mysql 4096 Jun 27 04:27 mysql
以上是错误的
目标:rwxr-xr-x mysql:root /var/lib/mysql
解决方案
Docker Hubmysql/mysql-server
镜像声明了一个VOLUME /var/lib/mysql
. 这意味着后续的 Dockerfile 步骤不能对该目录进行任何进一步的更改。
在实践中,您几乎总是将自己的存储挂载在该目录上。当您这样做时,该存储(主机目录或 Docker 命名卷)的内容和权限将隐藏 Dockerfile 所做的任何事情。Docker Hubmysql
镜像页面有“以任意用户身份运行”的说明,这将允许您使用与主机目录所有者匹配的用户 ID 运行容器;这些说明可能适用于您使用的备用图像,也可能不适用。
推荐阅读
- mysql - mysqldump 命令导出和导入表、视图、函数、程序
- r - NSE 挑战:突破 deparse(substitute(...))
- angularjs - 在控制器 AngularJs 中触发 ng-switch
- angular - 为什么在构造函数中初始化的成员变量在离子/角度的ngInit中未定义?
- android - 如何以编程方式设置整个应用程序的主题?
- java - 载运每个人的最少船只数量
- node.js - 反应 | 包.json | “代理”在 Google App Engine 中不起作用
- php - Laravel 代码仅在开发工具打开时才有效
- bash - 无法重定向所有自制桶过时的输出?
- c# - 如何在 ASP.NET Core 3.0 中调用 UseWebRoot