मैं डॉकर के लिए नया हूं इसलिए हो सकता है कि मेरे पास कुछ शब्दावली सही न हो। कंटेनर के अंदर मुझे होस्ट के साथ साझा की गई निर्देशिका पर अनुमति अस्वीकृत त्रुटि मिल रही है। वे मेल खाते uid:gid दिखाई देते हैं और अनुमतियाँ होस्ट पक्ष 777 हैं। कंटेनर पृष्ठभूमि में चलने के लिए नहीं है।

मैं अविश्वसनीय कार्यक्रमों की एक बड़ी श्रृंखला को चलाने के लिए कंटेनर का उपयोग कर रहा हूं, प्रत्येक को एक ही प्रारंभिक स्थितियों की आवश्यकता होती है। इसलिए मुझे नहीं लगता कि निर्माण के समय डोकर छवि में सामान की प्रतिलिपि बनाना संभव है। मुझे लगा कि सबसे अच्छी बात यह है कि होस्ट पर एक समय में एक प्रोग्राम को एक अस्थायी निर्देशिका में कॉपी करें और फिर उस निर्देशिका को प्रत्येक रन के लिए नए कंटेनर के साथ साझा करें। मुझे कंटेनर-रन प्रोग्राम से आउटपुट एकत्र करने और उन्हें होस्ट पर रखने की भी आवश्यकता है ताकि मैं देख सकूं कि प्रत्येक प्रोग्राम का आउटपुट दूसरों से कैसे भिन्न होता है।

मैंने निम्नलिखित प्रश्नों/उत्तरों को देखा है:

मैं हूँ:

  • एक सामान्य उपयोगकर्ता यूआईडी 1000, जीआईडी ​​1000 के रूप में चल रहे डॉकर, समूह से भी संबंधित हैं docker
  • साझा निर्देशिका होस्ट पक्ष पर uid के साथ 777 होने की अनुमति सेट करना: 1000:1000 के रूप में gid जो उपयोगकर्ता के समान है
  • मेजबान से यूआईडी और जीआईडी ​​​​मिलान करने के लिए कंटेनर के अंदर यूआईडी और जीआईडी ​​सेट करना
  • प्रत्येक 1000 एक यूआईडी और जीआईडी ​​बनाने के लिए डॉकरफाइल का उपयोग करना

मैंने पढ़ा यहाँ कि If the first argument begins with a / or ~/, you’re creating a bindmount. Remove that, and you’re naming the volume. तो मैंने दोनों की कोशिश की। ऐसा लगता है कि बाइंडमाउंट संस्करण में सही uid:gid है, लेकिन अनुमति नहीं दी गई है, वॉल्यूम संस्करण root:root के रूप में सामने आता है।

एक नौसिखिया के रूप में यह जानना कठिन है कि कौन सी जानकारी साझा की जाए, इसलिए यहां वह सब कुछ है जो मुझे लगता है कि उपयोगी हो सकता है:

डॉकर कमांड प्रयास 1

[osboxes@osboxes tmp]$ pwd
/var/tmp
osboxes@osboxes tmp]$ whoami
osboxes
[osboxes@osboxes tmp]$ grep osboxes /etc/passwd
osboxes:x:1000:1000:osboxes.org:/home/osboxes:/bin/bash
[osboxes@osboxes tmp]$ groups
osboxes wheel vboxsf docker
[osboxes@osboxes tmp]$ grep osboxes /etc/group
wheel:x:10:osboxes
osboxes:x:1000:osboxes
vboxsf:x:981:osboxes
docker:x:1001:osboxes

[osboxes@osboxes tmp]$ ls -al
total 2
drwxrwxrwt. 11 root    root    4096 Dec 31 12:13 .
drwxr-xr-x. 21 root    root    4096 Jul  5 05:00 ..
drwxr-xr-x.  2 abrt    abrt       6 Jul  5 05:00 abrt
drwxrwxrwx.  2 osboxes osboxes    6 Dec 31 12:13 host

कायम है...

