Docker 이미지를 생성하는 방법에는 두 가지가 있습니다. 1. "docker commit" 명령을 사용하여 기존 컨테이너를 기반으로 이미지를 수동으로 빌드합니다. 2. Dockerfile을 사용하여 이미지를 자동으로 빌드합니다. Docker 프로그램이 자동으로 이미지를 생성합니다. Dockerfile 빌드 파일의 지침을 읽어보세요.
이 튜토리얼의 운영 환경: linux5.9.8 시스템, docker-1.13.1 버전, Dell G3 컴퓨터.
Docker 이미지 웨어하우스에서 다운로드한 이미지가 요구 사항을 충족하지 못하는 경우가 있습니다. 기본 이미지를 기반으로 자체 이미지를 구축할 수 있습니다.
어떤 상황에서 이미지를 직접 구축해야 합니까?
(1) 자체 개발한 애플리케이션 등 기존 이미지를 찾을 수 없는 경우
(2) 이미지에 특정 기능을 추가해야 하는 경우
Docker에서 이미지를 빌드하는 방법에는 두 가지가 있습니다. code>docker commit 명령과 Dockerfile
빌드 파일docker commit
命令与Dockerfile
构建文件
基于已有容器构建镜像主要是通过docker commit
docker commit
명령을 사용하여 수행됩니다. 새로운 이미지를 구축하세요. 컨테이너를 새 이미지로 저장
예를 들어 centos 이미지에 vim 편집기를 설치하고 새 이미지 (1) 컨테이너 실행[root@ken1 docker]# docker run -it centos Unable to find image 'centos:latest' locally latest: Pulling from library/centos a02a4930cb5d: Pull complete Digest: sha256:184e5f35598e333bfa7de10d8fb1cebb5ee4df5bc0f970bf2b1e7c7345136426 Status: Downloaded newer image for centos:latest(2) vim 편집기 설치 vim 편집기가 설치되지 않았음을 확인
[root@69f501e858a6 /]# vim bash: vim: command not found설치
[root@69f501e858a6 /]# yum install vim -y(3) 새 이미지로 저장 먼저 현재 실행 중인 이미지를 확인하세요.
[root@ken1 ~]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 69f501e858a6 centos "/bin/bash" 2 minutes ago Up 2 minutes quizzical_torvalds
[root@ken1 ~]# docker commit 69f501e858a6 centos-vim sha256:42083b89a179368bc29a8f40d14f8824990183c8e4b28fd84411d440c26342e5
69f501e858a6은 실행 중인 컨테이너의 ID입니다.
centos-vim은 새 이미지의 이름입니다.centos-vim 이미지가 있는지 확인하세요.
새 이미지를 다시 시작하고 vim 편집기를 사용할 수 있는지 확인하세요.
vim 편집기를 사용하여 새 이미지를 찾을 수 있습니다.
[root@ken1 ~]# docker run -it centos-vim [root@61d090898bad /]# vim [root@61d090898bad /]# vim test
이미지를 빌드하는 Dockerfile
첫 번째 Dockerfike
1단계: 새 디렉터리 만들기
[root@ken1 ~]# mkdir /test
2단계: Dockerfile 작성
이름은 Dockerfile이고 첫 번째 D는 대문자로 시작해야 합니다.
[root@ken1 ~]# cat Dockerfile FROM centos RUN yum install vim -y
FROM centos는 centos를 기본으로 사용한다는 의미입니다. image
RUN은 centos에 vim 편집기를 설치하는 것을 의미합니다.
3단계: 이미지 빌드
[root@ken1 ~]# docker build -t centos-vim2 .
-t
뒤에 새 이미지의 태그 이름(태그)을 지정합니다. 마지막 점은 Docker 컨텍스트가 현재임을 나타냅니다. 예배 규칙서. Docker는 기본적으로 빌드 컨텍스트에서 Dockerfile 파일을 검색합니다. -f 매개변수를 통해 Dockerfile의 위치를 지정할 수도 있습니다. 4단계: 이미지 보기 계층 구조가 표시됩니다. Dockerfile의 실행 프로세스인 이미지입니다.
Dcokerfile 공통 지침 1.FROM
2. MAINTAINER이미지 작성자를 설정합니다. 모든 문자가 가능합니다
3.COPY
참고: src는 복사 가능 동적 빌드 컨텍스트의 파일 또는 디렉터리는 Dockerfile
과 동일한 디렉터리에만 있을 수 있습니다. 이는 빌드 컨텍스트에서 이미지로 파일을 복사하는 COPY와 유사합니다.
5.ENV
다음 명령에서 사용할 수 있는 환경 변수를 설정한다는 것입니다. as :
ENV name ken RUN echo $name
지정된 컨테이너의 프로세스는 특정 포트를 수신 대기하며 Docker는 해당 포트를 노출할 수 있습니다
7.VOLUME
8.WORKDIR
이후 RUN, ENTRYPINT, ADD, COPY 지침을 위해 이미지의 현재 작업 디렉터리를 설정합니다.
컨테이너에서 지정된 명령을 실행합니다
容器启动时运行指定的命令
dockerfile中可以多个CMD指令,但是只要最后一个生效。CMD可以被docker run之后的参数替换
设置容器启东市的命令
dockerfile中可以有多个ENTRYPOINT,但是只有最后一个生效。
CMD或者docker run之后的参数会被当做参数传递给ENTERYPOINT.
下面演示一个比较全面的dockerfile
[root@ken1 test]# cat Dockerfile #my Dockerfile FROM busybox MAINTAINER ken WORKDIR /ken RUN touch test COPY ["ken1","."] ADD ["wordpress.tar.gz","."] ENV name "ken"
注意:Dockerfile支持以#开头的注释
构建镜像
[root@ken1 test]# docker build -t myimage . Sending build context to Docker daemon 4.281MB Step 1/7 : FROM busybox ---> 3a093384ac30 Step 2/7 : MAINTAINER ken ---> Running in 2a73a83507ce Removing intermediate container 2a73a83507ce ---> 8c3df9b3d823 Step 3/7 : WORKDIR /ken ---> Running in 31c6f9fe2195 Removing intermediate container 31c6f9fe2195 ---> a458cf986072 Step 4/7 : RUN touch test ---> Running in e1b08ebd363c Removing intermediate container e1b08ebd363c ---> 41601920009a Step 5/7 : COPY ["ken1","."] ---> 2ebfa0933fca Step 6/7 : ADD ["wordpress.tar.gz","."] ---> d0ad29d3aa34 Step 7/7 : ENV name "ken" ---> Running in fceae6e20e63 Removing intermediate container fceae6e20e63 ---> 7efe0600e48f Successfully built 7efe0600e48f Successfully tagged myimage:latest
查看镜像
运行该镜像
[root@ken1 test]# docker run -it myimage /ken # ls ken1 test wordpress /ken # echo $name ken
推荐学习:《docker视频教程》
위 내용은 Docker 이미지를 만드는 방법에는 여러 가지가 있습니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!