小编moh*_*08p的帖子

无法从 Dockerfile 运行源命令

这是 Dockerfile 中的脚本。当我直接进入 docker 并手动运行命令时,它工作正常,但为什么不是来自 Dockerfile。

Dockerfile:

FROM ubuntu:16.04
RUN rm /bin/sh && ln -s /bin/bash /bin/sh
RUN apt-get update
RUN apt-get install -y build-essential libssl-dev
RUN apt-get install -y curl git sudo

RUN curl -sL https://raw.githubusercontent.com/creationix/nvm/v0.33.8/install.sh -o install_nvm.sh
RUN /bin/sh install_nvm.sh
RUN source ~/.profile
Run Code Online (Sandbox Code Playgroud)

错误:

消息:ttyname 失败:设备的 ioctl 不合适

我已经尝试了一些发现的解决方案,比如运行它, RUN /bin/sh -c "source ~/.profile"还有一些但没有解决问题。

docker dockerfile

5
推荐指数
1
解决办法
4595
查看次数

Docker多阶段构建与不同的项目

我们目前正在处理两个项目:

1个基于C++的项目

2基于Nodejs的项目

这两个项目是分开的,这意味着它们具有不同的代码库(git repoitory)和工作目录.

C++项目将生成一个.nodeNodejs项目将使用的节点绑定文件.

我们尝试使用多阶段为Nodejs项目构建一个docker镜像,如下所示:

from ubuntu:18.04 as u
WORKDIR /app
RUN apt-get........  
copy (?) .  #1 copy the c++ source codes
RUN make  

from node:10
WORKDIR /app
copy (?) .  #1 copy the nodejs cource codes
RUN npm install
copy --from=u /app/dist/xx.node ./lib/
node index.js
Run Code Online (Sandbox Code Playgroud)

我将通过构建图像docker build -t xx (?) #2.

