Docker构建Java环境

以Spring Boot应用为例,基于CentOS 7使用Docker构建java运行环境。

条件

CentOS 7、Docker CE、Java 8、Spring Boot

配置仓库

$ sudo yum install -y yum-utils device-mapper-persistent-data lvm2
$ sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

更新yum

yum update

yum更新为可选择操作,防止版本问题,若后续操作失败,可再更新。

安装DOCKER

安装docker ce版本:

$ sudo yum install docker-ce docker-ce-cli containerd.io --skip-broken

如需指定版本,按如下操作:

$ yum list docker-ce --showduplicates | sort -r
$ sudo yum install docker-ce-<VERSION_STRING> docker-ce-cli-<VERSION_STRING> containerd.io

启动Docker

$ sudo systemctl start docker

验证环境

$ sudo docker run hello-world

若出现:Hello from Docker! 证明Docker安装成功。

构建镜像

使用jdk8镜像为基础,构建java运行环境。

mkdir /var/docker
cd  /var/docker

编写Dockerfile,Dockerfile为构建镜像提供命令。

vim  /var/docker/Dockerfile

Dockerfile:

FROM  java:8

RUN \
  mkdir /usr/local/app

COPY spring-boot-docker.jar  /usr/local/app/web.jar
#ENV

CMD java -version
CMD echo $JAVA_HOME
CMD ["/usr/bin/java", "-jar", "-Dspring.profiles.active=test", "/usr/local/app/web.jar"]

说明

FROM  java:8

以jdk8镜像为基础构建镜像。

RUN ...

创建目录。

COPY...

从Dockerfile所在目录,copy指定文件。

ENV...

设置环境变量,示例中无需环境变量,已注掉。

CMD...

运行系统命令,如:java -jar。

构建镜像

docker build -t java/app  --rm=true .

java/app为镜像名称(随意),以小点(.)结束,表示基于当前目录执行构建。

运行容器

使用镜像(java/app)创建容器。

docker run -p 8090:8080 java/app:latest

将容器中应用程序8080端口,映射到主机8090端口。

 curl http://127.0.0.1:8090/

注:可用-name为容器指定名称,名称不能重复,-d参数可让容器挂后台运行。一个镜像可创建多个容器,容器是镜像的运行实例,类比为:类与对象的关系。

查看容器

docker ps

获取容器基本信息和状态。如,容器ID,容器所对应的镜像,容器状态。

停止容器

docker stop  <container_id>

删除容器

docker rm <container_id>

删除已停止的容器

docker rmf  <container_id>

强势删除运行中的容器。

删除镜像

docker rmi <IMAGE>

注:image通过如下命令查看。

docker images