一、下载安装docker
curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
启动:systemctl start docker
二、配置国内镜像源
(1)在/etc/docker目录中添加daemon.json文件,内容如下:
{
"registry-mirrors": ["http://hub-mirror.c.163.com","https://registry.docker-cn.com","https://docker.mirrors.ustc.edu.cn"]
}
(2)重启docker服务:
systemctl restart docker
三、编写Dockerfile
vim Dockerfile
内容如下:
FROM java:8
VOLUME /tmp
ADD skill_training.jar /skill_training.jar
ENTRYPOINT ["java", "-jar", "-Xms256m", "-Xmx256m", "/skill_training.jar", "--server.port=8085"]
解释:
FROM java:8 设置基础镜像,这里我只想启动SpringBoot,所以一个Java8基础镜像足以
VOLUME /tmp 将容器挂载在tmp路径下
skill_training.jar /skill_training.jar 由于我的Dockerfile是和jar包在同一目录下的,所以这里是将当前目录下的jar包复制到编译生成的镜像中
ENTRYPOINT ["java", "-jar", "-Xms256m", "-Xmx256m", "/skill_training.jar", "--server.port=8085"]
这是容器的入口程序,容器在启动时会执行这里编写的命令,通过该命令启动我的jar包的命令并指定SpringBoot监听端口8090
四、运行Dockerfile,生成Docker镜像
1、生成镜像
docker build -t demo1.0.0 .
注意后面有个 .
2、查看镜像
docker images
五、运行
docker run -d -p 8085:8085 demo1.0.0 .
简单解释一下命令的含义:
docker run :创建一个新的容器并运行一个命令
-d:后台运行容器,并返回容器ID
-p:指定端口映射,格式为:主机(宿主)端口:容器端口
blog:刚刚编译成功的镜像名称
六、测试容器是否正确运行
docker ps -a
发现数据库连接不了
解决办法:带上参数 --net=host
docker run -d --net=host -p 8085:8085 demo1.0.0 -t
发现存在问题:
用@Scheduled(cron = "0 0 23 * * ?") ,容器会不按配置设置的时间,而是一直执行,欢迎交流讨论。
(1) 进入容器
docker exec -it dbb88ef17554 /bin/bash
(3)安装yum
参考文章:
ubuntu安装yum失败 :E: Unable to locate package yum 问题解决_Zsspace的技术博客_51CTO博客
apt-get install yum
常用命令:
1、查看日志
docker logs 057e22d042a5
2、停止容易
docker stop 057e22d042a5
3、删除容器
docker rm 057e22d042a5
4、删除镜像
docker rmi 057e22d042a5
5、进入docker容器(启动状态)
docker exec -it dbb88ef17554 /bin/bash