但是,如dockerfile和命令中所述,如何设置context目录(请参阅注释#2)?因为它会影响dockerfile中的路径(参见注释#1).

我应该把哪个项目放在上面dockerfile呢?

docker docker-multi-stage-build

5
推荐指数
1
解决办法
473
查看次数

如何查看k8s部署历史记录?

我试过了kubectl rollout history deployment/my-app,它只返回No rollout history found.

我认为存在一种获取所有部署历史记录的方法.这将非常有帮助.

参考官方文件:https://kubernetes.io/docs/concepts/workloads/controllers/deployment/

deployment kubernetes

5
推荐指数
1
解决办法
3275
查看次数

将 mongodb docker 容器连接到 localhost

我正在尝试将 docker 中的 mongodb docker 容器的端口绑定到本地主机。我尝试这样做: sudo docker run -p 127.0.0.1:27018:27017 mongo:3.2

我可以连接到它,但在 docker 容器中添加的数据库不会暴露在本地。

我什至尝试过绑定0.0.0.0.192.168.x.x这也是我的 IP 地址而不是127.0.0.1. 在所有情况下,我都没有在 mongo docker 容器中获取数据库

mongodb docker docker-container

5
推荐指数
1
解决办法
1万
查看次数

MongoDB检查存在计数与findOne性能

我试图找出我的数据库中是否存在文档,并且我很好奇,这样做的最佳方法是什么?使用

User.findOne(query).select('_id')

要么

User.count(query)

一方面,findOne返回一个24进制的字符串,而count仅返回一个整数;另一方面,.count它将遍历整个集合,而.findOne将在第一个匹配的文档处停止。

我找到的与问题相关的唯一答案是这个问题,找不到其他答案,这个答案得到了支持.count,Mongo在性能方面做了很多工作,这个问题是6年前的。

什么更有价值?内存(findOne)或处理能力(计数)?

mongodb database-performance

4
推荐指数
1
解决办法
1010
查看次数

postgresql:alpine docker 容器中的 Cron

我正在使用“普通”postgresql:alpine docker 映像,但必须每天安排数据库备份。我认为这是一个非常常见的任务。

我创建了一个脚本backup并将其存储在容器中/etc/periodic/15min,并使其可执行:

bash-4.4# ls -l /etc/periodic/15min/
total 4
-rwxr-xr-x    1 root     root            95 Mar  2 15:44 backup
Run Code Online (Sandbox Code Playgroud)

我尝试手动执行它,效果很好。

我的问题是crond自动运行。

如果我 exec docker exec my-postgresql-container crond,守护进程将启动并且 cron 工作,但我想将其嵌入到我的 Dockerfile 中

FROM postgres:alpine

# my backup script, MUST NOT have .sh extension
COPY backup.sh /etc/periodic/15min/backup 
RUN chmod a+x /etc/periodic/15min/backup

RUN crond # <- doesn't work
Run Code Online (Sandbox Code Playgroud)

我不知道如何重写或覆盖官方镜像中的命令。出于更新原因,如果可能的话,我也想保留这些图像。

postgresql cron docker docker-container

4
推荐指数
1
解决办法
8585
查看次数

如何限制 Kubernetes emptyDir Volume 使用的磁盘数量?

如果我的容器中有一个有问题的应用程序,它不断地写入 emptyDir 卷,它可能会用完工作节点上的所有空间并影响节点上其他 pod/容器的性能。因此,打破容器相互隔离的预期,一个容器所做的事情不应该对节点上的其他容器产生负面影响。

有没有办法限制 emptyDir 卷(不是基于 RAM 的 emptyDir 类型)使用的磁盘空间量?

kubernetes persistent-volumes

4
推荐指数
1
解决办法
2217
查看次数

kubernetes的共享目录在它的副本之间进行部署

我有一个简单的部署,有2个副本.

我希望每个副本都有相同的存储文件夹(共享应用程序上传文件夹)

我一直在玩索赔和卷,但没有得到优势,所以要求快速帮助/示例.

apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: 'test-tomcat'
      labels:
        app: test-tomcat
    spec:
      selector:
        matchLabels:
          app: test-tomcat
      replicas: 3
      template:
        metadata:
          name: 'test-tomcat'
          labels:
            app: test-tomcat
        spec:
          volumes:
          - name: 'data'
            persistentVolumeClaim:
              claimName: claim
          containers:
          - image: 'tomcat:9-alpine'
            volumeMounts:
            - name: 'data'
              mountPath: '/app/data'
            imagePullPolicy: Always
            name: 'tomcat'
            command: ['bin/catalina.sh', 'jpda', 'run']
Run Code Online (Sandbox Code Playgroud)


kind: PersistentVolume
apiVersion: v1
metadata:
  name: volume
  labels:
    type: local
spec:
  storageClassName: manual
  capacity:
    storage: 2Gi
  accessModes:
  - ReadWriteMany
  hostPath:
    path: "/mnt/data"
Run Code Online (Sandbox Code Playgroud)


kind: PersistentVolumeClaim
apiVersion: v1
metadata: …
Run Code Online (Sandbox Code Playgroud)

kubernetes persistent-volumes persistent-volume-claims

4
推荐指数
1
解决办法
2173
查看次数

限制RBAC访问Kubernetes的秘密

我已经设置了Kubernetes的秘密.

kubectl create secret generic mysecret --from-file=mysecret=/home/ubuntu/secret.txt
Run Code Online (Sandbox Code Playgroud)

并且可以使用相同的kubectl命令将此秘密转换为纯文本:

kubectl get secret mysecret -o yaml
# and base64 decode
Run Code Online (Sandbox Code Playgroud)

如何限制访问此秘密?我只想要一些豆荚,只有我作为操作员才能访问这个秘密.

rbac kubernetes

4
推荐指数
1
解决办法
1827
查看次数

如何在 ubuntu 18.04 LTS 上更改 docker 的根目录?(docker 更改卷的位置)

我安装了 ubuntu 18.04 LTS 并检查了 docker (17.06.2-ce) 的设置以同时安装。

我通过启动 hello-world ( sudo docker run hello-world)进行了测试:

[...] Docker 向您问好!此消息表明您的安装似乎工作正常。[...]

我在名为 的文件夹上安装了一个软件raid /raid,并/docker-data在其中创建了一个文件夹。

我尝试/raid/docker-data/按照网络上的几个教程更改我的 docker 的根目录以将其放入...徒劳无功。

这些解决方案也不起作用

  • /etc/default/docker : 这个找不到
  • 如第二个解决方案:docker 找不到他的文件夹。

Docker 根目录:/var/snap/docker/common/var-lib-docker

最近几个月有没有人设法做到这一点?

(这是我第三次安装 ubuntu,我刚刚把它弄坏了......)


显然在 Ubuntu 18.04 LTS 上,docker 17.06.2-它需要与 snap 配合使用,我打算以这种方式进行挖掘。我稍后会尝试回复答案...

docker ubuntu-18.04

4
推荐指数
2
解决办法
9610
查看次数