[osboxes@osboxes tmp]$ docker run --rm -v /var/tmp/host:/var/tmp/container:rw \
--user appuser:appgroup --workdir /var/tmp/container \
-it alpine_bash_jdk11 /bin/bash
bash-5.0$ pwd
/var/tmp/container
bash-5.0$ ls -al
ls: can't open '.': Permission denied
total 0
bash-5.0$ ls -al ..
total 0
drwxrwxrwt    1 root     root            23 Dec 31 12:51 .
drwxr-xr-x    1 root     root            17 Dec 16 10:31 ..
drwxrwxrwx    2 appuser  appgroup         6 Dec 31 12:13 container
bash-5.0$ whoami
appuser
bash-5.0$ groups
appgroup
bash-5.0$ grep appuser /etc/passwd
appuser:x:1000:1000:Linux User,,,:/home/appuser:/sbin/nologin
bash-5.0$ grep appuser /etc/group
appgroup:x:1000:appuser

डॉकर कमांड प्रयास 2

everything as before except
for removing the qualified path to the host's
/var/tmp/host directory

docker run --rm -v host:/var/tmp/container:rw \
--user appuser:appgroup --workdir /var/tmp/container \
-it alpine_bash_jdk11 /bin/bash

bash-5.0$ pwd
/var/tmp/container
bash-5.0$ ls -al
total 0
drwxr-xr-x    2 root     root             6 Dec 31 12:13 .
drwxrwxrwt    1 root     root            23 Dec 31 13:03 ..
bash-5.0$ ls -al ..
total 0
drwxrwxrwt    1 root     root            23 Dec 31 13:03 .
drwxr-xr-x    1 root     root            17 Dec 16 10:31 ..
drwxr-xr-x    2 root     root             6 Dec 31 12:13 container
bash-5.0$ whoami
appuser
bash-5.0$ groups
appgroup
bash-5.0$ echo hello from contanier > container.msg.txt
bash: container.msg.txt: Permission denied

डॉकर बिल्ड कमांड

as user osboxes
docker build -t alpine_bash_jdk11 .

डॉकरफाइल

FROM alpine:latest
RUN apk --no-cache update
RUN apk add --no-cache bash
RUN apk --no-cache add openjdk11 --repository=http://dl-cdn.alpinelinux.org/alpine/edge/community

ENV JAVA_HOME="/usr/lib/jvm/default-jvm"
ENV PATH=$PATH:${JAVA_HOME}/bin

RUN addgroup -g 1000 -S appgroup && adduser -S appuser -G appgroup -u 1000
USER appuser

मैंने डॉकर कंपोज़ का उपयोग नहीं किया है क्योंकि मैं अभी भी अपने सिर को मूल डॉकर के चारों ओर ले जा रहा हूं।

वर्चुअल मशीन जो डॉकर होस्ट है

CentOS 7.2003 from osboxes.org, organization's decision, not mine
Linux osboxes 3.10.0-1160.11.1.el7.x86_64 #1 SMP Fri Dec 18 16:34:56 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux
I did a yum update, then yum installed all the stuff needed to install VirtualBox guest additions which is working ok
Docker version 1.13.1, build 0be3e21/1.13.1

भौतिक मेजबान

Windows 10 64-bit
VirtualBox 6.1.4r136177
both these are the organization's decisions
0
Doc Octal 31 पद 2020, 17:20

1 उत्तर

सबसे बढ़िया उत्तर

टीएल; डॉ: गलत यम कमांड के कारण डॉकर का पुराना संस्करण था

उत्तर: docker को yum -y install docker के बजाय yum -y install docker-ce से इंस्टॉल करें

समाधान: डॉकर अपडेट करें

यह लेख मिलने के बाद मैंने देखा कि मेरे पास docker का गलत संस्करण था। मैंने उचित रूप से सोचा था कि सही आदेश था

sudo yum install -y docker

लेकिन यह docker-ce होना चाहिए था

मुझे yum erase -y docker docker-common करना था

अब मेरे पास Docker version 20.10.1, build 831ebea है

0
Sabito 錆兎 1 जिंदा 2021, 14:59