新手手动搭建Docker 并且配置jdk
准备
最近在研究一些列微服务的使用,我也是一个小白,在我自己摸索微服务搭建的时候也是四处碰壁,很多时候都不知道步骤,也有很多东西都不知道,压根没有听说过,所以就做了一个笔记,记录一下,方便以后自己搭建的时候用到。毕竟要做一个奋斗的小白。
Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。
百科又说:Docker 使用客户端-服务器 (C/S) 架构模式 使用远程API来管理和创建Docker容器。Docker 容器(Container)通过 Docker 镜像(Image)来创建,二者之间的关系类似于面向对象编程中的对象与类。
安装Docker
Docker 安装的时候还是很简单的,自己百度一下跟着步骤走就可以了。我还是在自己电脑的虚拟机上进行安装。
首先检查自己的虚拟机内核版本
我是虚拟机装的Centos7,linux 3.10 内核,docker官方说至少3.8以上,建议3.10以上(ubuntu下要linux内核3.8以上, RHEL/Centos 的内核修补过, centos6.5的版本就可以) 但是要注意 7 以上版本的 命令会有不同。
- 首先用root用户登录,查看内核版本
uname -a
[root@localhost ~]# uname -a
Linux localhost.localdomain 3.10.0-957.el7.x86_64 #1 SMP Thu Nov 8 23:39:32 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux
可以看到我的内核版本为 3.10.0-957
- 把yum 更新到最新的状态,以便于我们下载更全面的东西。
yum update -y
加上这个-y 参数,然后就不需要一会输入一个y 确认一下,直接就默认了。
[root@localhost ~]# yum update -y
已加载插件:fastestmirror
Determining fastest mirrors
- base: mirrors.163.com
- extras: mirrors.shu.edu.cn
- updates: mirrors.aliyun.com
base | 3.6 kB 00:00:00
extras | 3.4 kB 00:00:00
updates | 3.4 kB 00:00:00
(1/4): base/7/x86_64/group_gz | 166 kB 00:00:00
(2/4): extras/7/x86_64/primary_db | 187 kB 00:00:01
(3/4): base/7/x86_64/primary_db | 6.0 MB 00:00:01
(4/4): updates/7/x86_64/primary_db | 3.3 MB 00:00:01
正在解决依赖关系
…
- 安装需要的软件包, yum-util 提供yum-config-manager功能,另外两个是devicemapper驱动依赖的
yum install -y yum-utils device-mapper-persistent-data lvm2
[root@localhost ~]# yum install -y yum-utils device-mapper-persistent-data lvm2
已加载插件:fastestmirror
Loading mirror speeds from cached hostfile
- base: mirrors.163.com
- extras: mirrors.shu.edu.cn
- updates: mirrors.aliyun.com
软件包 device-mapper-persistent-data-0.7.3-3.el7.x86_64 已安装并且是最新版本
软件包 7:lvm2-2.02.180-10.el7_6.3.x86_64 已安装并且是最新版本
正在解决依赖关系
–> 正在检查事务
- 设置yum源
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
[root@localhost ~]# yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
已加载插件:fastestmirror
adding repo from: https://download.docker.com/linux/centos/docker-ce.repo
grabbing file https://download.docker.com/linux/centos/docker-ce.repo to /etc/yum.repos.d/docker-ce.repo
repo saved to /etc/yum.repos.d/docker-ce.repo
- 可以查看所有仓库中所有docker版本
yum list docker-ce --showduplicates | sort -r
[root@localhost ~]# yum list docker-ce --showduplicates | sort -r
已加载插件:fastestmirror
可安装的软件包
- updates: mirrors.aliyun.com
Loading mirror speeds from cached hostfile
L * extras: mirrors.shu.edu.cn
docker-ce.x86_64 3:18.09.3-3.el7 docker-ce-stable
docker-ce.x86_64 3:18.09.2-3.el7 docker-ce-stable
docker-ce.x86_64 3:18.09.1-3.el7 docker-ce-stable
docker-ce.x86_64 3:18.09.0-3.el7 docker-ce-stable
docker-ce.x86_64 18.06.3.ce-3.el7 docker-ce-stable
docker-ce.x86_64 18.06.2.ce-3.el7 docker-ce-stable
docker-ce.x86_64 18.06.1.ce-3.el7 docker-ce-stable
docker-ce.x86_64 18.06.0.ce-3.el7 docker-ce-stable
docker-ce.x86_64 18.03.1.ce-1.el7.centos docker-ce-stable
docker-ce.x86_64 18.03.0.ce-1.el7.centos docker-ce-stable- base: mirrors.163.com
可以看到有很多的版本 并且最后一行说明了是来自 163 的资源
- 安装Docker,命令:yum install docker-ce,如果不指定版本则安装最新版,一般不建议最新版,因为抛开稳定性不说,新版也会有很多不是很兼容的,所以我选择了17.12.1.ce
yum install docker-ce-17.12.1.ce -y
- 配置Docker使用国内阿里云的镜像。
https://www.aliyun.com/product/acr?spm=5176.8142029.cloudEssentials.12.3dbd6d3eY4CTif&accounttraceid=ab7b9976-fd03-41c7-9f1f-b3a26c322577
阿里云的镜像服务网址
找到镜像加速地址点击复制,然后编辑docker 的默认配置文件
vi /usr/lib/systemd/system/docker.service(默认配置文件)
[service]
...............
ExecStart=/usr/bin/dockerd-current --registry-mirror= https://rlakbizy.*******.com #配置自己的阿里云加速地址
重新加载docker 配置
systemctl daemon-reload
- 然后就是启动Docker 并且设置开机启动
systemctl start docker
systemctl enable docker
[root@localhost ~]# systemctl start docker
[root@localhost ~]# systemctl enable docker
Created symlink from /etc/systemd/system/multi-user.target.wants/docker.service to /usr/lib/systemd/system/docker.service.
可以看到执行结果,创建了一个service
- 然后就是验证安装了。(有client和service两部分表示docker安装启动都成功了),输入
docker version
[root@localhost ~]# docker version
Client:
Version: 17.12.1-ce
API version: 1.35
Go version: go1.9.4
Git commit: 7390fc6
Built: Tue Feb 27 22:15:20 2018
OS/Arch: linux/amd64Server:
Engine:
Version: 17.12.1-ce
API version: 1.35 (minimum version 1.12)
Go version: go1.9.4
Git commit: 7390fc6
Built: Tue Feb 27 22:17:54 2018
OS/Arch: linux/amd64
Experimental: false
至此,docker 就安装完成了。我第一次走到这里的时候。接下来就不知道干嘛了,传说中的Docker 虚拟的Linux 呢! 传说中的可以直接把环境还有项目发布进去呢,我改怎么办呢,百度了好久,并且加上看了一些文档也是一脸懵逼,然后说什么下载镜像什么的启动。最终觉得那些都没什么好用的,然后就决定搭建自己的镜像。
配置Docker 的jdk
这里我把 docker 容器的启动退出 贴出来
#下载centos镜像,运行一个名为mycentos的容器,并在容器里运行/bin/bash
docker run -it --name mycentos centos /bin/bash
#退出
exit
#重启
docker start mycentos
#重启后,在mycentos再打开/bin/bash
docker exec -ti mycentos /bin/bash
- 下载 、启动并进入镜像
#下载一个centos 镜像
docker pull centos
#启动镜像 并且命名为 mycentos
docker run -it --name mycentos centos /bin/bash
[root@localhost docker]# docker run -it --name mycentos centos /bin/bash
[root@38b007f33309 /]#
现在 地址已经到了我们的docker 里面
- 现在docker 已经模拟出来一个linux,同样的我们在这个模拟出来的linux 里面创建文件夹java
mkdir -p /usr/java/
现在要把 jdk 的安装程序放进去docker 里面
这里一定要注意坑 exit 直接会让容器退出。我们应该使用 ctrl + Q+P 把容易放到后台运行
然后输入 docker ps 可以查看当前运行的容器,如果不小心退出容器 启动容器 可以通过 docker start
#启动容器 后面是容器名字,或者容器id
docker start mycentos
#查看当前运行的容器
docker ps
可以看到容器的id 为:6aa7d02e3319
然后我们把jdk 的安装包放到容器里面
docker cp jdk-8u121-linux-x64.tar.gz 6aa7d02e3319:/usr/java
然后我们进入容器。 进入我们刚才创建的文件夹 /usr/java
docker attach 6aa7d02e3319
可以看到我们的jdk 已经进入我们的容器里面
接下来就是解压
tar -zxvf jdk-8u201-linux-x64.tar.gz
- 简历容器自己的 JAVA_HOME 机制
#修改 容器的 配置文件 波浪号不要丢啊。
vim ~/.bashrc
添加 以下内容
export JAVA_HOME=/usr/java/jdk1.8.0_201
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH
环境变量立即生效
source ~/.bashrc
查看jdk 版本
java version
可以看到 jdk 1.8 已经配置完成。