出现的问题:
docker run 加上 -v 参数之后,容器就一直是 restarting 状态,去掉 -v 参数就可以正常运行
查找问题:
使用 docker logs 'containerId'
这个containerId,就是docker run之后返回的containerId
可以看到,是权限拒绝的问题
解决问题:
docker run时加上参数 :加上--privileged=true
例如:
1
|
docker run -dit -e MYSQL_ROOT_PASSWORD=123456 --name saasdev-mysql --restart always - v /home/data/mysql : /var/lib/mysql --privileged= true -p 3308:3306 mysql:5.6 |
问题成功解决,容器正常启动了
一点解释:
1
|
--privileged= true |
使用该参数,container内的root拥有真正的root权限。
否则,container内的root只是外部的一个普通用户权限。
privileged启动的容器,可以看到很多host上的设备,并且可以执行mount。
甚至允许你在docker容器中启动docker容器
补充:docker --restart=always 参数 docker重启容器自动重启
创建容器时添加参数 --restart=always 后,当 docker 重启时,容器自动启动。
使用方法:
1
|
docker container update --restart=always 容器名字 |
操作实例如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
|
[root@localhost mnt] # docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 46cdfc60b7a6 nginx "nginx -g 'daemon ..." About a minute ago Up 42 seconds 80 /tcp n3 79d55a734c26 nginx "nginx -g 'daemon ..." About a minute ago Up 42 seconds 80 /tcp n2 f7b2206c019d nginx "nginx -g 'daemon ..." About a minute ago Up 46 seconds 80 /tcp n1 [root@localhost mnt] # docker container update --restart=always n1 n1 [root@localhost mnt] # systemctl restart docker [root@localhost mnt] # docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 46cdfc60b7a6 nginx "nginx -g 'daemon ..." 2 minutes ago Exited (0) 5 seconds ago n3 79d55a734c26 nginx "nginx -g 'daemon ..." 2 minutes ago Exited (0) 5 seconds ago n2 f7b2206c019d nginx "nginx -g 'daemon ..." 2 minutes ago Up 2 seconds 80 /tcp n1 |
以上为个人经验,希望能给大家一个参考,也希望大家多多支持服务器之家。如有错误或未考虑完全的地方,望不吝赐教。
原文链接:https://blog.csdn.net/henghenghalala/article/details/85068716