一、软件版本
操作系统:Centos 7.0
docker的官网 : https://www.docker.com/community-edition#/download
高速下载地址:http://get.daocloud.io/
二、开始安装:
http://www.daocloud.io/
由于国内的源比较卡,所以我们推荐使用daocloud的方式,注册安装即可:
[root@test ~]# curl -sSL https://get.daocloud.io/docker | sh
#为了快速拉取镜像,还要接入daocloud.因为在国内通常拉取Docker hub的镜像都是被墙的。
[root@test ~]# curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s http://681a96df.m.daocloud.io
响应:
docker version >= 1.12
{"registry-mirrors": ["http://681a96df.m.daocloud.io"],
"live-restore": true
}
Success.
You need to restart docker to take effect: sudo systemctl restart docker
##实际上是相关配置写入了,
[root@test ~]# cat /etc/docker/daemon.json
{"registry-mirrors": ["http://681a96df.m.daocloud.io"],
"live-restore": true
}
##指定去这个仓库下,因为默认是去官方的Docker hub下载镜像的。
然后重启docker:
[root@test ~]# systemctl restart docker
修改配置文件
[root@test ~]# vim /lib/systemd/system/docker.service
#原:ExecStart=/usr/bin/dockerd -H fd:// $DOCKER_OPTS
改为:ExecStart=/usr/bin/dockerd -H unix:///var/run/docker.sock -H tcp://0.0.0.0:2375 ##tcp
修改后要重加载docker
[root@test ~]# systemctl daemon-reload
[root@test ~]# systemctl restart docker
2、我们也可以看一下到底docker 读取的是哪个配置文件,不同版本可能不一样:
[root@test ~]# systemctl status docker
● docker.service - Docker Application Container Engine
Loaded: loaded (/usr/lib/systemd/system/docker.service; disabled; vendor preset: disabled)
Active: active (running) since Sat 2017-03-11 16:43:51 CST; 1min 11s ago
Docs: https://docs.docker.com
###这里我们知道centos读取的是/usr/lib/systemd/system/docker.service这个文件。启动的相关参数,后面再慢慢开始
Tcp:
Vim /usr/lib/systemd/system/docker.service
[root@master ~]# docker -H 192.168.63.200:2375 images
如果跨机访问不到,需要关闭防火墙
彻底关闭防火墙:
[root@test ~]# sudo systemctl status firewalld.service
[root@test ~]# sudo systemctl stop firewalld.service
[root@test ~]# sudo systemctl disable firewalld.service
三、运行docker版的hello world
要运行docker版本的hello world,那么自然需要先获取镜像,注意到docker官方给我们提供了一个镜像中心:https://hub.docker.com/,一般公司内部也会给我们提供一个公司专用的镜像中心。
docker pull : 从镜像仓库中拉取或者更新指定镜像,镜像除了名称之外,还有一个tag的概念,如果不提供tag,就是表示latest。
docker images : 列出本地镜像。
不可不知的docker网络
在实际开发中,要知道我们的服务,一般是在某个端口进行监听,一直在后台运行的,那么就涉及到宿主机/宿主机中的容器它们之间的网络问题了。
docker的网络类型分3种:bridge,host,none。(这里和vmware的网络设置部分非常相似)
bridge,就是桥接模式,docker容器会有自己独立的network namespace,也就是会有虚拟的ip和port,那么如何通过宿主机来访问容器内部的端口呢?这里就涉及到一个技术:端口映射了。
host,不会分配独立的network namespace,而是和宿主机进行共用网络。
none,不使用网络,docker容器不会和外界进行通讯。