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

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

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을 호출하여 어떻게 든 로컬 환경을 만들 수 있다고 가정하고 있습니다.

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



답변

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

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


답변

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

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

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

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

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


답변

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

에서 문서 :

컨텍스트를 지정하는 대신 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


답변

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

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

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

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

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


답변