[docker] Docker 컨테이너에 셸한 후 파일을 어떻게 편집합니까?

다음을 사용하여 Docker 컨테이너에 성공적으로 쉘했습니다.

docker exec -i -t 69f1711a205e bash

이제 파일을 편집해야하며 안에 편집기가 없습니다.

root@69f1711a205e:/# nano
bash: nano: command not found
root@69f1711a205e:/# pico
bash: pico: command not found
root@69f1711a205e:/# vi
bash: vi: command not found
root@69f1711a205e:/# vim
bash: vim: command not found
root@69f1711a205e:/# emacs
bash: emacs: command not found
root@69f1711a205e:/#

파일은 어떻게 편집합니까?



답변

주석에서와 같이 기본 편집기 세트가 없습니다-이상합니다- $EDITOR환경 변수가 비어 있습니다. 다음을 사용하여 컨테이너에 로그인 할 수 있습니다.

docker exec -it <container> bash

그리고 다음을 실행하십시오.

apt-get update
apt-get install vim

또는 다음 Dockerfile을 사용하십시오.

FROM  confluent/postgres-bw:0.1

RUN ["apt-get", "update"]
RUN ["apt-get", "install", "-y", "vim"]

Docker 이미지는 최소한으로 트리밍되어 제공되므로 배송 된 컨테이너에 편집기가 설치되어 있지 않습니다. 그렇기 때문에 수동으로 설치해야합니다.

편집하다

또한 주제에 대한 내 게시물 을 읽는 것이 좋습니다 .


답변

몇 가지 작은 변경 (예 : Tomcat 구성 변경)을 수행하기 위해 편집기를 추가하지 않으려면 다음을 사용하십시오.

docker cp <container>:/path/to/file.ext .

로컬 컴퓨터 (현재 디렉토리)로 복사합니다. 그런 다음 즐겨 사용하는 편집기를 사용하여 파일을 로컬로 편집 한 다음

docker cp file.ext <container>:/path/to/file.ext

이전 파일을 대체하십시오.


답변

cat설치된 경우 사용할 수 있으며 베어 / 원시 컨테이너가 아닌 경우에 해당됩니다. 그것은 꼬집음으로 작동하며 로컬로 적절한 편집기에 복사하여 붙여 넣을 때 좋습니다.

cat > file
# 1. type in your content
# 2. leave a newline at end of file
# 3. ctrl-c / (better: ctrl-d)
cat file

cat줄 바꿈을 수신하면 각 줄을 출력합니다. 마지막 줄에 줄 바꿈을 추가하십시오. ctrl-c는 SIGINT고양이가 정상적으로 종료되도록 for를 보냅니다 . 주석에서 ctrl-d를 눌러 파일 끝을 표시 할 수 있습니다 ( “입력이 더 이상 없음”).

또 다른 옵션은 infilterptrace를 사용하여 프로세스를 컨테이너 네임 스페이스에 주입하는 것과 같은 것 입니다 : https://github.com/yadutaf/infilter


답변

Docker 이미지를 작게 유지하려면 불필요한 편집기를 설치하지 마십시오. Docker 호스트에서 컨테이너로 SSH를 통해 파일을 편집 할 수 있습니다.

vim scp://remoteuser@containerip//path/to/document


답변

때로는 먼저 다음을 사용하여 컨테이너를 실행해야합니다 root.

docker exec -ti --user root <container-id> /bin/bash

그런 다음 컨테이너에서 Vim 또는 다른 것을 설치하십시오.

apt-get install vim


답변

“docker exec”가 아닌 “docker run”을 사용하고 편집기를 설치할 수없는 제한된 영역에 있습니다. 하지만 Docker 호스트에 편집자가 있습니다.

해결 방법은 Docker 호스트에서 컨테이너 ( https://docs.docker.com/engine/reference/run/#/volume-shared-filesystems )에 볼륨을 바인딩하고 컨테이너 외부에서 파일을 편집하십시오. 다음과 같이 보입니다 :

docker run -v /outside/dir:/container/dir

이것은 주로 실험용이며 나중에 이미지를 만들 때 파일을 변경합니다.


답변

Docker 컨테이너에 셸한 후 다음을 입력하십시오.

apt-get update
apt-get install nano