目录
Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。
一个完整的Docker有以下几个部分组成:
1.docker引擎(Docker Engine)
docker引擎可理解为一个运行在服务器上的后台进程,也称之为Docker Daemon,还有很多人称它为Docker服务,因为它本质上就是一个服务,只要我们启动该服务,我们就能随时使用它。我们可以通过Docker命令客服端发送相关Docker命令,并与Docker引擎进行通信。
2.Docker客户端(Docker Client)
实际上Docker客户端有两种,一种是我们刚提到的Docker命令客户端,只要我们打开命令终端窗口,并输入相关Docker命令,就能操作Docker引擎。另一种Docker客户端是REST API客户端,我们本次是将重点放在Docker命令客服端方式上。
3.Docker镜像(Docker Images)
Docker镜像有点类似于我们曾经使用的光盘,光盘上刻录了数据,只要我们将光盘放入光驱中,就能读取光盘中的数据,同样。我们只需要获取Docker镜像(光盘),就能将其载入到Docker引擎(光驱)中,并运行Docker镜像中的程序。一般情况下,我们首先需要将程序打包到Docker镜像中,随后才能将Docker镜像交给其他人使用。
4.Docker容器(Docker Containers)
当我们获取到Docker镜像以后,可以随时运行该Docker镜像,此时便会启动一个Docker容器,该容器将运行镜像中封装的程序。如果我们将Docker镜像理解为java类的话,那么Docker容器就相当于java实例,在同一个Docker镜像上理论上可运行无数个Docker容器,只要机器性能足够好。
Docker是通过在底层封装了Linux容器技术(LXC)来实现的,换句话说,Docker没有创造出任何新的技术,仅仅是“新瓶装老酒”而已,那么Docker究竟要哪些特点。
1.快速运行
启动虚拟机需要几分钟,而启动Docker只要几秒钟,开发效率瞬间提升了。
2.节省资源
Docker容器运行在Docker引擎上,可以直接利用宿主机资源无需占用过多的系统开销。
3.便于交互
传统的软件交互物是程序,而Docker时代交互物却是镜像,镜像不仅封装了程序,还包含了运行程序所需的相关环境。
4.容易管理
可以通过Docker客户端自己操作Docker引擎,非常方便的管理Docker镜像与容器
上图中包含了三部分:
(1)Client:
表示Docker客服端,可通过docker build命令创建Docker镜像;可通过docker pull命令拉取Docker镜像;可通过docker run命令运行Docker镜像,从而启动Docker容器。
(2)DOCKER_HOST:
表示运行Docker引擎的宿主机,其中包括Docker daemon后台进程,可通过该进程来创建Docker镜像,并在Docker镜像上启动Docker容器。
(3)Registry:
表示Docker官方镜像注册中心,其中包含了大量的Docker镜像仓库,可通过引擎拉取所需的Docker镜像到宿主机上。
Docker官方建议我们将Docker引擎运行在Linux操作系统上,当然也可以运行在MacOSX或Windows操作系统上,只是不推荐在生产环境下使用而已。
对于Linux而言,可以直接运行Docker引擎。
对于Mac OSX或Windows而言,需要通过Linux VM(虚拟机软件)才能运行Docker引擎。
1.在CentOS中安装Docker
在Linux操作系统上安装docker,需要同时满足一下几个条件:
(1)CPU必须为64位;
(2)Linux内核必须在3.10版本以上。
PS:可以通过uname -a命令获取以上信息
步骤1.用root权限更新yum包
为了安装最新版本的Docker,我们需要使用如下命令更新yum包
$ su root
$ yum update
更新成功输入y继续
步骤2.添加yum的Docker仓库包,命令如下:
tee /etc/yum.repos.d/docker.repo <<-'EOF'
[dockerrepo]
name=Docker Repository
baseurl=https://yum.dockerproject.org/repo/main/centos/7/
enabled=1
gpgcheck=1
gpgkey=https://yum.dockerproject.org/gpg
EOF
ps:上面这几条命令是一条一条的添加不是全部写在一起
步骤3.安装Docker引擎,命令如下:
yum install docker-engine
步骤4.启动Docker引擎,命令如下:
service docker start
步骤5.查看Docker引擎版本号,命令如下:
docker version
或者查询安装过的包
yum list installed | grep docker
镜像与容器是Docker引擎的两大核心概念,我们将以Docker命令客户端方式对这些概念进行描述。
Docker镜像常用操作
1.列出镜像,命令如下:
docker images
执行以上命令后,大家会看到一个空列表,因为我们本地目前还没有任何镜像,下面我们将从Docker Hub镜像注册中心拉取一个CentOS镜像。
2.拉取镜像,命令如下:
docker pull centos
执行以上命令后,Docker客户端将连接Docker Hub,并自动从CentOS镜像仓库中下载最新版本的CentOS镜像。下载完成后,可再次通过docker images命令列出镜像。
以上表格中包含5个字段,意义如下:
(1)REPOSITORY:表示镜像仓库的名称,由于我们拉取的是centos镜像,该镜像存放在同名的centos镜像仓库中。
(2)TAG:表示镜像的标签,一般情况下带有具体的版本或别名,此处的latest表示最新版本。
(3)IMAGE ID:表示镜像的标识符,称为“镜像ID”,具备唯一性,此处看到是一串12位的字符串,实际上它是64位完整镜像ID的缩略表达形式。
(4)CREATED:表示镜像创建时间,使用离现在的时间来表示
(5)SIZE:表示镜像字节大小,可见当亲centos镜像只有200MB,它实际上是一个CentOS操作系统的精简版。
ps:如果我们不记得镜像仓库的名字也没关系,因为可以在Docker
Hub中通过镜像关键字进行搜索,当然也可以通过Docker命令的方式进行搜索。
3.搜索镜像,命令如下:
docker search centos
以上表格中包含5个字段意义如下:
(1)NAME:表示镜像仓库的名称
(2)DESCRIPTION:表示镜像仓库的描述,此处只显示了一部分描述。
(3)STARS:表示镜像仓库的收藏数,用户可在Docker Hub上对镜像仓库进行收藏,一般可通过该数字体现镜像仓库受欢迎的程度。
(4)AUTOMATED:表示是否自动构建镜像仓库,用户可以将自己的Docker Hub绑定到GitHub或Bitbucket账号上,当代码提交后,可自动构建镜像仓库
4.导入与导出镜像,命令如下:
导出CentOS镜像为一个tar文件(镜像包),若不指定导出的tar文件路径,则导出的centos.tar文件在当前目录上;
docker save centos > centos.tar
导出的centos.tar镜像包文件可随时在另一台Docker机器上导入,命令如下:
docker load < centos.tar
当我们获取了CentOS镜像后,就能基于该镜像启动相应的容器,下面我们学习一些容器的常用操作
Docker容器常用操作
1.创建并启动容器,命令如下:
使用一下命令在运行CentOS镜像,从而创建并启动CentOS容器;
docker run -i -t centos /bin/bash
以上命令:
(1)-i 选项:表示启动容器后,打开标准收入设备(STDIN),可使用键盘进行输入.
(2)-t 选项:表示启动容器后,分配一个伪终端(pseudo-TTY),将与服务器建立一个会话。
(3)centos参数:表示需要运行的镜像名称,标准格式为centos:latest,若为latest版本,则可省略。
(4)/bin/bash参数:表示云行容器中的bash应用程序,因为我们此时并不需要运行其他程序,只想进入到容器中。
需要注意的是,该命令实际上首先从本地获取CentOS镜像,若本地没有此镜像,则从DockerHub拉取CentOS镜像并放入本地,随后才能根据CentOS镜像创建并启动CentOS容器。
命令符包括以下三部分:
(1)root:表示当前登录的用户名,为超级管理员,默认情况下,都是以超级管理员身份进入Docker容器的。
(2)1f93f2f6fb05 :表示容器的标识符,一般称为“容器Id”,具备唯一性,此处看到的是一串12位的字符串,实际上它是64位完整镜像Id的缩略表达形式。
(3)/ :表示当前路径,即输入pwd命令所返回的结果。
我们可以在#符合后输入Linuxmingl,可执行exit命令退出容器。
2.列出容器,命令如下:
docker ps
3.进入容器,命令如下:
使用一下命令需指定容器Id或容器名称,只能进入运行中的容器
docker attach 197beb401e65
4.执行命令,命令如下:
docker exec -i -t 197beb401e65 ls -l
5.停止容器,命令如下:
需指定容器ID或名称
docker stop 197beb401e65
6.终止容器,命令如下:
需指定容器ID或名称
docker kill 197beb401e65
7.启动容器,命令如下:
需指定容器ID或名称
docker start 197beb401e65
8.启动容器,命令如下:
需指定容器ID或名称
docker restart 197beb401e65
9.启动容器,命令如下:
需指定容器ID或名称
docker rm 197beb401e65
10.导入与导出容器,命令如下:
使用一下命令导出一个容器为tar文件(容器包)
docker export 197beb401e65 > centos.tar
导出的cento.tar容器包随时可在另一台Docker机器上导入为镜像,命令如下:
docker implrt foo.tar huangyong/centos:latest
Docker客户端命令共有40多个,我们可通过一下命令查看Docker所有的命令及其描述:
docker help