这是 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"还有一些但没有解决问题。
我们目前正在处理两个项目:
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呢?
我试过了kubectl rollout history deployment/my-app,它只返回No rollout history found.
我认为存在一种获取所有部署历史记录的方法.这将非常有帮助.
参考官方文件:https://kubernetes.io/docs/concepts/workloads/controllers/deployment/
我正在尝试将 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 容器中获取数据库
我正在使用“普通”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)
我不知道如何重写或覆盖官方镜像中的命令。出于更新原因,如果可能的话,我也想保留这些图像。
如果我的容器中有一个有问题的应用程序,它不断地写入 emptyDir 卷,它可能会用完工作节点上的所有空间并影响节点上其他 pod/容器的性能。因此,打破容器相互隔离的预期,一个容器所做的事情不应该对节点上的其他容器产生负面影响。
有没有办法限制 emptyDir 卷(不是基于 RAM 的 emptyDir 类型)使用的磁盘空间量?
我有一个简单的部署,有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的秘密.
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)
如何限制访问此秘密?我只想要一些豆荚,只有我作为操作员才能访问这个秘密.
我安装了 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 根目录:/var/snap/docker/common/var-lib-docker
最近几个月有没有人设法做到这一点?
(这是我第三次安装 ubuntu,我刚刚把它弄坏了......)
显然在 Ubuntu 18.04 LTS 上,docker 17.06.2-它需要与 snap 配合使用,我打算以这种方式进行挖掘。我稍后会尝试回复答案...
docker ×5
kubernetes ×4
mongodb ×2
cron ×1
deployment ×1
dockerfile ×1
postgresql ×1
rbac ×1
ubuntu-18.04 ×1