关于docker有一点小疑问

发布于 2022-09-12 03:55:01 字数 246 浏览 19 评论 0

我现在有一台云服务器,请问我在服务器安装java,mysql,redis这些环境和在docker中安装这些环境区别在哪里呢?我看之前说docker是为了解决环境不一致的问题,但是如果不同电脑就算拉同一个docker镜像,但是电脑环境不一致啊,还是说我得先用docker拉一个linux系统然后再到linux镜像里面去配置环境,到时候保存好了直接拉系统镜像就行了?还有就是如果我在一个镜像中安装了java环境,在另一个环境没有安装java环境却把jar包部署在里面,该如何运行呢?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

夜灵血窟げ 2022-09-19 03:55:01

你的程序最终是运行在 docker 容器内。宿主机(电脑)只是一个运行 docker 的载体,与容器内无关。

同一镜像、版本(TAG)就可以保证你的即使你在不同载体(宿主机)上,docker 容器内总是一致的运行环境、配置。

如果你觉得现有的镜像(image),不能满足你部署的要求,你可以使用 Dockerfile ,创建自定义的镜像,往镜像里面添加一些软件之类的,构建完成后,你可以把镜像上传到镜像服务器,也可以把 Dockerfile 和上下文内容一起打包,进行分发。

例如你说到的:Java 环境,现有集成了 JRE 、JDK 的镜像,已经帮你安装好了,你只需要在你开发、测试、生产都使用这个镜像,就可以做到全部一致。从而消除环境不一致的问题。

一紙繁鸢 2022-09-19 03:55:01

你要把 docker 的景象理解成是带着整个"操作系统"运行环境的独立软件. 你这里的场景下, 可以是 Java 一个镜像, MySQL 一个镜像, Redis 一个镜像, 如果你去 docker hub 上找, 也会发现基于各种 Linux 发行版给你打好的现成版本的镜像, 他们的"操作系统"五花八门, 可能是 CentOS, 可能是 Debian, 也可能是 Alpine, Ubuntu 等等不一而足. (加引号是因为其实内核仍然是宿主那个在工作)
但一旦这些镜像配置完成, 你就可以把它任意分发到 Docker 的运行环境中去, 不用再管宿主机器的环境差异问题. 所以无论你的宿主是 CentOS 还是 Debian, 都可以运行上述各种"操作系统"的镜像.

假定你有一个 Java 镜像, 现在要运行多个不同的 jar, 可以这么做:

docker run --mount type=bind,src=/data/app1_dir,dst=/data java_image java -jar /data/app1.jar

docker run --mount type=bind,src=/data/app2_dir,dst=/data java_image java -jar /data/app2.jar

这样就是基于一个镜像产生了两个容器, 它们各自挂载的目录不同, 可以访问到的数据也不同.

当然如果是服务器服务, 你可以用容器管理工具, 最简单的比如 docker-compose, 把这种操作自动化掉而不是手动运行

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文