จะรัน vi บน Docker container ได้อย่างไร?


101

ฉันได้ติดตั้งนักเทียบท่าบนเครื่องเสมือนโฮสต์ของฉันแล้ว และตอนนี้ต้องการสร้างไฟล์โดยใช้vi.

แต่มันแสดงข้อผิดพลาด:

bash: vi: command not found

1
ไม่สามารถติดตั้ง vi ภายในคอนเทนเนอร์ได้ คุณติดตั้งและเรียกใช้คอนเทนเนอร์ใด
Hüseyin BABAL

1
คุณต้องเจาะจงมากขึ้น คุณกำลังพยายามเรียกใช้ vi ภายในคอนเทนเนอร์หรือไม่หากเป็นเช่นนั้นรูปภาพใดที่ใช้คอนเทนเนอร์ ในทุกโอกาสที่คุณไม่ได้ติดตั้ง vi (apt-get install vim)
wpp

ขึ้นอยู่กับว่าimageคุณกำลังสร้างจากอะไร ส่วนใหญ่imageคุณใช้งานเบามากจนมี แต่สิ่งที่คุณต้องใช้เพื่อแสดงเป็นรูปภาพ คุณต้องติดตั้งแพ็คเกจที่คุณต้องการด้วยตนเอง
นักวาดภาพลวงตา

3
คุณอาจไม่ควรทำ config ภายในคอนเทนเนอร์ ทำใน Dockerfile แทน
Adrian Mouat

3
เป็นไปได้ที่จะซ้ำกันของHow to edit file หลังจากที่ฉันเชลล์ไปยัง Docker container?
AB

คำตอบ:


139

ล็อกอินเข้าสู่คอนเทนเนอร์ด้วยคำสั่งต่อไปนี้:

docker exec -it <container> bash

จากนั้นรันคำสั่งต่อไปนี้

apt-get update
apt-get install vim

11
หากคุณพบปัญหาการอนุญาตถูกปฏิเสธขณะรัน apt-get คุณต้องเรียกใช้ docker exec ในฐานะ root "docker exec -u root -it <container> bash" จากนั้น apt-get ควรทำงาน
java25

ขอบคุณ @arunprakashpj. คำสั่งเดียวที่ใช้ได้กับภาพที่ดาวน์โหลดจากที่เก็บ AWS
realPK

36

คอนเทนเนอร์ของคุณอาจยังไม่ได้ติดตั้งออกจากกล่อง

วิ่งapt-get install vimในเทอร์มินัลและคุณควรพร้อมที่จะไป


2
ใช่ แต่ฉันชอบvim-tiny(Ubuntu)
Ben Whaley

2
ก่อนที่จะเรียกใช้ 'apt-get install vim' คุณต้องเรียกใช้ 'apt-get update'
user1521213

2
แรกapt-get updateแล้วapt-get install vim
Yogi Ghorecha

30

คำสั่งในการรันขึ้นอยู่กับว่าคุณใช้อิมเมจพื้นฐานใด

สำหรับ Alpine viถูกติดตั้งเป็นส่วนหนึ่งของ OS พื้นฐาน การติดตั้งvimจะเป็น:

apk -U add vim

สำหรับ Debian และ Ubuntu:

apt-get update && apt-get install -y vim

สำหรับ CentOS viมักจะติดตั้งกับ OS พื้นฐาน สำหรับvim:

yum install -y vim

สิ่งนี้ควรทำในการพัฒนาในช่วงต้นเท่านั้น เมื่อคุณได้รับคอนเทนเนอร์ที่ใช้งานได้แล้วควรทำการเปลี่ยนแปลงไฟล์กับรูปภาพของคุณหรือกำหนดค่าที่เก็บไว้นอกคอนเทนเนอร์ของคุณ อัปเดต Dockerfile และไฟล์อื่น ๆ ที่ใช้สร้างอิมเมจใหม่ สิ่งนี้ไม่ควรทำในการผลิตอย่างแน่นอนเนื่องจากการเปลี่ยนแปลงภายในคอนเทนเนอร์นั้นเกิดจากการออกแบบชั่วคราวและจะสูญหายไปเมื่อเปลี่ยนคอนเทนเนอร์


1
ข้อผิดพลาด: ไม่สามารถล็อกฐานข้อมูล: ปฏิเสธการอนุญาต
garg10 อาจ

1
คำสั่ง @ garg10may ต้องรันในฐานะรูท USER rootภายใน Dockerfile ทำได้ แต่อย่าลืมเปลี่ยนกลับไปใช้ผู้ใช้รายอื่นของคุณ ฉันเป็นตู้คอนเทนเนอร์:docker exec -u root ...
BMitch

19

ใช้สิ่งนี้:

apt-get update && apt-get install -y vim

คำอธิบายของคำสั่งดังกล่าว

  1. apt-get update => จะอัปเดตแพ็คเกจปัจจุบัน
  2. apt-get install => จะติดตั้งแพ็คเกจ
  3. -y => จะผ่านการอนุญาตสิทธิ์เริ่มต้นจะตั้งค่าเป็นใช่
  4. vim => ชื่อแพ็กเกจที่คุณต้องการติดตั้ง

12

