CentOS 7.6下 docker 从安装到简易部署演示SpringBoot项目

8 篇文章 0 订阅
3 篇文章 0 订阅

目标服务器安装docker并配置

#安装
yum install docker

#检验安装是否成功
[root@localhost opt]# docker --version
Docker version 1.13.1, build 7f2769b/1.13.1

#启动
systemctl start docker

#换镜像源
sudo vim /etc/docker/daemon.json
内容如下:
{
 "registry-mirrors": ["https://m9r2r2uj.mirror.aliyuncs.com"]
}
保存退出,重启docker

#重启
systemctl restart docker

#设置docker service 开机启动
systemctl enable docker

本地准备SpringBoot项目jar包与Dockerfile配置文件

项目jar包:
这里创建了一个简单的Springboot项目,Maven 打包成jar包。在这里插入图片描述
Dockerfile文件:

详细参数解释:https://www.runoob.com/docker/docker-dockerfile.html

FROM openjdk:8-jre-alpine
RUN echo "Asia/shanghai" > /etc/timezone;
COPY learn_2-0.0.1-SNAPSHOT.jar test_1.jar
CMD ["java","-Xms256m","-Xmx512m","-Xss1024K","-jar","/test_1.jar"]

将项目jar包与Dockerfile文件上传至目标服务器

  1. 在目标服务器创建项目打包文件夹,如:
mkdir dockertest
  1. 将jar包与Dockerfile文件移动至本文件夹。
    如果使用xshell直接拖动的方式需要提前安装lrzsz传输工具。
yum install lrzsz
  1. 执行docker开始构建镜像:docker build -t dockertest .

-t [库名]
注意:一定不要忘记 . 代表了当前目录

  1. 执行docker命令:docker images 查看docker中的所有镜像。
  2. 将镜像打包成容器开始运行。
docker run -d -p 80:54188 --name hello_docker dockertest

docker run -d -p [服务器映射端口]:[容器端口] --name [容器名] [被打包的镜像库名]

引自:https://www.runoob.com/docker/docker-run-command.html
-a stdin: 指定标准输入输出内容类型,可选 STDIN/STDOUT/STDERR 三项;

-d: 后台运行容器,并返回容器ID;

-i: 以交互模式运行容器,通常与 -t 同时使用;

-P: 随机端口映射,容器内部端口随机映射到主机的端口

-p: 指定端口映射,格式为:主机(宿主)端口:容器端口

-t: 为容器重新分配一个伪输入终端,通常与 -i 同时使用;

–name=“nginx-lb”: 为容器指定一个名称;

–dns 8.8.8.8: 指定容器使用的DNS服务器,默认和宿主一致;

–dns-search example.com: 指定容器DNS搜索域名,默认和宿主一致;

-h “mars”: 指定容器的hostname;

-e username=“ritchie”: 设置环境变量;

–env-file=[]: 从指定文件读入环境变量;

–cpuset=“0-2” or --cpuset=“0,1,2”: 绑定容器到指定CPU运行;

-m :设置容器使用内存最大值;

–net=“bridge”: 指定容器的网络连接类型,支持 bridge/host/none/container: 四种类型;

–link=[]: 添加链接到另一个容器;

–expose=[]: 开放一个端口或一组端口;

–volume , -v: 绑定一个卷,容器共享文件
–privileged 设置访问任何其它设备的权限

  1. 列出当前Docker中的容器:docker ps
  2. 查看容器控制台信息:docker logs -f [容器名]
  3. 运行成功。

可能出现的问题

1. 容器开启成功却没有办法从外部访问问题。
查看容器控制台打印信息为运行成功,但却无法从外部访问到,则极有可能是目标服务器的该端口没有打开。

CentOS6与CentOS7的解决方案https://www.linuxidc.com/Linux/2016-12/138979.htm

CentOS 7
开启端口 firewall-cmd --zone=public --add-port=80/tcp --permanent
命令含义:

–zone #作用域 add-port=80/tcp #添加端口,格式为:端口/通讯协议
–permanent#永久生效,没有此参数重启后失效

2. 如果是使用虚拟机测试的小伙伴,在构建docker镜像库的时候可能会出现网络拉取超时的错误,则可能是虚拟机DNS设置错误的问题。

解决方案:在百度搜一个免费的DNS设置即可。引申链接:https://blog.csdn.net/weixin_43670802/article/details/104885920

3. 如果设置宿主机目录挂载到容器的话,可能会出现权限报错问题。

解决方案:在docker run .... 命令中加入--privileged参数即可。

参考B站大佬:https://www.bilibili.com/video/BV1v741137aZ?from=search&seid=2455662815014319307

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员杰森

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值