首先我们先了解一下什么是虚拟化
在计算机中,虚拟化(英语:Virtualization)是一种资源管理技术,是将计算机的各种实体资源,如服务器、网 络、内存及存储等,予以抽象、转换后呈现出来,打破实体结构间的不可切割的障碍,使用户可以比原本的组态更好 的方式来应用这些资源。这些资源的新虚拟部份是不受现有资源的架设方式,地域或物理组态所限制。一般所指的虚 拟化资源包括计算能力和资料存储。
在计算机中,虚拟化(英语:Virtualization)是一种资源管理技术,是将计算机的各种实体资源,如服务器、网 络、内存及存储等,予以抽象、转换后呈现出来,打破实体结构间的不可切割的障碍,使用户可以比原本的组态更好 的方式来应用这些资源。这些资源的新虚拟部份是不受现有资源的架设方式,地域或物理组态所限制。一般所指的虚 拟化资源包括计算能力和资料存储。
那什么是docker呢?
docker就是容器的意思,嗯~ 其实说到底,docker和虚拟机的区别就在于,docker占用的体积小,然后启动速度还快,它本身作为一个容器,可以封装很多东西,比如要安装redis,docker可以直接拉取镜像,然后创造一个容器,让redis运行起来,省去了安装redis的步骤,其实这个只是docker的一小部分优越性,docker更好地是为了让项目交付的时候更好地上线,它作为一个容器可以很好地统一版本。
Docker的安装
1.先将yum包更新到最新,这个是在linux系统下的
yum update
2.安装需要的软件包, yum-util 提供yum-config-manager功能,另外两个是devicemapper驱动依赖的
yum install -y yum-utils device-mapper-persistent-data lvm2
3. 设置yum源为阿里云
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/dockerce.repo
4.安装docker
yum -y install docker-ce
5.安装过后可以查看docker的版本
docker -v
设置USTC的镜像
ustc是老牌的linux镜像服务提供者了,还在遥远的ubuntu 5.04版本的时候就在用。ustc的docker镜像加速器速度很快。
我们先创建一个路径
mkdir -p /etc/docker
vim /etc/docker/daemon.json
然后输入以下内容
{
"registry-mirrors": ["https://docker.mirrors.ustc.edu.cn"]
}
至此docker的安装就已经完成了
我们学习一下docker的基本命令,子月的docker是安装在centos7版本下的,centos的版本不一样,一些命令是会有一些差距的,这个曾经让子月很头疼。大家也要注意。
Docker的启动
systemctl start docker
Docker的停止
systemctl stop docker
Docker的重启
systemctl restart docker
Docker镜像的相关命令
查看镜像
docker images
假如你需要一个redis的镜像就可以进行搜索
docker search redis
这里我们就以redis的镜像和容器启动为例子进行演示,之前也说过要出一个redis的安装的,这里我们把docker和redis结合在一起。
redis镜像的拉取,其余镜像也是同样的命令。
// 当不指定版本的时候,默认拉取最后的版本
docker pull redis
删除镜像
docker rmi redis
对吧,现在我们有了镜像,如果要使用redis,镜像是要和容器相结合的。
容器的相关命令
//查看正在运行的容器
docker ps
//查看所有的容器
docker ps -a
这里我们使用后台线程的方式创建容器
docker run -di --name=redis -p 6379:6379 redis
-i :表示运行容器
-t :表示容器启动后会进入其命令行。加入这两个参数后,容器创建就能登录进去。即分配一个伪终端。
--name :为创建的容器命名。
-v :表示目录映射关系(前者是宿主机目录,后者是映射到宿主机上的目录),可以使用多个-v 做多个目录或文件
映射。注意:最好做目录映射,在宿主机上做修改,然后共享到容器上。
-d :在run后面加上-d参数,则会创建一个守护式容器在后台运行(这样创建容器后不会自动登录容器,如果只加-i -t
两个参数,创建后就会自动进去容器)。
-p :表示端口映射,前者是宿主机端口,后者是容器内的映射端口。可以使用多个-p做多个端口映射
进入容器
docker exec -it redis /bin/bash
要是运行redis的话就是
docker run redis
简单吧,就这么简单的几步,redis就安装好了。
为了让项目更好地进行交付的话,就可以使用DockerMaven插件,这个插件的使用其实和DockerFile是一样的,也是基于一个镜像,创造一个新的镜像。
首先需要先进行配置,让主机的docker可以进行被远程访问
vim /lib/systemd/system/docker.service
ExecStart=
ExecStart=/usr/bin/dockerd -H fd:// -H tcp://0.0.0.0:2375
然后再刷新配置
systemctl daemon-reload
systemctl restart docker
docker start registry
假如我们有一个项目,想要打包放到linux上,就需要在配置依赖的时候加上如下配置。
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
<!--docker的maven插件,官网:https://github.com/spotify/docker‐maven‐plugin-->
<plugin>
<groupId>com.spotify</groupId>
<artifactId>docker-maven-plugin</artifactId>
<version>1.1.0</version>
<executions>
<execution>
<id>build-image</id>
<phase>package</phase>
<goals>
<goal>build</goal>
</goals>
</execution>
</executions>
<configuration>
<imageName>test/${project.artifactId}:${project.version}</imageName>
<dockerHost>http://192.168.234.200:2375</dockerHost>
<baseImage>jdk1.8</baseImage>
<entryPoint>["java", "-jar", "-Dspring.profiles.active=dev","/${project.build.finalName}.jar"]
</entryPoint>
<resources>
<resource>
<targetPath>/</targetPath>
<directory>${project.build.directory}</directory>
<include>${project.build.finalName}.jar</include>
</resource>
</resources>
</configuration>
</plugin>
</plugins>
</build>
然后点击项目中的那个package就好了。然后在虚拟机里面就会发现多了一个镜像,这个镜像就是你构造的。 然后以容器启动,再到浏览器里面访问就可以了。
记得挂载上端口(就是这个项目的端口 -p)
子月这里补充一点docker里面有着一个私有仓库,也是以镜像的形式存在的,可以进行拉取和推送,要是别人想从私有仓库里进行拉取镜像,需要先进行设置,进行对私有仓库的信任。
私有仓库的有关命令
//拉取私有仓库镜像
docker pull registry
//启动私有仓库容器
docker run -di --name=registry -p 5000:5000 registry
//打开浏览器输入地址http://192.168.234.200:5000/v2/_catalog看到 {"repositories":[]} 表示私有仓库搭建成功
并且内容为空
进行信任设置
vim /etc/docker/daemon.json
//添加以下内容 注意这里要换成自己的虚拟机的静态IP
{"insecure-registries":["192.168.234.200:5000"]}
//重启docker
systemctl restart docker
// 私有仓库镜像上传 标记此镜像为私有仓库的镜像 先给要上传的镜像打上一个标签
docker tag jdk1.8 192.168.234.200/jdk1.8
//然后启动私有仓库
docker start registry
// 进行上传
docker push 192.168.234.200:5000/jdk1.8