Questions tagged «docker»

Docker映像,容器,集线器以及与容器化平台相关的所有内容

5
为什么建议在容器中仅运行一个进程?
在许多博客文章和一般意见中,有一种说法是“每个容器一个过程”。 为什么存在此规则?为什么不在需要所有进程都可以工作的单个容器中运行ntp,nginx,uwsgi和更多进程? 提到此规则的博客文章: “每个容器一个进程是Docker应用程序的推荐设计模式。” “ Docker仅用于创建单进程或单服务容器。” “每个容器最好使用一个过程” “将单个服务作为容器运行” “每个容器一个过程” “每个容器一个过程”

6
在生产环境中运行Docker时应考虑哪些最佳和全面的实践?
最后,您非常喜欢Docker,因此想要将具有敏感客户数据的在线关键业务生产系统移至Docker Swarm。有些甚至可能已经这样做了。另一组织无法通过禁止在root模式下运行的生产流程的策略来承担该费用。 对于Docker生产环境,可以考虑的构建基清单清单是什么?一个并不需要所有,但是所有它们都应该被评估很重要。 免责声明:我知道有一个SE策略可以避免“无尽的大列表”,但是我认为此清单不能太大...反之亦然。 那么-这些积木是什么? 如果尚未部署,请考虑运行具有高级安全设置的Linux主机系统-强化内核,SELinux等。 考虑使用微小的Docker基本映像,例如alpine,busybox甚至是草稿,例如从空的基本映像开始 使用除root以外的USER设置 仔细评估以进一步减少授予容器的已缩减的内核功能集 考虑每个容器只有一个可执行二进制文件来启动进程,理想情况下是静态链接 那些想要破坏您的系统以获取外壳程序访问权限的人可能想知道他们是否发现您的容器已禁用所有外壳程序 尽可能挂载只读卷 问题:还有什么?

5
从Docker Hub下载Docker映像而不使用Docker
我想从Docker Hub手动下载Docker映像。更具体地说,我想在没有(也不能)安装Docker客户端软件的受限环境中的机器上,从Docker Hub下载Docker映像。我以为可以使用官方API做到这一点,但事实并非如此-请参阅以下讨论: 无需docker命令即可获取docker映像。例如与wget API确实不支持下载图片吗?有办法解决这个问题吗? 更新1: 我遇到了以下ServerFault帖子: 下载Docker映像以传输到非互联网连接的计算机 该接受的解决方案使用的docker save命令,这并不在我的处境有所帮助。但是这里发布的另一个解决方案引用了以下StackOverflow帖子: 拉泊坞窗图像 其中的一种解决方案涉及一种称为docker-registry-debug的命令行工具,该工具除其他外可以生成curl用于下载映像的命令。这是我得到的: user@host:~$ docker-registry-debug curlme docker ubuntu # Reading user/passwd from env var "USER_CREDS" # No password provided, disabling auth # Getting token from https://index.docker.io # Got registry endpoint from the server: https://registry-1.docker.io # Got token: signature=1234567890abcde1234567890abcde1234567890,repository="library/docker",access=read curl -i --location-trusted …
32 docker  dockerhub 

3
了解Docker层
我们的代码块如下Dockerfile: RUN yum -y update RUN yum -y install epel-release RUN yum -y groupinstall "Development Tools" RUN yum -y install python-pip git mysql-devel libxml2-devel libxslt-devel python-devel openldap-devel libffi-devel openssl-devel 有人告诉我,我们应该团结起来使用这些RUN命令,以减少创建的docker层: RUN yum -y update \ && yum -y install epel-release \ && yum -y groupinstall "Development Tools" \ && yum …

2
将机密传递给Docker容器
我有一个基本的docker映像,用于运行映像分析软件。对于从映像创建的每个容器,都有一组配置设置,其中一些是秘密(加密密钥,客户信息等),软件可以使用这些秘密来分析和分发处理后的映像。我如何安全地将这些机密传递到容器?

2
为什么在Dockerfile中使用EXPOSE-因为您仍然可以绑定到所有端口
我可以docker run -p 3000:3000 image 不 EXPOSE使用容器中的该端口(请参见下文)。如果是这样,那为什么还要麻烦将EXPOSE放入Dockerfile中呢?它仅用于与图像用户通信吗?因为我不知道EXPOSE端口是否可以绑定的功能性原因。 这些步骤显示了我绑定到容器中的端口,尽管事实并非如此 $ cat Dockerfile FROM alpine RUN apk add nodejs npm vim COPY webserver /webserver CMD [ "node", "/webserver/index.js" ] $ docker build . Sending build context to Docker daemon 1.931MB Step 1/4 : FROM alpine ---> 11cd0b38bc3c Step 2/4 : RUN apk …

1
为什么Docker-in-Docker被认为是不好的?
2013年8月,JérômePetazzoni在Docker中创建了Docker,dind简而言之,这允许在Docker Containers中创建Docker容器,这一功能非常受欢迎,导致Jérôme的GitHub Repository获得了上千个星星和300个分支。 从两年后(2015年8月)发布的Docker 1.8开始,Docker便直接提供了Docker中的Docker支持。但是,在Docker中使用Docker会带来警告,似乎与Jérôme的文章:在您的CI或测试环境中使用Docker-in-Docker?三思而后行。这着重说明了为什么Docker中的Docker并不是持续集成的绝佳选择的原因。 为什么在Docker中使用Docker不好?这是避免海龟全程下降的简单案例吗?还是性能方面的考虑?

