基于上一篇文章使用dockerfile构建自己的镜像
现在尝试创建一个包含javaweb应用的docker镜像, 从centos>>>java8>>>java应用, 从无到有过程比较繁琐, 为了熟悉使用多一些命令而已
C:\Users\xuyin\Desktop\Dockerfile>docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
centos latest 300e315adb2f 3 weeks ago 209MB
创建基于centos,通过dockerfile创建镜像,把jdk传进去
Dockerfile文件内容如下
FROM centos
COPY jdk-8u162-linux-x64.tar.gz /home/
通过docker build 把jdk8传进去, 新建镜像,启动容器,配置jdk
C:\Users\xuyin\Desktop\Dockerfile>docker build -t java8 .
Sending build context to Docker daemon 206.8MB
Step 1/2 : FROM centos
---> 300e315adb2f
Step 2/2 : COPY jdk-8u162-linux-x64.tar.gz /home/
---> a5243141aacf
Successfully built a5243141aacf
Successfully tagged java8:latest
SECURITY WARNING: You are building a Docker image from Windows against a non-Windows Docker host. All files and directories added to build context will have '-rwxr-xr-x' permissions. It is recommended to double check and reset permissions for sensitive files and directories.
C:\Users\xuyin\Desktop\Dockerfile>docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
java8 latest a5243141aacf 40 seconds ago 399MB
centos latest 300e315adb2f 3 weeks ago 209MB
C:\Users\xuyin\Desktop\Dockerfile>docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
C:\Users\xuyin\Desktop\Dockerfile>docker run -itd --name java8container java8
581a933f46da5a7b4fab5c36558673ec25608e709d14abf994940b64f80ebce6
C:\Users\xuyin\Desktop\Dockerfile>docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
581a933f46da java8 "/bin/bash" 3 seconds ago Up 2 seconds java8container
C:\Users\xuyin\Desktop\Dockerfile>docker exec -it java8container /bin/bash
[root@581a933f46da /]# cd /home/
[root@581a933f46da home]# ls
jdk-8u162-linux-x64.tar.gz
[root@581a933f46da home]# tar -zxvf jdk-8u162-linux-x64.tar.gz
...
[root@581a933f46da home]# ls
jdk-8u162-linux-x64.tar.gz jdk1.8.0_162
[root@581a933f46da home]# vi /etc/profile
--------------------------------------------------
//修改文件内容,加入
export JAVA_HOME=/home/jdk1.8.0_162
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
--------------------------------------------------
[root@581a933f46da home]# vi ~/.bashrc
--------------------------------------------------
在 ~/.bashrc 配置文件添加 source /etc/profile ,重启后会刷新配置文件
--------------------------------------------------
[root@581a933f46da /]# java
bash: java: command not found
[root@581a933f46da /]# source /etc/profile
[root@581a933f46da /]# java -version
java version "1.8.0_162"
Java(TM) SE Runtime Environment (build 1.8.0_162-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.162-b12, mixed mode)
[root@581a933f46da /]# rm /home/jdk-8u162-linux-x64.tar.gz
rm: remove regular file '/home/jdk-8u162-linux-x64.tar.gz'? y
配置完之后通过docker commit把容器生成镜像
C:\Users\xuyin>docker commit java8container java8image
sha256:68474292809d4f28567806f8abf7d993707e253861628166c1c31901d1d359a5
C:\Users\xuyin>docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
java8image latest 68474292809d 3 seconds ago 784MB
java8 latest a5243141aacf About an hour ago 399MB
centos latest 300e315adb2f 3 weeks ago 209MB
再通过docker file把一个简单的javaweb项目,打包进新镜像
Dockerfile文件内容如下
FROM java8image
COPY demo-0.0.1-SNAPSHOT.jar /home/
ENTRYPOINT /bin/bash -c 'source /etc/profile; java -jar /home/demo-0.0.1-SNAPSHOT.jar'
执行docker build生成带有java应用的镜像
C:\Users\xuyin\Desktop\Dockerfile>docker build -t javawebdemo .
Sending build context to Docker daemon 206.8MB
Step 1/3 : FROM java8image
---> 68474292809d
Step 2/3 : COPY demo-0.0.1-SNAPSHOT.jar /home/
---> 85e88f4a13fe
Step 3/3 : ENTRYPOINT /bin/bash -c 'source /etc/profile; java -jar /home/demo-0.0.1-SNAPSHOT.jar'
---> Running in c844a20ea151
Removing intermediate container c844a20ea151
---> f854635bcfe8
Successfully built f854635bcfe8
Successfully tagged javawebdemo:latest
SECURITY WARNING: You are building a Docker image from Windows against a non-Windows Docker host. All files and directories added to build context will have '-rwxr-xr-x' permissions. It is recommended to double check and reset permissions for sensitive files and directories.
C:\Users\xuyin\Desktop\Dockerfile>docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
javawebdemo latest f854635bcfe8 5 seconds ago 801MB
java8image latest 68474292809d 2 hours ago 784MB
java8 latest a5243141aacf 3 hours ago 399MB
centos latest 300e315adb2f 3 weeks ago 209MB
运行镜像, 把javaweb应用端口映射出来
C:\Users\xuyin\Desktop\Dockerfile>docker run -itd -p 8080:8080 javawebdemo
b51a228a4a71acdfda0cbf6fd1791ca18e4266e044789eca77842aefa35a8bb6
C:\Users\xuyin\Desktop\Dockerfile>docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
b51a228a4a71 javawebdemo "/bin/sh -c '/bin/ba…" 8 seconds ago Up 7 seconds 0.0.0.0:8080->8080/tcp vigilant_meninsky
最后可以在浏览器访问java应用了