查看原文
其他

有问有答 | 容器精华问答,如何玩转容器服务?

CSDN云计算 CSDN云计算 2019-02-15

戳蓝字“CSDN云计算”关注我们哦!


容器这个词,当你第一眼看它或许脑子里是这东西:瓶瓶罐罐、装水、装其他东西的玩意。不管是什么,总的来说,容器给人第一印象就是——“装”。容器技术作为近两年热门的话题,不管是在运维还是开发上,给我们带来了很多方便的地方,节约了不少成本。今天,问答君就为大家带来有关容器的精华问答!


1

Q:一直想用Docker,但是一直又怕影响到服务器上目前的设置,有几个入门的问题:

1.安装Docker后,目前的网站会有影响么?是会当成一个默认的容器么?2.只有一个网卡有外网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的。



5

Q:Docker给每一个启动的Container指定一个IP,  这个如何做? pipework 貌似只能在Ubuntu下有效,求CentOS下的用法?


A:Centos6.5的内核已经支持network namespace, 但如果安装的iproute版本过低,不支持ip nets 命令。所以首先要将iproute升级 至 iproute-2.6.32-130.el6ost.netns.2.x86_64,方法如下:

# yum install http://rdo.fedorapeople.org/rdo-release.rpm

# yum install iproute

然后,给每个Container分配一个IP,宿主机配网桥,如:

/etc/sysconfig/network-scripts/ifcfg-eth1

DEVICE='eth1'

ONBOOT=yes

BRIDGE=br1

/etc/sysconfig/network-scripts/ifcfg-br1

DEVICE='br1'

TYPE=Bridge

BOOTPROTO=staticONBOOT=yesIPADDR='xxx'

NETMASK='xxx'

GATEWAY='xxx'

/etc/init.d/network  restart

使用例子:

TESTID=$(docker run -d bangli/centos-sshd)

./pipework br1 $TESTID  10.10.1.10/24@10.0.0.1

其中,子网掩码和默认网关需要根据实际情况指定。

小伙伴们冲鸭,后台留言区等着你!

关于容器方面的知识还有哪些问题?快来后台留言,我们可以请来专家详细为您解答;

后台留言告诉我,您对哪方面问题感兴趣,好让我们可以根据您提供的话题,有针对性的进行问答;

当然,我们也为大家提供了展示自己的平台,欢迎大家搜集更多问答,投稿给我们吧!


----------------    --------------


1.微信群:

添加小编微信:color_ld,备注“进群+姓名+公司职位”即可,加入【云计算学习交流群】,和志同道合的朋友们共同打卡学习!


2.征稿:

投稿邮箱:liudan@csdn.net;微信号:color_ld。请备注投稿+姓名+公司职位。



推荐阅读


点击“阅读原文”,打开 CSDN App 阅读更贴心!


喜欢就点击“好看”吧!

    您可能也对以下帖子感兴趣

    文章有问题?点此查看未经处理的缓存