DockerFile에서 Docker 인스턴스를 실행하려면 어떻게해야합니까?


99

마침내 도커를 가동하고 실행하는 방법을 알아 냈습니다.

docker run --name my-forum-nodebb --link my-forum-redis:redis -p 80:80 -p 443:443 -p 4567:4567 -P -t -i nodebb/docker:ubuntu

나는 그것을 redis 인스턴스에 연결했습니다.

이것은 처음부터이며 redis 인스턴스를 만들 때

docker run --name my-forum-redis -d -p 6379:6379 nodebb/docker:ubuntu-redis

원격 저장소에서 이미지를 가져 옵니까?

NodeBB는 Dockerfile https://github.com/NodeBB/NodeBB/blob/master/Dockerfile을 제공 합니다. 사용 방법을 잘 모르겠습니다. 원격에서이 Dockerfile을 호출하여 어떻게 든 로컬 환경을 만들 수 있다고 가정하고 있습니다.

이 올바른지? 그렇다면 원격을 가리키는 로컬 인스턴스를 어떻게 만들 수 있습니까?


당신은 당신의 지역 환경에 고정 표시기 이미지를 구축하고 로컬로 뽑을 수
BMW

$ cat Dockerfile | 고정 표시기 빌드 -t <여기서 image_name> - # 하이픈 마음
jbobbylopez

답변:


102

파일을 다운로드하고 동일한 디렉토리에서 실행하십시오. docker build -t nodebb .

그러면 컨테이너를 시작할 수있는 nodebb라는 로컬 머신의 이미지가 제공됩니다 docker run -d nodebb( nodebb 를 자신의 이름으로 변경할 수 있음 ).


1
어떻게 작동합니까? 단순히 dockerfile이 있으면 내 프로젝트에 대해 어떻게 알 수 있습니까? dockerfile에 링크가 있습니까? 그런 다음 서버로 마이그레이션 할 수있는 새 이미지를 패키징하는 도커 핸들이 있다고 가정합니다. 이 패키징에서 내 프로젝트의 모든 자산을 흡수합니까? 무지하게 들리면 미안하지만 도커는 나에게 새로운 개념이지만 배우는 것을 즐기고 있습니다.
마이클 조셉 오브리

2
감사합니다. <>가 <nodebb>를 선택한 이유는 무엇입니까?
마이클 조셉 오브리

도커 컨테이너는 "귀하의"프로젝트에 대해 알지 못하며 매우 일반적입니다.
Andreas Wederbrand

3
제공 한 명령이 작동하지 않아서`docker build .`를 시도했지만 작동했지만 이름이 지정되지 않았기 때문에 실행할 수 없습니다. docker build -t <nodebb> .나에게 준다 file exists: .. 와 함께 제공된 기존 프로젝트가 Dockerfile있으므로 해당 디렉토리에서 실행했습니다.
Michael Joseph Aubry

2
하지만 이것은 나의 많은 질문에 대답한다 docs.docker.com/engine/reference/builder
마이클 조셉 오브리

48

Dockerfile에서 컨테이너를 시작할 수 없습니다.

프로세스는 다음과 같습니다.

Dockerfile = [ docker build] => Docker 이미지 = [ docker run] => Docker 컨테이너

컨테이너를 시작 (또는 실행)하려면 이미지가 필요합니다. 이미지를 생성하려면 Dockerfile [1]을 빌드해야합니다.

[1] : docker importtarball 또는 다시 이미지에서 이미지 를 가져올 수도 있습니다 docker load.


28

위의 답변을 사용할 수 있었지만 이것은 정말 도움이되었으므로 여기에도 넣습니다.

에서 문서 :

컨텍스트를 지정하는 대신 URL에 단일 Dockerfile을 전달하거나 STDIN을 통해 파일을 파이프 할 수 있습니다. STDIN에서 Dockerfile을 파이프하려면 다음을 수행하십시오.

$ docker build - < Dockerfile

Windows에서 Powershell을 사용하면 다음을 실행할 수 있습니다.

Get-Content Dockerfile | docker build -

빌드가 완료되면 다음 명령을 실행하십시오.

docker image ls

다음과 같은 내용이 표시됩니다.

REPOSITORY                 TAG                 IMAGE ID            CREATED             SIZE
<none>                     <none>              123456789        39 seconds ago      422MB

실제 이미지 ID를 복사 한 다음 실행하십시오.

docker run 123456789

끝에있는 숫자는 이전 단계의 실제 이미지 ID입니다.

이미지 ID를 기억하지 않으려면 다음과 같이 이미지에 태그를 지정할 수 있습니다.

docker tag 123456789 pavel/pavel-build

이미지에 태그를 지정합니다. pavel/pavel-build


2020 년에 첫 번째 스 니펫을 찾는 데 너무 오래 걸린다는 사실이 놀랍습니다.
fullStackChris

이것은 더 많은 의식과 함께 받아 들여지는 대답입니다.
Michail

21

간단하고 쉬운 솔루션은 다음과 같습니다.

docker build .
=> ....
=> Successfully built a3e628814c67
docker run -p 3000:3000 a3e628814c67

3000 -모든 포트가 될 수 있습니다.

a3e628814c68 -성공 빌드 명령에 의해 주어진 해시 결과

참고 : Dockerfile 이 포함 된 디렉터리 내에 있어야합니다 .

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.