本示例基于 Centos 7, 假设目前使用的账号为 release, 拥有 sudo 权限.
由于 Docker 官方镜像下载较慢, 可以开启阿里云的 Docker 镜像下载加速器, 可参考此文进行配置.
主机上服务安装步骤如下:
1. 安装 docker 服务:
sudo yum install -y docker
2. 启动 docker 服务:
sudo service docker start
3. 查找 centos 镜像:
sudo docker search centos
4. 下载官方 centos 镜像:
sudo docker pull docker.io/centos
5. 下载完后可检查镜像:
sudo docker images
6. 在主机上创建具备 java 和 unzip 功能的 centos 镜像:
- mkdir ~/centos-java
- cd ~/centos-java
- touch Dockerfile
- vi Dockerfile
- # 内容如下:
- from docker.io/centos:latest
- run yum install -y java
- run yum install -y unzip
创建好 Dockerfile 后, 我们 build 这个镜像:
- cd ~/centos-java
- sudo docker build -t centos/java:latest .
build 成功后, 可通过如下命令查看最新的镜像列表:
sudo docker images
7. 我们各个 java 应用(假定都为. zip 格式的打包文件, 不依赖于 web 服务器), 都将基于该镜像上, 创建新的应用镜像.
- mkdir ~/myapp
- cd ~/myapp
- touch Dockerfile
- vi Dockerfile
- # 内容如下:
- from centos/java:latest
- run mkdir -p /opt/myapp
- copy myapp.zip /opt/myapp
- run unzip /opt/myapp/myapp.zip -d /opt/myapp
- run chmod +x /opt/myapp/startup.sh
- expose 8080
- cmd ["/opt/driver2/startup.sh"]
内容说明:
myapp.zip 是我们的 java 应用, 需要你准备好放在~/myapp 目录下, 该文件会被拷入新镜像中的 / opt/myapp 目录下
startup.sh 脚本参考内容为:
- #!/bin/sh
- cd /opt/myapp
- java -server -Xmx2g -Xms2g -cp .:myapp-1.0.jar:./lib/* com.yourcompany.Application
需要注意的是 java 以前台方式运行, 不要以后台方式 (nohup) 运行, 否则 docker 容器启动后很快就会停止
另外假定你的应用的输出日志为 /var/log/myapp 下
创建好 Dockerfile 后, build 新镜像:
- cd ~/myapp
- sudo docker build -t myapp:latest .
build 成功后, 就可以得到一个名称为 myapp 的新镜像
8. 运行新镜像:
- sudo mkdir -p /var/log/myapp
- sudo docker run -p 8080:8080 -v /var/log/myapp/:/var/log/myapp --name myapp -d myapp
9. 检查容器启动情况:
容器的状态应该为 Up, 可执行如下观察:
sudo docker ps
若未能起来, 我们可以观察日志, 了解出错原因:
sudo docker logs 容器 id
当然, 成功起来后, 可以在主机的目录下查看日志以方便跟踪:
tail -f -n 500 /var/log/myapp/app.log
来源: https://www.cnblogs.com/hutao722/p/9670482.html