当前位置: 首页 > 知识库问答 >
问题:

如何制作与服务器相同的docker容器

劳英华
2023-03-14

我有一个运行在Ubuntu16.04上的amazon web服务器。此服务器专用于运行由多个进程组成的模拟。我被赋予了创建docker容器的任务,以便可以在服务器上同时运行模拟的多个实例。我知道运行多个容器需要为每个容器更改一些端口ID,所以我的第一个任务是在一个容器中运行一个模拟实例。看来我可以在dockerFile中调用所有必要的软件映像来创建我的映像文件。但我想知道是否有一个更简单的方法来创建一个图像文件,基本上是克隆的所有软件当前在我的服务器?

共有1个答案

桂高昂
2023-03-14

首先从您的服务器获取已安装软件包的列表(源代码)

dpkg --get-selections > list.txt

然后在DockerFile中使用该列表:

from ubuntu:16.04
add list.txt

RUN dpkg --clear-selections &&\
  dpkg --set-selections < list &&\
  apt-get autoremove &&\
  apt-get dselect-upgrade 

您可能还想从服务器复制一些文件夹(etc、var、log等)。(资料来源)

scp -r user@your.server.example.com:/var /home/user/Desktop/var
ADD /home/user/Desktop/var /var
docker build -t my_tag . && docker run -it --rm my_tag bash

注意:这个过程会让你开始,但它会非常非常容易出错。而且,它也远不是完美的。在这样做之后,我建议通过删除不需要的包和文件夹来反复改进您的映像。对于production-docker映像,您希望重写它以使用alpine

注意2:您不能最终使用与服务器相同的docker映像。您的服务器有不同的硬件、不同的内核、不同的网络、不同的存储等等。

 类似资料:
  • TL;DR:获取错误代码/docker入口点。sh:第10行:exec:nginx:cannot execute:Is a directoryrunningwhen工作正常。 我有一个docker容器,我已经推到DockerHub。我可以用docker compose在本地运行此功能。我在我的远程服务器上下载了这个,现在我正在尝试使用docker run用户名/srdc\U产品:2020.07.2

  • 问题内容: 我运行基于节点映像的Docker容器(Windows的Docker快速入门终端) 我启动节点客户端(在端口3000上)和节点(基于Express)的服务器(在3009 端口上)。客户端通过AJAX调用访问REST服务器。 它可以完美地从主机运行(客户端访问localhost:3009并返回结果)。我可以拨打:3009,然后再次得到正确的结果。 但是当我构建并运行docker image

  • 从另一个服务或容器装入所有卷,可选地指定只读访问(ro)或读写(rw)。 注:容器:...格式只支持版本2文件格式。在版本1中,您可以使用容器名称,而不必将其标记为: 我在这里很困惑,容器和服务在这里有什么区别?

  • 我正在使用Spring Cloud创建微服务架构。 我正在使用Spring Cloud中的以下功能 Zuul–API网关服务,提供动态路由、监控、弹性、安全等功能- 功能区–客户端负载平衡器 Faign–声明性REST客户端 Eureka–服务注册和发现 Sleuth–通过日志进行分布式跟踪 Zipkin–具有请求可视化的分布式跟踪系统 Hystrix-适用于所有API的断路器、容错、Hystri

  • 问题内容: 我正在boot2docker 1.3.1下运行。 我有一个Docker容器通过运行Web服务器。 如果我连接到该容器,则可以使用浏览该网站,以便知道服务器正在运行。 我用以下容器运行容器: 它具有以下详细信息: 我以为可以访问,从托管人访问该网站。 这是行不通的。我只是在Chrome中看到“正在连接…”,却一无所获。 我究竟做错了什么? 问题答案: 好吧,愚蠢的我,我在boot2doc