您的位置:首页 > 运维架构 > Docker

Docker基础入门实战

2018-12-04 21:15 309 查看

Docker(应用容器引擎)入门教程

目录

  • docker简介
  • docker的特点
  • docker系统架构
  • 安装docker
  • 如何使用docker
  • docker容器常用操作
  • docker命令汇总
  • 手工制作java镜像
  • 使用dockerfile构造镜像
  • 使用dockerRegistry管理镜像
  • Spring Boot与docker整合
  • 小结

docker简介

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的特点

Docker是通过在底层封装了Linux容器技术(LXC)来实现的,换句话说,Docker没有创造出任何新的技术,仅仅是“新瓶装老酒”而已,那么Docker究竟要哪些特点。

1.快速运行
启动虚拟机需要几分钟,而启动Docker只要几秒钟,开发效率瞬间提升了。

2.节省资源
Docker容器运行在Docker引擎上,可以直接利用宿主机资源无需占用过多的系统开销。

3.便于交互
传统的软件交互物是程序,而Docker时代交互物却是镜像,镜像不仅封装了程序,还包含了运行程序所需的相关环境。

4.容易管理
可以通过Docker客户端自己操作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官方建议我们将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命令客户端方式对这些概念进行描述。

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


执行以上命令后,将输出带有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 命令汇总

Docker客户端命令共有40多个,我们可通过一下命令查看Docker所有的命令及其描述:

docker help





内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: