Spring Boot学习笔记(七) Docker

Docker

Docker是一个轻量级容器技术,类似于虚拟机技术(xen、kvm、VMware、virtual)。Docker是直接运行在当前操作系统(Linux)之上,而不是运行在虚拟机中,但是也实现了虚拟机技术的资源隔离,性能远远高于虚拟机技术。

Docker支持将软件编译成一个镜像(image),在这个镜像里做好对软件的各种配置,然后发布这个镜像,使用者可以运行这个镜像,运行中的镜像称之为容器,而容器的启动是非常块的。

类似与平时安装ghost操作系统,系统安装好后软件都有了,虽然不是一个东西,但是思路是类似的。

目前,各大主流云计算平台都支持Docker容器技术,包括阿里云、百度云平台(资源隔离通过Docker实现)、Cloud Foundy(和Spring 一家公司的,目前最成熟也最稳定)、HeroKu、DigitalOcean、OpenShift(Jboss的)、Apache Stratos、Apache MesOS(批处理平台,支持搭建基于Docker的云平台)、Deis(开源PaaS平台);连微软也会在下一个版本的Windows Server及其云平台Azure上支持Docker。这样看来Docker大有统一云计算的趋势。

云计算平台:

这里的云计算平台一般指的是PaaS(平台即服务),它是一个这样的云计算:平台提供了存储、数据库、网络、负载均衡、自动扩展等功能,你只需要将你的程序交给云计算平台就可以了。

你的程序可以是用不同的编程语言开发的,而使用的Docker的云计算平台就是用Docker来实现以上功能及不同程序之间的隔离的。

Docker便利:

目前主流的软件以及非主流的软件大部分都有人将其封装成Docker镜像,我们只需下载Docker镜像,然后运行镜像就可以快速获得已做好配置可运行的软件。

另外要特别指出的是,Docker并不是为开发测试方便而提供的小工具,而是可以用于实际生产环境的一种极好的部署方式。

Docker的安装:

因为Docker的运行原理是基于Linux的,所以Docker只能在Linux下运行。

但是这只能说明在真正的生产环节下,基于Docker的部署只能在Linux上,但是我们在开发测试的时候,Docker是可以在Windows以及Mac OS X系统下的,运行的原理是启动一个VirtualBox虚拟机,在此虚拟机里运行Docker。

1、Linux下安装

CentOS安装命令:
sudo yum update
sudo yum install docker

Ubuntu安装命令;
sudo apt-get update
sudo apt-get install docker.io

安装完之后运行Docker容器:
systemctl start docker

运行系统引导时启用 docker,命令:
systemctl enable docker

核对一下 docker 版本:
docker version

这里写图片描述

Docker常用命令及参数

1、Docker镜像命令

基于Docker镜像是可以自己编译的,我们将在之后讲解如何编译自己的Docker镜像,这里我们讲述与Docker镜像操作相关的命令。

通常情况下,Docker的镜像都放置在Docker官网的Docker Hub上,地址是https://registry.hub.docker.com

(1)Docker镜像检索
除了可以在https://registry.hub.docker.com网站检索镜像以外,还可以用下面命令检索:

docker search 镜像名

例:检索Redis 输入:
docker search redis
这里写图片描述

(2)镜像下载
下载镜像通过下面命令实现:

docker pull 镜像名

下载Redis镜像,运行:
docker pull redis

(3)镜像列表
查看本地镜像列表
docker images

这里写图片描述

其中REPOSITORY是镜像名;TAG是软件版本,latest为最新版;IMAGE ID是当前镜像的唯一标识;CREATED是当前镜像创建时间;SIZE是当前镜像大小。

(4)镜像删除
删除指定镜像通过下面命令:
docker rmi image-id

删除所有镜像通过下面命令:
docker rmi $(docker images -q)

2、Docker容器命令:

(1)容器基本操作

最简单的运行镜像为容器的命令如下:
docker run –name container-name -d image-name

运行一个容器只要通过Docker run命令即可实现,其中,–name参数是为容器取得名称;-d表示detached,意味着执行完这句命令后控制台将不会被阻碍,可继续输入命令操作;最后的image-name 是要是要哪个镜像来运行容器。

例:运行一个Redis容器:
docker run –name test-redis -d redis
-d表示在后台运行。
这里写图片描述

Docker会为我们的容器生成唯一的标识

(2)容器列表

通过下面命令,查看运行中的容器列表
docker ps
这里写图片描述

通过下列命令可查看运行和停止状态的容器:
docker ps -a
这里写图片描述

其中CONTAINER ID 是在启动的时候生成的ID;IMAGE是该容器使用的镜像;COMMAND是容器启动时调用的命令;CREATED是容器创建时间;STATUS是当前容器的状态;PORTS是容器系统所使用的端口号,Redis默认使用6379端口;NAMES是刚才给容器定义的名称。

(3)停止和启动容器

3.1)停止容器

停止容器通过下面的命令:
docker stop container-name/container-id

我们可以通过容器名称或者容器id来停止容器,以停止上面的Redis容器为例:
docker stop test-redis

此时运行中的容器列表为空。查看所有容器命令,可看出此时的STATUS为退出。

3.2)启动容器

启动容器通过下面命令:
docker start container-name/container-id

再次启动我们刚才停止的容器:
docker start test-redis

(3.3)端口映射
Docker容器中运行的软件所使用的端口,在本机和本机的局域网是不能访问的,所有我们需要将Docker容器中的端口映射到当前主机的端口上,这样我们在本机和本机所在的局域网就能够访问

Docker的端口映射是通过一个-p参数来实现的。我们以刚才的Redis为例,映射容器的6379端口到本机的6378端口,命令如下;
docker run -d -p 6378:6379 –name port-redis redis

目前在Windows下运行的Docker其实是运行在VirtualBox虚拟机中的,即我们当前的本机并不是我们当前的开发机器,而是VirtualBox虚拟机,所以我们还需要再做一次端口映射,将VirtualBox虚拟的端口映射到当前的开发机器。(在之后实际部署软件的时候进行演示)

(3.4)删除容器
删除单个容器,可通过下面的命令:
docker rm container-id

删除所有容器,可通过下面的命令:
docker rm $(docker ps -a -q)

(3.5)容器日志
查看当前容器日志,可通过下面的命令:
docker logs container-name/container-id

我们查看下上面一个容器的日志
docker logs test-redis
这里写图片描述

(3.6)登录容器
运行中的容器其实是一个功能完备的Linux操作系统,所以我们可以像常规的系统一样登录并访问容器。

我们可以使用下面命令,登录访问当前容器,登录后我们可以在容器中进行常规的Linux系统操作命令,还可以使用exit命令退出登录。

docker exec -it container-id/container-name bash

(4)异常处理

若出现命令不能执行的错误,则直接使用下面的命令登录VirtualBox虚拟机执行命令:
boot2docker ssh

猜你喜欢

转载自blog.csdn.net/zxzzxzzxz123/article/details/70670502
今日推荐