คำถามติดแท็ก docker

นักเทียบท่าเป็นแอปพลิเคชั่นเพื่อสร้างคอนเทนเนอร์สำหรับแอปพลิเคชัน

2
คำสั่ง locale-gen ใน centos6
ในระบบ centos6.5 ของฉันซึ่งเป็นที่dockerบรรจุระบบen_US.utf-8ภาษาจะหายไป: bash-4.1# locale -a C POSIX โดยปกติใน Ubuntu มีคำสั่งlocale-genให้ทำเช่นนี้: # locale-gen en_US.UTF-8 # echo 'LANG="en_US.UTF-8"' > /etc/default/locale ฉันจะทำสิ่งนี้ใน centos 6.5 ได้อย่างไร
17 locale  centos  docker 

3
นักเทียบท่าจะแทนที่ไฟล์ /etc/resolv.conf ของฉันภายในคอนเทนเนอร์
ฉันต้องการตั้งค่าresin/rpi-raspbian:jessieคอนเทนเนอร์ของฉันเป็น/etc/resolv.conf: nameserver 208.67.222.222 nameserver 208.67.220.220 My Dockerfile มีบรรทัดต่อไปนี้: ADD resolv.conf /etc/resolv.conf ไฟล์ที่เพิ่มนี้มีเนมเซิร์ฟเวอร์ที่ถูกต้อง โฮสต์ของนักเทียบท่าของฉัน/etc/resolv.confมีข้อมูลที่ถูกต้อง ฉันใช้ภาชนะเช่นนี้: docker run -itd --cap-add=NET_ADMIN --device /dev/net/tun \ -v /home/pi/share/ovpn:/ovpn \ --privileged --network=internet_disabled --name vpn-client \ --dns=208.67.222.222 \ openvpn-client_nat-gateway /bin/bash แม้ทั้งหมดนี้คอนเทนเนอร์จะให้ผลลัพธ์นี้: root@642b0f4716ba:/# cat /etc/resolv.conf nameserver 127.0.0.11 options ndots:0 เป็นเพียงหลังจากที่ฉันเปลี่ยน resolv.conf ด้วยตนเองจากภายในคอนเทนเนอร์ (หรือกับนักเทียบท่า exec) ที่มันดูถูกต้อง ฉันควรหลีกเลี่ยงการแก้ไขด้วยคำสั่ง exec ใครมีความคิดว่าเกิดอะไรขึ้นที่นี่
17 docker 

4
ฉันจะเปลี่ยน lsof ภายใน Docker ได้อย่างไร (เป็นภาษาท้องถิ่นไม่ใช่ LXC)
ฉันค่อนข้างงุนงงว่าภายในคอนเทนเนอร์ Docker lsof -iไม่ได้ให้ผลลัพธ์ใด ๆ ตัวอย่าง (คำสั่ง / เอาต์พุตทั้งหมดจากภายในคอนเทนเนอร์): [1] root@ec016481cf5f:/# lsof -i [1] root@ec016481cf5f:/# netstat -tulpn Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN - tcp6 0 0 :::22 :::* LISTEN - โปรดทราบว่าไม่มี PID netstatหรือโปรแกรมชื่อแสดงโดยfuserยังให้ผลลัพธ์ที่ค่อนข้างสับสนและไม่สามารถระบุ PID …

3
นักเทียบท่า: สร้างปริมาณคงที่ในไดเรกทอรีเฉพาะ
ฉันต้องสร้างโวลุ่มแบบถาวรสำหรับ Docker ปริมาณการซื้อขายจะต้องมีชื่อและตั้งอยู่ในextra-addons/mnt/ ฉันรันคำสั่งนี้: sudo docker volume create /mnt/extra-addons ฉันได้รับข้อความแสดงข้อผิดพลาดนี้: Error response from daemon: create /mnt/extra-addons: "/mnt/extra-addons" includes invalid characters for a local volume name, only "[a-zA-Z0-9][a-zA-Z0-9_.-]" are allowed. If you intended to pass a host directory, use absolute path โปรดทราบว่าเมื่อฉันรันเพียง: sudo docker volume create extra-addonsฉันไม่ประสบปัญหานี้ แต่เมื่อฉันตรวจสอบระดับเสียงที่เป็นปัญหาโดยใช้sudo docker inspect extra-addonsฉันเห็นว่ามันอยู่ในสถานที่ที่ฉันไม่ต้องการ: …
16 docker 

