今天,daimajia推荐使用docker,其实一直都听过docker,但没用过,今天参考几篇文档把docker搞定了。果然起的速度比一般虚拟机快
这个总结主要是整理工作,大部分内容都在文章最后的文档里已经有说明。
我的电脑是ubuntu14.04 安装的话用包源进行安装
$ sudo apt-get install apt-transport-https $ sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 36A1D7869245C8950F966E92D8576A8BA88D21E9 $ sudo bash -c "echo deb https://get.docker.io/ubuntu docker main > /etc/apt/sources.list.d/docker.list" $ sudo apt-get update $ sudo apt-get install lxc-docker
我一开始下的fedora21,问题好多,比如yum源的问题,命令缺少的问题,搞到最后还是换成了ubuntu。ubuntu命令比较齐全,route,ifconfig等一些基本命令都已经有了。
接下来碰到一个问题:没有iptables,我安装完之后报错:
root@fc9caf09dbaa:/# iptables -nL iptables v1.4.21: can't initialize iptables table `filter': Permission denied (you must be root) Perhaps iptables or your kernel needs to be upgraded.
--privileged=true
docker run --privileged=true -t -i ubuntu_2 /bin/bash
下面这个是docker的网络拓扑图:
多台虚拟机都是连接在docker0这个虚拟交换机上,再通过port(这个名词好像应该叫interface)连接在宿主机上。这个拓扑不复杂。登录两台虚报机相互ping一下,检查是否连通。实践证明一切OK。
再检查是否可以连通外网,事实证明也可以,看来docker已经帮我们设置好数据包NAT转发了。
其实docker的拓扑可以修改,添加网桥,划分网络等一些二层的功能,但不具备三层添加路由器的功能。
比如,重新新建网桥并删除原网桥:
除了默认的 docker0 网桥,用户也可以指定网桥来连接各个容器。
在启动 Docker 服务的时候,使用 -b BRIDGE或--bridge=BRIDGE 来指定使用的网桥。
如果服务已经运行,那需要先停止服务,并删除旧的网桥。
$ sudo service docker stop $ sudo ip link set dev docker0 down $ sudo brctl delbr docker0
$ sudo brctl addbr bridge0 $ sudo ip addr add 192.168.5.1/24 dev bridge0 $ sudo ip link set dev bridge0 up
查看确认网桥创建并启动。
$ ip addr show bridge0 4: bridge0: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state UP group default link/ether 66:38:d0:0d:76:18 brd ff:ff:ff:ff:ff:ff inet 192.168.5.1/24 scope global bridge0 valid_lft forever preferred_lft forever配置 Docker 服务,默认桥接到创建的网桥上。
$ echo 'DOCKER_OPTS="-b=bridge0"' >> /etc/default/docker $ sudo service docker start
有一个比较恶心的就是,每次用完虚拟机如果更新过资源,记得退出时候把虚拟机commit一下,否则虚拟机不会保存下来。
命令:
$ sudo docker commit -m "Changed some resource" -a "myUsrname" 0b2616b0e5a8 newVirt其中各个参数含义如下:
Create a new image from a container's changes -a, --author="" Author (e.g., "John Hannibal Smith <hannibal@a-team.com>") -m, --message="" Commit message -p, --pause=true Pause container during commit
0b2616b0e5a8为刚退出container ID,可以通过docker ps -l -q获取
还有一个小问题就是每次输入都要sudo权限,神烦,可以通过添加用户组来解决:
# 添加docker用户组 $ sudo groupadd docker # 把自己加到docker用户组中 $ sudo gpasswd -a myusername docker # 重启docker后台服务 $ sudo service docker restart # 注销,然后再登陆 $ exit
再还有别的问题可以参考文档。以下为本文参考文档:
http://yeasy.gitbooks.io/docker_practice/content/image/create.html https://docker.cn/p/docker-15-tips/ http://ikarishinjieva.github.io/tachikoma-blog/post/2014-07-10-docker-some-error/
原文地址:http://blog.csdn.net/u011353822/article/details/40788627