docker 多物理机容器_有问有答|容器精华问答,如何玩转容器服务?

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

affe65888ec3b8215109215f699080e6.png

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

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

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

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

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

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

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

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

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

2.征稿:

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值