Docker 컨테이너에 애플리케이션을 영구적으로 설치할 수 있습니까?

Docker 컨테이너에 애플리케이션을 영구적으로 설치할 수 있습니까?

나는 docker를 사용하고 있지만 실행할 때마다 cat을 사용하여 source.list를 편집한 다음 sudo 및 nano를 설치하고 docker를 실행할 때마다 다른 항목을 설치하는 데 약간의 노력이 필요한 작업에 중요한 응용 프로그램을 설치해야 합니다.

도커 컨테이너를 저장하고 나중에 다시 로그인할 수 있는 방법이 있나요?

저는 우분투 16을 실행하고 데비안 10에서 도커를 실행하고 있습니다.

답변1

Dockerfile

이것이 "정상적인" 방법입니다. 기본적으로 다음을 Dockerfile포함하는 파일(일반적으로 이름이 지정됨)을 만듭니다 .

# The image we will start with:
FROM ubuntu:16.04

# Install packages, by running a command
RUN apt update && apt install package1 package2

# You can also copy you own script/config files
COPY startup.sh /startup.sh

그런 다음 이미지를 "컴파일"합니다(Dockerfile과 스크립트가 포함된 디렉터리가 현재 디렉터리라고 가정).

docker build -t my_image .

그런 다음 이미지를 사용합니다.

docker run my_image

Dockerfiles의 전체 구문은 다음과 같습니다.여기

이 접근 방식의 이점:

  • Dockerfile은 작업 컨테이너를 위한 "레시피"이며 추가 메모 등이 없습니다. 이것이 문서화되고 유지 관리 가능한 컨테이너를 얻는 방법입니다.
  • 기본 이미지의 새 버전으로 쉽게 업그레이드할 수 있습니다.
  • 이미지를 공유하거나 다른 컴퓨터로 전송하려면 docker 파일과 컨테이너에 복사된 몇 개의 파일을 전송하기만 하면 됩니다.

그리고docker commit

현재 컨테이너 콘텐츠에서 이미지를 만들 수도 있습니다.

docker commit <containerId> <imageName>

문제는 이미지가 작동하면 그 안에 무엇이 있는지 실제로 알 수 없고 쉽게 전송할 수 없다는 것입니다(꽤 큰 파일입니다).

노트:

  • USER를 변경하기 전에는 컨테이너의 루트이므로 일반적으로 필요하지 않습니다.sudo
  • nano또한 컨테이너 외부에서 파일을 편집하고 Dockerfile을 사용하여 복사할 필요가 없습니다 . 용기는 일회용품이다..
  • 자체 이미지를 사용하면 다시 설치할 필요가 없기 때문에 네트워크 없이도 컨테이너가 훨씬 빠르게 시작됩니다.
  • 컨테이너는 백업이나 전송이 어려운 일회용 품목입니다.

관련 정보