Docker安装比较简单,没有太多前提条件,直接YUM就可以安装,当然你也可以选择编译安装,但是这就降低了安装包的可维护性。我们这里主要说YUM安装方式。
Docker只能安装在RHEL6(CentOS 6)以上版本且只能是64位操作系统。我们这里以CentOS 7为例并安装Docker。同时也推荐使用CentOS 7来使用或学习Docker。
检查内核版本:
![Snip20170325_9.png wKioL1jWLpnzA5pZAACdDj5BXSI006.png]()
查看发行版版本:
![Snip20170325_10.png wKiom1jWLrmAP3sVAAD_mSgHouU706.png]()
检查Device Mapper:
|
1
|
grep
device-mapper
/proc/devices
|
![Snip20170325_11.png wKioL1jWLvKSYIbIAABIYld7QJg984.png]()
或者使用
![Snip20170325_12.png wKiom1jWLx2SFSwyAABXdz44gw4528.png]()
如果没有可以使用下面的命令进行安装(Red Hat中默认会被安装)
|
1
|
yum -y
install
device-mapper
|
延伸知识:什么是device-mapper?其实这个是graph diver的一种(aufs、devicemapper、vfs等)。它本身就是Linux系统内核中支持的功能,它实现了虚拟块设备,路径是/dev/mapper,我们知道在Linux的LVM中可以做卷的快照、卷的RAID等,都是用device-mapper这个框架来实现的。看下图:
![Snip20170325_13.png wKioL1jWL3Sydl6lAAGl-252WoU527.png]()
脚本安装
运行下面的脚本,其实它会自动添加一个docker.repo源
|
1
|
curl -sSL http:
//acs-public-mirror
.oss-cn-hangzhou.aliyuncs.com
/docker-engine/internet
| sh -
|
![Snip20170325_14.png wKioL1jWMHeCAZvsAAHHC65cKkE980.png]()
查看,你发现这里的版本号不是之前看到那个1.12这种类型,在2017年docker的版本发生了重大变化,版本从13.x升级到17.03。Dcoker每三个月发布一个稳定版,17.03、17.06以此类推。
17.03.0.ce中的ce表示是社区版本,EE则是企业版本。
![Snip20170325_15.png wKiom1jWMLuAjvfFAAB5jqroSuo848.png]()
启动Docker守护进程:
|
1
|
systemctl start docker.service
|
![Snip20170325_17.png wKioL1jWMkHDfPFOAABCv2ULhpI887.png]()
可以使用下面的命令查看docker进程是否运行,Docker进程以root权限运行,用于处理普通用户无法完成的工作,比如加载文件系统。docker程序是Docker的客户端程序,同样也需要使用root来运行。
![Snip20170325_18.png wKiom1jWMnTylRKtAAF_f9tU1eA430.png]()
默认的PID和SOCK套接字位置在:/var/run/下面,Docker使用docker.sock这个Unix套接字来监听本地用户请求。也就是说默认情况下只能使用本地Docker客户端或者Docker API对Dokcer进程发起请求,因为默认使用了本地UNIX套接字,而不会监听任何网络端口,你使用netstate命令就会发现,找不到docker监听的网络端口,只能找到套接字。所以要想通过远程主机也可以连接,就需要开启一个监听端口。
![Snip20170325_19.png wKioL1jWMqvyKj6IAAHqgSnq3Uo240.png]()
配置Docker守护进程:
为了让远程可以连接到Docker需要开启监听端口,这里有2种方式,一个是临时生效直到Docker进程结束;另外一个是修改配置文件永久生效。
临时生效:
|
1
|
docker -H tcp:
//IP
:PORT -d &
|
让Docker进程在指定的IP和端口上监听,IP也可以写成0.0.0.0表示本机任何网络接口。那么客户端如果连接进来也需要使用-H来指定要连接的IP和端口。
如果启动进程时只写TCP的,那么你的本地连接将没有(也就是没有UNIX套接字),如果同时需要,则还需要指定套接字路径,我这里就使用了默认路径,你也可以写另外的路径。
|
1
2
3
4
|
docker daemon -H IP:PORT -H unix:
///var/run/docker
.sock -d &
dockerd -H 0.0.0.0:5555 -H unix:
///var/run/docker
.sock &
|
查看监听端口和套接字
|
1
|
netstat
-nap |
grep
docker
|
客户端远程连接方式如下:
|
1
|
docker -H IP:PORT COMMAND
|
永久生效:
修改Docker守护进程的配置文件,默认是/usr/lib/systemd/system/docker.service文件,修改参数添加如下。
含义是ExecStart的参数所设置的值将会被传递给dockerd命令用于启动守护进程。
![Snip20170325_22.png wKiom1jWOoCBV36BAAKoeh6C5o8756.png]()
重启服务,使用如下命令查看
|
1
2
|
systemctl start docker.service
ss -nap |
grep
docker
|
![Snip20170325_23.png wKioL1jWOuHgxIOzAALua991rtw057.png]()
其他命令:
查看Docker信息
查看Docker进程是否在运行
|
1
|
systemctl status docker.service
|
![Snip20170325_24.png wKiom1jWO1ywkCnGAAUVZtH-qvI277.png]()
查看Docker版本
![Snip20170325_25.png wKiom1jWO4LzkjQKAAE2Z478ra8132.png]()
连接Docker:
|
1
2
|
docker -H IP:PORT COMMAND
docker COMMAND
|
下面是查看本地有哪些镜像,2个命令效果相同,第一个命令是通过网络方式获取信息,第二个命令是通过本地套接字方式连接docker进程来获取信息。
![Snip20170325_26.png wKiom1jWO86xLQ17AACw4J0aHlA526.png]()
本文转自linuxjavachen 51CTO博客,原文链接:http://blog.51cto.com/littledevil/1863271,如需转载请自行联系原作者