我的环境

目前Docker支持大部分的主流平台,如Ubuntu、Cent OS、Windows、Mac OS等。由于我习惯使用CentOS 7,所以本次实验环境是基于Cent OS 7 64位。
特别说明:刚安装好的系统,使用前,建议执行yum -y update命令,对系统进行更新。

安装Docker

CentOS 7中,源中已经内置Docker,可以直接使用yum安装。

1
yum -y install docker

安装成功后,启动并加入开机自动启动。

1
2
systemctl start docker
systemctl enable docker

走过的坑
在虚拟机安装之前,同时也在阿里云中centOS 7中尝试安装,遇到Docker无法启动问题,原因在于,Docker运行时需要创建虚拟网卡(就像Vmware中有VMnet1、VMnet8一样),但是默认情况下,阿里云已经占用了私有IP地址段,故需要删除。

1
route del -net 172.16.0.0 netmask 255.240.0.0

这样,就可以正常启动Docker。查看网卡信息如下:

1
2
3
4
5
6
7
8
9
[root@localhost ~]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN
....
4: docker0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP
link/ether 02:42:a2:21:be:fa brd ff:ff:ff:ff:ff:ff
inet 172.17.42.1/16 scope global docker0
valid_lft forever preferred_lft forever
inet6 fe80::42:a2ff:fe21:befa/64 scope link
valid_lft forever preferred_lft forever

多了一个docker0网卡,且ip段为172.17.0.0。

下载镜像

安装完Docker后,需要下载镜像。那什么是镜像呢?简单的来说,就是docker可以启动运行的文件,举个例子,就像我们安装好虚拟机的文件,拷贝给别人在别人的虚拟机中也能打开。
镜像在哪里,如何获取?镜像放置在一个镜像库中,默认镜像库是Docker Hub,这个镜像库是Docker公司负责维护的公共仓库,当然也可以选择其他镜像仓库,如公司的私有仓库、国内维护的仓库dockerpool。
下载镜像

1
2
3
1、docker pull ubuntu
2、docker pull ubuntu:14.04
3、docker pull dl.dockerpool.com:5000/ubuntu:14.04

其中14.04是镜像的标签,如果忽略,默认为latelast。
走过的坑
由于Docker版本升级,当从非官方源下载时,为了安全起见,需要进行手工认证下载源的安全性。
在CentOS 7中,Docker的配置文件/etc/sysconfig/docker
INSECURE_REGISTRY处修改,添加自己的源,并去掉注释。如:

1
INSECURE_REGISTRY='--insecure-registry dl.dockerpool.com:5000'

重新启动docker服务,便可以在非官方源下载了。

1
2
3
4
systemctl restart docker
systemctl stop docker
systemctl start docker
systemctl status docker

容器新建、启动、终止

下载好镜像只有,可以查看本地的镜像。

1
2
3
4
[root@localhost ~]# docker images
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
dl.dockerpool.com:5000/ubuntu 14.04 5506de2b643b 13 months ago 199.2 MB
dl.dockerpool.com:5000/ubuntu latest 0b310e6bf058 13 months ago 126.6 MB

指定镜像,创建容器。容器我们可以简单的认为是我们通过虚拟机文件启动的一台虚拟机。

1
2
[root@localhost ~]# docker create -it dl.dockerpool.com:5000/ubuntu:14.04
130b9ee0454e81b3fa62deec189c33b5be295035dbeda9f2ad93578e385e1993

其中我们需要指定完整的镜像名称以及标签。
创建好的容器并不会运行,而是处于停止状态。

1
2
3
[root@localhost ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
130b9ee0454e dl.dockerpool.com:5000/ubuntu:14.04 "/bin/bash" About a minute ago Created evil_bohr

启动指定容器,需要指定容器ID,当然可以简写,只要可以唯一识别即可。

1
2
3
4
5
[root@localhost ~]# docker start 130
130
[root@localhost ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
130b9ee0454e dl.dockerpool.com:5000/ubuntu:14.04 "/bin/bash" 3 minutes ago Up 6 seconds evil_bohr

终止指定容器

1
2
3
4
5
[root@localhost ~]# docker stop 130
130
[root@localhost ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
130b9ee0454e dl.dockerpool.com:5000/ubuntu:14.04 "/bin/bash" 5 minutes ago Exited (0) 6 seconds ago evil_bohr

除了这几种最基础的操作以外,还有许多操作需要我学习,我也会不断学习,不断总结。