เพิ่มบรรทัดต่อไปนี้ใน Dockerfile ของคุณจากนั้นสร้างอิมเมจนักเทียบท่าใหม่

RUN apt-get update && apt-get install -y vim

8

หรืออีกวิธีหนึ่งให้รูปภาพนักเทียบท่าของคุณมีขนาดเล็กโดยไม่ติดตั้งโปรแกรมแก้ไขที่ไม่จำเป็น คุณสามารถแก้ไขไฟล์ผ่าน ssh จากโฮสต์นักเทียบท่าไปยังคอนเทนเนอร์:

vim scp://remoteuser@container-ip//path/to/document

3
สิ่งนี้จะไม่ได้ผลก็ต่อเมื่อคอนเทนเนอร์กำลังเรียกใช้ sshหรือไม่? ตอนแรกฉันคิดว่ามันเป็นความคิดที่ยอดเยี่ยม แต่ดูเหมือนจะใช้งานไม่ได้
Kevin

7

ใช้คำสั่งด้านล่างในคอนเทนเนอร์ที่ใช้ Debian:

apt-get install vim-tiny

คำแนะนำที่สมบูรณ์สำหรับการใช้งานใน Dockerfile:

RUN apt-get update && apt-get install --no-install-recommends -y \   
 vim-tiny \  
 && apt-get clean && rm -rf /var/lib/apt/lists/*

ไม่ได้ติดตั้งแพ็กเกจที่ไม่จำเป็นและลบไฟล์ที่ดาวน์โหลดโดยไม่จำเป็นดังนั้นขนาดอิมเมจนักเทียบท่าของคุณจะไม่เพิ่มขึ้นมาก


3

ในการติดตั้งภายในคอนเทนเนอร์ Docker ของคุณคุณสามารถเรียกใช้คำสั่ง

นักเทียบท่า exec apt-get update && apt-get install -y vim

แต่จะ จำกัด เฉพาะคอนเทนเนอร์ที่ติดตั้ง vim เพื่อให้พร้อมใช้งานกับคอนเทนเนอร์ทั้งหมดให้แก้ไข Dockerfile และเพิ่ม

RUN apt-get update && apt-get install -y vim

หรือคุณสามารถขยายภาพใน Dockerfile ใหม่และเพิ่มคำสั่งด้านบน เช่น.

จาก <ชื่อภาพ>

RUN apt-get update && apt-get install -y vim


1

ภายในคอนเทนเนอร์ (ใน Docker ไม่ใช่ใน VM) โดยค่าเริ่มต้นจะไม่ได้รับการติดตั้ง แม้apt-get , wgetจะไม่ทำงาน VM ของฉันกำลังทำงานบน Ubuntu 17.10 สำหรับฉันยำแพคเกจ manaager ทำงาน

Yum ไม่ได้เป็นส่วนหนึ่งของ debian หรือ ubuntu เป็นส่วนหนึ่งของหมวกสีแดง แต่มันใช้งานได้ใน Ubuntu และติดตั้งตามค่าเริ่มต้นเช่น apt-get

Tu ติดตั้งเป็นกลุ่มใช้คำสั่งนี้

yum install -y vim-enhanced 

ในการถอนการติดตั้ง vim:

yum uninstall -y vim-enhanced 

ในทำนองเดียวกัน

yum install -y wget 
yum install -y sudo 

-y คือสมมติว่าใช่หากได้รับแจ้งสำหรับ qustion ใด ๆ ที่ถามหลังจากทำyum install packagename


0

หากคุณต้องการตัวแก้ไขขนาดเล็กสำหรับการดูแลทำความสะอาดแบบง่ายในนักเทียบท่าให้ใช้สิ่งนี้ใน Dockerfile ของคุณ:

RUN apt-get install -y busybox && ln -s /bin/busybox /bin/vi

ฉันใช้มันกับนักเทียบท่าที่ใช้ Ubuntu 18 (แน่นอนว่าคุณอาจต้องมีRUN apt-get updateมาก่อน แต่ถ้าคุณกำลังสร้างไฟล์ Docker ของคุณเองคุณอาจมีไฟล์นั้นอยู่แล้ว)


0

หากคุณต้องการเปลี่ยนไฟล์เพียงครั้งเดียว คุณควรทำการเปลี่ยนแปลงภายในเครื่องและสร้างอิมเมจนักเทียบท่าใหม่ด้วยไฟล์นี้

พูดในภาพนักเทียบท่าคุณต้องเปลี่ยนไฟล์ชื่อ myFile.xml ภายใต้ / path / to / docker / image / ดังนั้นคุณต้องทำ

  1. คัดลอก myFile.xml ในระบบไฟล์ในเครื่องของคุณและทำการเปลี่ยนแปลงที่จำเป็น
  2. สร้างไฟล์ชื่อ 'Dockerfile' โดยมีเนื้อหาดังต่อไปนี้ -
FROM docker-repo:tag
ADD myFile.xml /path/to/docker/image/

จากนั้นสร้างภาพนักเทียบท่าของคุณเองด้วย docker build -t docker-repo:v-x.x.x .

จากนั้นใช้อิมเมจนักเทียบท่าที่สร้างขึ้นใหม่

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