容器这个词,当你第一眼看它或许脑子里是这东西:瓶瓶罐罐、装水、装其他东西的玩意。不管是什么,总的来说,容器给人第一印象就是——“装”。容器技术作为近两年热门的话题,不管是在运维还是开发上,给我们带来了很多方便的地方,节约了不少成本。今天,小盟就为大家带来有关容器的精华问答!
1.Q:一直想用Docker,但是一直又怕影响到服务器上目前的设置,有几个入门的问题:
①.安装Docker后,目前的网站会有影响么?是会当成一个默认的容器么?②.只有一个网卡有外网IP,多个容器可以都用这个网卡对外提供Web服务?
A:默认就可以,至于默认是什么模式没注意。都是同卡,对现有服务没有任何影响。Docker用虚拟网卡代理自己的所有容器,容器内暴露的端口映射物理机端口即可。比如,容器内tomcat开在8080,容器启动的时候18080:8080,则物理机的18080端口会被Docker的代理转发到容器8080。也就是多Web需要占用Docker个物理机端口。
2.Q:执行docker ps时报错:
Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Get http://%2Fvar%2Frun%2Fdocker.sock/v1.26/containers/json?all=1: dial unix /var/run/docker.sock: connect: permission denied,如何解决?
A:这是权限的问题,执行时添加sudo,例:sudo docker ps ,只要是非root用户在执行docker时都要添加sudo。
3.Q:启动MySQL设置了参数 --restart=always。前些天,MySQL服务可以正常使用。现在不能连接了。查看MySQL容器,status一直是 Restarting (1) 20 seconds ago。当20s走到1分钟时, ports会显示1秒中0.0.0.0:3306-->3306。然后就又进入重启等待过程。不知道是哪里导致了这个问题?
$ sudo docker container ls
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
c59ba37a2508 mysql:5.6 "docker-entrypoint.s…" 4 weeks ago Restarting (1) 20 seconds ago mysql5
A:通常就是由于修改了一些MySQL的配置文件,或者可能是一些其他的配置,所以导致容器无法启动。用docker logs [容器id] 查看确认一下。如果是需要修改文件的话,需要在主机下重新写一个配置文件,然后复制到容器相对应目录下的文件做替换,一般是:
cp x.cnf /data/docker/volumes/[容器id]/_data /xxx/xxx
4.Q:Docker容器内ifconfig修改IP后无法上网,例如172.17.0.2改为172.17.0.3,无法上网,掩码和广播都改过来了,但还是不行?
A:如果是通过NAT模式启动的话, 容器内的网络会走宿主机,如果直接更改IP地址,因为不是docker deamon分配的,肯定走不到物理机的网卡,也就会出现无法上网的现象。如果改用bridge模式,是应该可以直接更改IP的。
常见容器docker问答相关文章阅读: