docker有三个基本概念:镜像/容器/仓库
镜像:一个完整的root文件系统,但并非一个iso的打包文件,而是使用分层存储。构建镜像时,是一层一层的。新的镜像,也可以在原有镜像上添加新层。
容器:是镜像运行的实体。可以进行创建/删除,启动/停止等操作。容器是一个具有独立命名空间的进程,可以有自己的root fs,网络配置,用户。由于和宿主机系统隔离,在容器中封装运行的应用,相比宿主机更加安全。容器运行时,是在镜像上在创建一层容器存储层,其生命周期和容器一致。基于数据安全考虑,容器存储层不应存放应用数据,数据应存放在独立于容器存在的数据卷(相当于虚拟化中的持久盘)上。
仓库:一个集中存储,用于分发镜像到宿主机。一个 Docker Registry上可以有多个仓库,仓库以软件名命名,每个仓库下有多个子标签,对应软件的不同版本。Docker Registry是多用户环境。通过国内的一些加速器,可以访问公共镜像。自己搭建的是私有仓库。
版本:ce(community edition),免费,支持周期三个月。ee(enterprice edition),收费,一年支持。17.3版就是17年三月发布。ce和ee命名方式一致。
docker安装
在生产环境中离线安装比较好。docker-ce安装依赖于container-selinux。所以要先安装container-selinux。
rpm -ivh container-selinux-2.21-1.el7.noarch.rpm docker-ce-17.06.0.ce-1.el7.centos.x86_64.rpm systemctl start docker docker run hello-world
镜像加速器
vim /etc/docker/daemon.json
{ "registry-mirrors": [ "https://registry.docker-cn.com" ] }
创建私有registry
实际上就是从共有仓库上pull一个镜像下来
docker run -d -v /docker-repos -p 5000:5000 --restart=always --privileged=true --name registry registry:latest
创建一个nginx容器
首先宿主机上有一个fc挂过来的目录,比如/docker,然后里面建立nginx1目录。
docker run -d -v /docker/nginx2:/www --name nginx2 nginx
container设定name,设定持久盘挂载点,设定基础镜像,后台启动。
使用docker volume inspect my-vol可以查看该vol在宿主机中的位置。使用docker inspect nginx1可以看到mount一栏,巡察具体的挂载信息。