Docker 笔记 安装

Docker的优势

Docker概念

最大的公司仓库是Docker Hub 国内的公开仓库是 Docker Pool

Docker 安装

On Windows

Docker是基于Linux内核的,所以要在windows上运行,需要一个轻量的虚拟机(vm), Docker官方有提供。 官方windows intallation: https://docs.docker.com/installation/windows/

安装运行之后,可以用ssh client连接 docker@127.0.0.1:2022 登陆.

默认容器的用户名和密码是 docker tcuser.

On CentOS

由于是CentOS 6.5版本,所以不能用_docker_而是_docker-io_(重名问题), 但如果是7的话,就可以直接_docker_.

$ yum install docker-io

On MacOS

去下载pkg包安装。

然后启动:

$ sudo service docker start

但是出问题了,通过

$ docker -d INFO[0000] +job serveapi(unix:///var/run/docker.sock)  
INFO[0000] WARNING: You are running linux kernel version 2.6.32-431.20.3.el6.x86_64, which might be unstable running docker. Please upgrade your kernel to 3.8.0. docker: relocation error: docker: symbol dm_task_get_info_with_deferred_remove, version Base not defined in file libdevmapper.so.1.02 with link time reference

提示升级内核。。。

遇到的一些问题:

手动把/var/run/docker.pid删除掉,重新sudo service docker start

docker.pid删除掉,升级device-mapper模块,然后再重启。

Docker会默认创建一个虚拟网卡docker0,出现这问题可能是创建虚拟网卡失败了。 由于阿里云虚拟机默认的网卡设置把172网段都给占了,所以解决办法有两个:

  1. 删除172网段的转发

route del -net 172.16.0.0 netmask 255.240.0.0

  1. 创建一个新的网卡,分配新的网段

    Stopping Docker and removing docker0

    $ sudo service docker stop $ sudo ip link set dev docker0 down $ sudo brctl delbr docker0 $ sudo iptables -t nat -F POSTROUTING

    Create our own bridge

    $ sudo brctl addbr bridge0 $ sudo ip addr add 192.168.5.1/24 dev bridge0 $ sudo ip link set dev bridge0 up

    Confirming that our bridge is up and running

    $ ip addr show bridge0 4: bridge0: 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

    Tell Docker about it and restart (on Ubuntu)

    $ echo 'DOCKER_OPTS="-b=bridge0"' >> /etc/default/docker $ sudo service docker start

    Confirming new outgoing NAT masquerade is set up

    $ sudo iptables -t nat -L -n ...Chain POSTROUTING (policy ACCEPT) target prot opt source destination
    MASQUERADE all -- 192.168.5.0/24 0.0.0.0/0

第一次Hello world

$ docker run hello-world

此时会下载hello-world image,并打印出 Hello from Docker. 信息。