docker在centos7下的一些坑

本文介绍了在CentOS Docker环境中安装MySQL遇到的权限错误及解决方案,包括如何处理挂载/var/lib/mysql时出现的permission denied问题,并提供了解决iptables错误的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在centos的docker上安装mysql提示chown mod /var/lib/mysql permission denied,通过下面的方法1解决。 

在centos上挂载数据卷,在容器内部访问数据卷的时候报permission denied出错,通过下面的方法1解决。

1.Centos7安全Selinux禁止了一些安全权限,导致mysql和mariadb在进行挂载/var/lib/mysql的时候会提示如下信息:

复制代码
1 [root@localhost mariadb]# docker run -d  -v ~/mariadb/data/:/var/lib/mysql -v ~/mariadb/config/:/etc/mysql/conf.d  -e MYSQL_ROOT_PASSWORD=‘123456‘ test01/mariadb
2 19c4aa113c610f53f9720ee806e3c918dd18d21dff75c043bdd6db60011a135d
3 [root@localhost mariadb]# docker ps -a
4 CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                     PORTS                                       NAMES
5 19c4aa113c61        test01/mariadb      "docker-entrypoint.sh"   4 seconds ago       Exited (1) 1 seconds ago                                               desperate_kelle
复制代码

logs命令查看,发现提示信息是:chown: changing ownership of ‘/var/lib/mysql/....‘: Permission denied

于是,解决方法有这么三个:

  1. 在docker run中加入 --privileged=true  给容器加上特定权限
  2. 关闭selinux
  3. 在selinux添加规则,修改挂载目录de

2. 有时候,在启动带有端口映射的容器时候,会出现如下提示:

1 iptables failed: iptables --wait -t nat -A DOCKER -p tcp -d 0/0 --dport 52080 -j DNAT --to-destination 192.168.20.22:52080 ! -i docker0: iptables: No chain/target/match by that name

这玩意,查来查去也没给解释,参考了下http://www.lxy520.net/2015/09/24/centos-7-docker-qi-dong-bao/,这篇文章说要修改iptables的文件,只是centos7有可能根本就没有这个文件,或者没有装iptables的服务,结果最后重启宿主机,恢复了,期间尝试使用firewall-cmd命令查询,和停止防火墙。此思路供后人参考。

标签:  docker
### 如何在 CentOS 7 上安装 Docker #### 卸载旧版本的 Docker 为了确保新版本能够正常工作,在开始之前建议先卸载任何已有的旧版 Docker 软件包。可以执行如下命令完成此操作: ```bash sudo yum remove docker \ docker-client \ docker-client-latest \ docker-common \ docker-latest \ docker-latest-logrotate \ docker-logrotate \ docker-engine ``` #### 设置仓库 更新 `yum` 包索引并配置稳定版存储库。 ```bash sudo yum install -y yum-utils sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo ``` #### 安装最新版本的 Docker Engine 通过下面的命令来安装最新的长期支持(LTS) 版本: ```bash sudo yum install docker-ce docker-ce-cli containerd.io ``` 这会自动处理依赖关系以及下载必要的组件[^1]。 #### 启动 Docker 并设置开机自启 启动服务并将它加入到系统引导过程中去,以便每次重启机器时都能自动运行。 ```bash sudo systemctl start docker sudo systemctl enable docker ``` 验证安装是否成功,可以通过查看 Docker 的状态来进行确认。 ```bash sudo systemctl status docker ``` 如果一切顺利的话,现在应该已经可以在 CentOS 7 中正常使用 Docker 了[^2]。 #### 验证安装 最后一步是测试镜像能否拉取和容器能否创建,以此检验整个过程是否有误。 ```bash sudo docker run hello-world ``` 上述命令将会尝试从 Docker Hub 下载官方提供的测试镜像,并展示一条欢迎消息表示安装无误[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值