什么是Docker
开源
诞生于2013年初,基于Go语言的开源项目。
容器(沙盒)
基于Liunx的容器技术,Docker进一步优化容器。 让应用运行在容器中,不同的容器互相隔离又可以建立通信机制。 容器自身对自由的要求很低,远低于以往的虚拟机。
核心概念
- 镜像(Image)
- 容器(Container)
- 仓库(Repository)
镜像(Image)
类似虚拟机的镜像,镜像是创建Docker容器的基础,用户可以从仓库下载一个已经做好的应用镜像。 例如一个镜像包含了完整的Ubuntu操作系统,可以叫做Ubuntu镜像。
注意镜像是只读的
容器(Container)
容器类似于一个沙箱,Docker 利用容器来运行和隔离应用。可以理解成一个集装箱。
仓库(Repository)
仓库类似于我们存放代码的仓库,就是Docker几种存放镜像的场所。
官方仓库:Docker store。也可以自己搭建私人仓库,例如Harbor。
Docker 安装
https://docs.docker.com/engine/installation/
Docker 分两大版本 社区版Community Edition(CE)和企业版Enterprise Edition(EE)。
CE版本还分稳定版和每月发型版本。 稳定版每季度发型一版。
关于版本号,以前版本例如v1.12 。现在版本直接以发型月份命名,例如v17.09
常用指令
以下以CentOS 系统为例
启动docker 服务
$ sudo systemctl start docker
关闭docker服务
$ sudo systemctl stop docker
重启docker服务
$ sudo systemctl restart docker
查看docker运行状态
$ sudo systemctl status docker
开机自动启动docker服务
$ sudo systemctl enable docker
查看docker 详细信息
$ sudo docker info
获取镜像
$ sudo docker pull xxx
xxx 代表镜像名
查看镜像
$ sudo docker images
查看某镜像详细信息
$ sudo docker inspect xxxx
xxxx 代表 image id
查找镜像
$ sudo docker search xxx
用于查找远程仓库中的共享镜像,默认是docker hub
删除镜像
$ sudo docker rmi xxxx
xxx 可以为标签也可以为ID
创建并启动容器
$ sudo docker run -d --name xxx -p xxx:xxx imagesName
-d:不打印日志
--name :给容器命名
-p:设置主机端口和映射端口
停止容器
$ sudo docker stop imagesid
删除容器
$ sudo docker rm imagesid
查看运行中的容器
$ sudo docker ps
查看所有状态的容器
$ sudo docker ps -a
登录仓库
$ sudo docker login
登录私人仓库:
$ sudo docker login host
Rancher 介绍
官方文档:https://rancher.com/docs/rancher/v1.6/zh/
Harbor 介绍
GitHub地址:https://github.com/vmware/harbor
搭建过程:http://www.jianshu.com/p/7218e66440f9
创建镜像并上传私人仓:
创建镜像有三种方式:
- 基于已有的镜像的容器创建
- 基于本地模板导入
- 基于Dockerfile创建
居于已有的镜像的容器创建
$ docker commit -m "注释" -a "作者" -p 容器ID 新镜像名
-p 表示提交暂停容器运行
居于本地模板导入
$ sudo cat ubuntu-14.04-x86-minimal.tar.gz | docker import -ubuntu:14.04
居于Dockerfile创建
https://docs.docker.com/get-started/part2/
上传镜像到私人仓库
登录仓库:
$ docker login xx.xx.xx.xx标记Images
$ docker tag friendlyhello xx.xx.xx.xx/firstimage/friendlyhello上传:
$docker push xx.xx.xx.xx/项目/IMAGE[:TAG]