2
如何在Docker中拥有多个日志流
我们有一个应用程序,它将三种类型的日志写入三个单独的文件中:访问日志,通用应用程序日志和系统日志。这些日志的格式(和用途)非常不同。我们有单独的日志转发器,可将它们分别发送到我们的集中式日志记录系统。 基于将日志视为事件流原则,我们正在考虑从使用文件转移到标准输出。虽然我们知道了这种方法的一些好处,但这也意味着我们将获得合并后的格式不同的日志流,在将它们发送到中央系统之前,我们需要再次拆分(Kibana / Splunk /等),或在里面。 我们想知道是否有任何工具或建议来应对这种情况。
21 docker  logging 

7
如何每次创建最小的工作docker映像?
目的:每次创建最小的工作docker映像 当前 REPOSITORY TAG IMAGE ID CREATED SIZE a-docker-image latest x 42 minutes ago 1.92 GB 尝试 在Dockerfile的末尾添加一个清理步骤: #clean RUN apt-get purge -y wget RUN rm -r a-build-dir RUN apt-get purge -y a-package 缩小了图像尺寸: REPOSITORY TAG IMAGE ID CREATED SIZE a-docker-image latest y 2 minutes ago 1.86 GB 讨论区 我建立了各种docker映像。每次尝试减小所创建图像的大小时,我总是觉得它太大。我正在寻找一个已经由github上的某个人创建的脚本,该脚本将从图像中删除所有多余的软件包,因此创建的图像的大小将尽可能小。 …
19 docker 

3
docker-compose无效类型,应为字符串
我在docker-compose.yml文件中配置了以下环境变量: version: '3' services: server: ports: - 13045:3000 environment: - NODE_CONFIG: '{"DATABASE_URL":"http://db:5984"}' 尝试运行时docker-compose up,出现此错误: services.server.environment contains {"NODE_CONFIG": "{\"DATABASE_URL\":\"http://db:5984\"}"}, which is an invalid type, it should be a string 我需要将环境变量设置为JSON字符串(请参阅https://github.com/lorenwest/node-config/wiki/Environment-Variables#node_config) 我在这里做错什么了吗?我能以某种方式使它工作吗?

4
在不同容器中对nginx和php进行docker化有什么优势?
我刚刚开始使用Docker和Kubernetes,并且一直在观察很多堆栈,其中有些人在单个映像中构建nginx + php,有些人使用nginx构建映像,另一个人使用php构建(挂载相同的路径并封闭两个容器在Kubernetes中的同一部署中)。 构建两个docker映像而不是同时安装两个nginx + php的优点是什么?

2
我应该在哪里放置应用程序配置?
最近,我一直在阅读有关“ 应将取决于环境的属性存储在哪里? ” 的辩论。 经典的方法是拥有多个属性文件,每个属性文件都取决于环境,并且基于环境变量(DEV,PROD ...),您可以选择在启动应用程序时在何处读取它们(例如使用Spring概要文件)。 另一方面,如果您使用容器来部署应用程序,则据说这种配置应来自环境本身(使用应用程序读取的环境变量),因此映像在环境之间不会改变。 每种方法的利弊是什么?容器方案是否有“最佳”方法?

3
没有适用于docker的Oracle JDK吗?
REPOSITORY TAG IMAGE ID CREATED SIZE an-image 1 X 26 seconds ago 279 MB 当将运行docker映像时,显示以下消息: No java installations was detected. Please go to http://www.java.com/getjava/ and download 部署Oracle JDK后,docker映像大小增加了一倍以上! REPOSITORY TAG IMAGE ID CREATED SIZE an-image 2 X 26 seconds ago 666 MB 讨论区 谷歌搜索“是否没有适用于Docker的Oracle JDK”时,仅返回指向包含docker的docker映像的某些链接。在Docker映像中部署Oracle JDK时,大小增加了一倍以上。我想使docker映像尽可能小,但是Oracle JDK似乎比映像本身大! 题 没有适用于docker的Oracle JDK吗?

4
使用deb软件包就像将其部署为应用程序的容器一样,是否有任何缺点?
我的团队目前正在尝试确定是否应将我们的Nodejs应用程序部署为deb软件包,而不是尝试在诸如Docker的容器中运行它。 我从这里阅读此博客时得到了这个想法,该博客为将deb包用于预先存在的python应用程序提供了一些很好的论据。这个博客吸引我们的重点是维护Docker生态系统的问题(端口共享,权限,Docker映像的托管等)。 对于没有端口冲突且所有依赖项都在虚拟环境中维护的小型服务而言,“将dep-packages作为原始容器”似乎很有意义。 但是,我的直觉告诉我,如果deb软件包非常合适,它将更加常见,并且docker将被宣传为一种针对特定语言的解决方案。使用诸如deb包之类的东西来部署我们的服务,而不是使用诸如docker这样的完整系统是否有任何弊端?

2
chroot和Docker之间的区别
我不明白docker和chroot之间的区别。是的,在打包注册表方面非常好。但是不知何故,我感觉到它只是带有额外的铃铛和哨子的根。 我知道我想念什么。如果chroot可以做些类似的事情,那么知道它们之间的不同以及对docker的需求将是很棒的。 我也找不到这个Chroot Vs Docker足够清晰。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.