1
cgroupfs คืออะไรและใช้กับนักเทียบท่าได้อย่างไร
ในเอกสารนักเทียบท่ามีการพูดคุยเกี่ยวกับตัวเลือกต่าง ๆ สำหรับตัวเรียกใช้งานดั้งเดิม ( https://docs.docker.com/engine/reference/commandline/daemon/ ) เอกสารกล่าวว่า ตัวเลือก native.cgroupdriver ระบุการจัดการของกลุ่ม cg คุณสามารถระบุ cgroupfs หรือ systemd หากคุณระบุ systemd และไม่พร้อมใช้งานระบบจะใช้ cgroupfs โดยค่าเริ่มต้นหากไม่มีการระบุตัวเลือกตัวดำเนินการตัวแรกจะพยายาม systemd และกลับไปที่ cgroupfs ตัวอย่างนี้ตั้งค่า execdriver เป็น cgroupfs: คำถามของฉันคืออะไรcgroupfsและมันเปรียบเทียบกับsystemdในกรณีนี้อย่างไร Googling สำหรับข้อมูลเกี่ยวกับcgroupfsนำไปสู่การทวีต : --exec-opt native.cgroupdriver = cgroupfs FTW จริงจัง @docker, ลดการสนับสนุนกลุ่ม cg ที่จัดการโดย systemd มันเป็นความหายนะ แต่ฉันหวังว่าบางคนสามารถให้รายละเอียดเพิ่มเติมเกี่ยวกับสิ่งนี้ทำอะไรได้มากกว่าแค่บอกว่าใช้การตั้งค่าที่แตกต่างจากค่าเริ่มต้น
16 linux  docker 

2
ฉันจะเรียกใช้โปรแกรมกราฟิกในคอนเทนเนอร์ใต้ Wayland ได้อย่างไร
เมื่อฉันใช้เดสก์ท็อป X11 ฉันสามารถเรียกใช้แอปพลิเคชั่นกราฟิกในคอนเทนเนอร์นักเทียบท่าโดยการแชร์$DISPLAYตัวแปรและ/tmp/X11-unixไดเรกทอรี ตัวอย่างเช่น: docker run -ti -e DISPLAY=$DISPLAY -v /tmp/.X11-unix:/tmp/.X11-unix some:ubuntu xclock ตอนนี้ฉันกำลังใช้ Wayland อยู่ใน Fedora 25 ดังนั้นจึงไม่มีโครงสร้างพื้นฐาน X11 ที่จะแชร์กับคอนเทนเนอร์ ฉันจะเปิดแอปพลิเคชั่นแบบกราฟิกในคอนเทนเนอร์ได้อย่างไรและให้ปรากฏบนเดสก์ท็อปของฉันได้อย่างไร มีวิธีผูกมัดใน XWayland ไหม?
15 x11  docker  wayland 

2
ฉันควรใช้การอัปเดต apt-get เมื่อใดและเพราะเหตุใด
คำถามทั่วไป: บางคนสามารถอธิบายสิ่งที่คำสั่งapt-get updateทำและเมื่อฉันควรใช้มันจริงเหรอ? หมายเหตุ โปรดให้คำตอบรายละเอียด ไม่ใช่แค่สำเนาของ man page ยกเว้นว่าเวอร์ชั่นของคุณมีรายละเอียดมาก (ฉันใส่นิยามจาก man page ด้านล่าง) apt-get update : ใช้เพื่อซิงโครไนซ์ไฟล์ดัชนีแพ็คเกจจากแหล่งที่มา ดัชนีของแพ็คเกจที่มีอยู่จะถูกดึงจากตำแหน่งที่ระบุใน /etc/apt/sources.list(5) ควรทำการอัปเดตเสมอก่อนที่จะอัปเกรดหรืออัพเกรด Sub-คำถาม: จัดเก็บดัชนีแพ็กเกจไว้ที่ไหน บนฐานข้อมูล ในไฟล์? จะเกิดอะไรขึ้นถ้าฉันapt-get installไม่อัพเดทแคช? มีโอกาสที่แพ็กเกจระยะไกลจะไม่อยู่อีกต่อไปและลิงก์จะใช้งานไม่ได้หรือไม่ มีบางการเมืองที่ตกลงกันเกี่ยวกับที่เก็บ deb หรือไม่? ตัวอย่างเช่นที่เก็บควรมีเพียงเวอร์ชันสุดท้ายของแพ็คเกจหรือในทางตรงกันข้ามมันควรมีทุกเวอร์ชั่นสำหรับการเผยแพร่เฉพาะ? บริบท ฉันถามคำถามของฉันเพราะฉันกำลังศึกษากรอบเทียบท่า หนึ่งในคุณสมบัติของมันคือDockerfileซึ่งช่วยให้คุณสร้างอิมเมจระบบปฏิบัติการได้โดยเรียกใช้คำสั่งจากไฟล์นี้ คุณสมบัติหนึ่งของภาพนี้คือมันควรจะเหมือนกันเสมอไม่ว่าบริบทคืออะไร (เวลาของการสร้าง ฯลฯ ) ฉันกลัวว่าถ้าฉันเปิดใช้งานapt-get updateคำสั่งในเวลาที่ต่างกันผลลัพธ์จะแตกต่างกันดังนั้นรูปภาพของฉันจะแตกต่างกัน
15 apt  docker 

5
ไม่สามารถติดตั้ง man page บนคอนเทนเนอร์ Centos Docker ที่น้อยที่สุด
ฉันมีอิมเมจ Center 7 Docker น้อยที่สุดและฉันพยายามหาหน้าเว็บเพื่อช่วยในการดีบัก Dockerfile ของฉัน ออกจากกล่องมันมีไม่มาก: # man ls No manual entry for ls ตามคำตอบ Serverfault นี้ฉันได้ติดตั้งman-pagesRPM และดูเหมือนว่าจะไม่เป็นไร: # yum install -y man-pages Loaded plugins: fastestmirror, ovl Loading mirror speeds from cached hostfile * base: mirror.vtti.vt.edu * extras: centos.mbni.med.umich.edu * updates: centos.netnitco.net Resolving Dependencies --> Running transaction check …
13 centos  rpm  man  docker 

4
นักเทียบท่า + สะพาน + DHCP
ฉันมีคอนเทนเนอร์นักเทียบท่าจำนวนมากที่ฉันต้องการแอดเดรสบน LAN เดียวกันกับโฮสต์ของพวกเขา จนถึงตอนนี้ฉันได้รับสิ่งนี้โดยใช้การตั้งค่าบริดจ์และกำหนด IP ด้วยตนเองและจัดการ IP ด้วยตนเอง ตัวอย่างการเริ่มต้นจะเป็นเช่นนั้น: docker run \ --net="none" \ \ --lxc-conf="lxc.network.type = veth" \ --lxc-conf="lxc.network.ipv4 = 192.168.1.3/24" \ --lxc-conf="lxc.network.ipv4.gateway = 192.168.1.254" \ --lxc-conf="lxc.network.link = br0" \ --lxc-conf="lxc.network.name = eth0" \ --lxc-conf="lxc.network.flags = up" \ -d [Docker Image ID] ด้วยโฮสต์ที่มีการกำหนดบริดจ์ใน/etc/network/interfaces(Ubuntu) ดังนี้: auto eth0 iface eth0 inet …
13 dhcp  bridge  docker 

2
ไม่สามารถเรียกใช้ docker hello-world: จุดเมานต์สำหรับอุปกรณ์ที่ไม่พบ
ใหม่สำหรับนักเทียบท่า mint 17ติดตั้งนักเทียบท่าจากเครื่องมือการจัดการซอฟต์แวร์ เมื่อฉันวิ่ง docker run hello-worldฉันได้รับ: FATA[0000] Error response from daemon: Cannot start container a6bcc1ede2c38cb6b020cf5ab35ebd51b64535af57fa44f5966c37bdf89c8781: [8] System error: mountpoint for devices not found เมื่อฉันดูบันทึกการบริการ ( /var/log/upstart/docker.log) ฉันเห็น: ERRO[0617] Couldn't run auplink before unmount: exec: "auplink": executable file not found in $PATH ERRO[0617] Couldn't run auplink before unmount: exec: "auplink": …

1
ฉันสามารถสร้าง Docker container จาก Dockerfile ด้วยวิธีการโต้ตอบโดยการจัดสรร TTY หลอกได้ไหม?
ฉันสร้างคอนเทนเนอร์จาก Dockerfile ด้านล่าง: FROM ubuntu:14.04 ... RUN apt-get update && apt-get install -y vim #RUN ssh-keygen -f /root/.ssh/id_rsa -N strongpass123$%^ RUN ssh-keygen -f /root/.ssh/id_rsa ... ฉันทำมันค่อนข้างน้อย แต่มีคำสั่งมากมายก่อนที่จะใช้ssh-keygenและหลังจากนั้น ฉันรู้ว่าฉันสามารถทำได้จากสคริปต์ผ่านdocker exec -it thirsty_darwin sh script.shแล้วติดแท็กอิมเมจแล้วใช้การผูกมัดของคอนเทนเนอร์ (อิมเมจ) แต่มันไม่ได้เป็นวิธีการแก้ปัญหาที่ชัดเจนตามที่ฉันต้องการ แม้แต่กรณีที่แย่ที่สุดคือssh-add ~/.ssh/id_rsaเมื่อฉันต้องใช้เครื่องมือคาดหวัง เครื่องมือที่คาดว่าได้รหัสผ่านของฉัน hardcoded ฉันไม่ต้องการทำ

4
เป็นไปได้หรือไม่ที่จะแก้ไขไฟล์ yml ผ่าน shell script?
นี่คือลักษณะที่นักเทียบท่าของฉัน-compose.yml ดูเหมือน nginx: container_name: 'nginx' image: 'nginx:1.11' restart: 'always' ports: - '80:80' - '443:443' volumes: - '/opt/nginx/conf.d:/etc/nginx/conf.d:ro' links: - 'anything' ตอนนี้ฉันต้องเพิ่มเนื้อหาผ่านเชลล์สคริปต์ (บนเซิร์ฟเวอร์ ubuntu) ฉันไม่แน่ใจว่ามันจะเป็นไปได้ทั้งหมด: เพิ่มองค์ประกอบใหม่ให้กับnginx/linksหากไม่มีอยู่ ผนวกnewthingบล็อกถ้าไม่มีสิ่งบล็อกใหม่อยู่ เนื้อหาใหม่ควรมีลักษณะเช่นนี้: nginx: container_name: 'nginx' image: 'nginx:1.11' restart: 'always' ports: - '80:80' - '443:443' volumes: - '/opt/nginx/conf.d:/etc/nginx/conf.d:ro' - '/etc/letsencrypt:/etc/letsencrypt' links: - 'anything' - 'newthing' newthing: …

2
ทำไมนักเทียบท่าจึงต้องการสิทธิ์รูท
ฉันกำลังเรียนรู้นักเทียบท่าและฉันก็ชอบมาก อย่างไรก็ตามฉันไม่เข้าใจว่าทำไมนักเทียบท่าจึงต้องการสิทธิ์รูทในการสร้างตู้คอนเทนเนอร์อ่านบันทึกและอื่น ๆ ฉันได้อ่านบทความบางอย่างเช่นนี้ https://docs.docker.com/articles/security/ แต่ทั้งหมดที่ฉันเห็นคือ "นักเทียบท่าต้องการสิทธิ์รูทเพราะสามารถเข้าถึงโฟลเดอร์รูทได้" ฉันไม่รังเกียจที่จะเรียกใช้นักเทียบท่าในฐานะที่ไม่ใช่รูทและให้พวกเขาเข้าถึงเฉพาะโฟลเดอร์ที่ไม่ใช่ผู้ใช้รูทในระบบภายนอก ทำไมถึงเป็นปัญหา?
11 docker 

2
โปรไฟล์ AppArmor ใน Docker / LXC
ฉันมี Docker container (LXC) ที่รัน MySQL เนื่องจากความคิดที่อยู่เบื้องหลัง Docker โดยทั่วไปคือ "หนึ่งกระบวนการทำงานต่อคอนเทนเนอร์" ถ้าฉันกำหนดโปรไฟล์ AppArmor ที่กำหนดเป้าหมายไปที่ไบนารี MySQL พวกเขาจะถูกบังคับใช้หรือไม่ มีวิธีที่ฉันจะทดสอบสิ่งนี้หรือไม่?
11 lxc  apparmor  docker 

1
bash ปรับขนาดไม่ถูกต้องภายในคอนเทนเนอร์ Docker แบบโต้ตอบ
ทุกครั้งที่มีการเปลี่ยนแปลงขนาดเทอร์มินัลโดยปกติbashจะเป็นresizeโดยอัตโนมัติเพื่อให้LINESและCOLUMNSจะคำนวณใหม่อย่างถูกต้อง แต่ด้วยเหตุผลบางอย่างสิ่งนี้ไม่ทำงานภายในคอนเทนเนอร์ Docker ที่ทำงานbashแบบโต้ตอบ ฉันมีshopt checkwinsize -sของฉันbashrcในคอนเทนเนอร์ Docker (และตรวจสอบว่ามีการonใช้งานshopt) เหมือนกับbashเซสชันโฮสต์ ฉันคิดไม่ออกจริงๆ shopt checkwinsize -sเป็นวิธีเดียวที่ฉันได้พบว่าได้รับbashการประเมินโดยอัตโนมัติresizeเมื่อปรับขนาดหน้าต่าง
11 bash  docker 

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.