一、准备工作
首先在Linux服务器上下载安装docker引擎
yum -y install docker
注意:一般由于防火墙和selinux的原因可能导致systemctl start docker 失败,首先关闭selinux(永久) 和防火墙
systemctl stop firewalld 关闭防火墙
systemctl disable firewalld 禁止开机启动防火墙
# 关闭selinux
vim /etc/selinux/config
SELINUX=disabled # 将该项修改为disabled
修改完成后 reboot 命令重启服务器使之生效。
由于docker官方镜像仓库在国外,可以配置国内的aliyun镜像仓库以更快的拉取到镜像,配置方式如下:
vim /etc/docker/daemon.json
{
"registry-mirrors": ["https://3laho3y3.mirror.aliyuncs.com"]
}
配置完成后重启守护进程和docker引擎
systemctl daemon-reload
systemctl restart docker
二、使用Dockerfile构建image
运行Java应用首先拉取到jdk8的基础镜像,然后将我们的Java项目jar包加入进去生成一个我们自己的Java镜像。
Dockerfile的内容如下,注意该文件无需后缀名,然后将Java的jar包和该文件放在一个文件夹,方便生成镜像
FROM docker.io/openjdk:8u222
VOLUME /usr/jar
# jar包名字需要更改为项目名字-版本号,后面app.jar 不变
ADD example-sun-1.0.jar /usr/jar/app.jar
EXPOSE 8080
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/usr/jar/app.jar"]
最后使用如下命令构建一个名称为example tag为1.0的镜像。-t 为镜像生成tag,此处tag为1.0,最后面的 . 代表当前文件夹,注意不要忽略。
docker build -t example:1.0 .
然后可以使用docker images 查看服务器上的镜像列表
# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
example 1.0 36428c8fc0b1 3 minutes ago 614 MB
三、运行container
使用docker run 开启并运行一个容器,-d 为detach之意维持后台运行,-p 开启端口映射
docker run -d -p 8080:8080 --name example example:1.0
使用docker ps 查看已经生成的容器
ONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
38ac03235c7f example:1.0 "java -Djava.secur..." 4 minutes ago Up 3 minutes 0.0.0.0:8080->8080/tcp example
我们访问实例Java程序的swagger页面,发现程序已成功运行
四、小结
借助docker可以方便地部署我们使用的中间件以及应用服务,比如Java应用。关于docker的应用是非常丰富多彩的,这里仅仅是成功跑起来来了一个示例程序,后面继续学习分享。
附:几条常用的docker命令
docker stop example 暂停容器
docker rm example 移除容器
docker start example 开启容器
docker restart example 重启容器
docker logs -f example 滚动输出容器日志