Docker 이미지를 컨테이너로 실행


604

dockerfile에서 Docker 이미지를 만들었습니다. 이미지가 성공적으로 구축 된 것을 확인했지만 어떻게해야합니까? 컨테이너로 실행할 수 없습니까?

답변:


855

이미지를 실행하는 구체적인 방법은 이미지에 태그 / 이름을 부여했는지 여부에 따라 다릅니다.

$ docker images
REPOSITORY          TAG                 ID                  CREATED             SIZE
ubuntu              12.04               8dbd9e392a96        4 months ago        131.5 MB (virtual 131.5 MB)

이름으로 ( Ubuntu를 사용합시다 ) :

$ docker run -i -t ubuntu:12.04 /bin/bash

이름이 없으면 ID를 사용하십시오.

$ docker run -i -t 8dbd9e392a96 /bin/bash

자세한 내용은 Docker run reference 를 참조하십시오.


4
'NAME'에 인쇄 된 친숙한 이름 docker ps -a은 여기서 유용하지 않습니까?
ThorSummoner

11
docker ps이미지가 아닌 컨테이너를 나열합니다. 컨테이너에서 이미지를 만들려면해야합니다 docker commit. 당신이 사용할 수있는 이름을 커밋에 (예 docker commit _NAME_ _imagename_)
앤디

8
@Andy 마지막에 왜 / bin / bash를 사용합니까? 나도 새로 왔어요
Raheel

6
@RaheelKhan 도커 이미지를 실행하려면 무언가가 필요하기 때문입니다. 설치 한 프로그램으로 교체 할 수 있습니다. / bin / bash는 이미 설치된 편리한 쉘입니다.
라이언 실링 턴

환경 변수를 추가 해야하는 경우 docker run -i -t -e ROOT_PASSWORD = root ubuntu : 12.04를 수행 할 수 있습니다
발라지 Radhakrishnan

70

다음 단계를 수행하십시오.

  1. $ docker images

    태그가 지정된 모든 로컬 Docker 이미지 목록이 표시됩니다.

  2. $ docker run image_name:tag_name

    지정하지 않은 경우 tag_name '최신'태그가있는 이미지가 자동으로 실행됩니다.

    대신 image_name이미지 ID (tag_name 없음)를 지정할 수도 있습니다.


35
  • Docker 이미지를 나열하려면

    $ docker images
    
  • 응용 프로그램이 포트 80을 사용하여 실행하려는 경우 8080과 같이 로컬로 바인딩 할 다른 포트를 노출 할 수 있습니다.

    $ docker run -d --restart=always -p 8080:80 image_name:version
    

21

다음을 사용하여 사용 가능한 이미지를 볼 수 있습니다.

docker images

그런 다음 분리 모드로 실행하여 터미널을 계속 사용할 수 있습니다. 저장소 이름 (태그 유무에 관계없이) 또는 이미지 ID를 사용하여 실행할 수있는 몇 가지 옵션이 있습니다.

docker run -d repository
docker run -d repository:tag
docker run -d image_id

그런 다음 컨테이너가 사용 중인지 확인할 수 있습니다.

docker ps

docker ps컨테이너 ID를 제공합니다. 다음을 사용하여 컨테이너에 들어가거나 2/3 첫 문자 만 사용할 수 있습니다.

docker exec -it container_id /bin/bash

그리고 당신은 사용을 중지 할 수 있습니다 docker stop container_iddocker rm container_id.

컨테이너를 -rm인수로 실행하여 컨테이너 를 중지하면 컨테이너가 자동으로 제거됩니다.


1
--rm (주 : 단일 대시 2 개가 아님) 옵션은 금입니다 !!!
Johan Snowgoose

13

이 명령을 사용하여 실행하려는 이미지의 이름 또는 ID를 가져옵니다.

docker images

Docker 실행 명령은 다음과 같은 방식으로 사용됩니다.

docker run [OPTIONS] IMAGE [COMMAND] [ARG...]

아래에는 이미지 이름이나 ID를 지정하기 전에 디스패치, 이름, 게시, 볼륨 및 재시작 옵션이 포함되어 있습니다.

docker run -d --name  container-name -p localhost:80:80 -v $HOME/myContainer/configDir:/myImage/configDir --restart=always image-name

어디:

--detach , -d        Run container in background and print container ID
--name                Assign a name to the container
--publish , -p        Publish a container’s port(s) to the host
--volume , -v        Bind mount a volume
--restart            Restart policy to apply when a container exits

자세한 내용은 공식 Docker 실행 참조 를 확인하십시오 .


5

다음은 Docker에서 webdev 서비스를 실행하는 예입니다. 이미지 이름은 morrisjobke / webdav 입니다. Docker Hub 에서 가져올 수 있습니다 .

이 이미지를 실행 한 후에서 WebDAV 인스턴스에 액세스 할 수 있습니다 http://localhost:8888/webdav. 내부적으로 폴더 /var/webdav는 WebDAV 루트로 사용됩니다.

이 컨테이너는 다음과 같은 방법으로 실행할 수 있습니다.

$ docker run -d -e USERNAME=test -e PASSWORD=test -p 8888:80 morrisjobke/webdav

"webdev 서비스 실행" 다시 : "WebDAV 서비스 실행" 을 의미 합니까? 또는 "웹 개발 서비스 실행" ?
Peter Mortensen

5

나는 같은 문제가 있었다. Docker 이미지를 실행하고 특정 CONTAINER_ID가있는 컨테이너를 만들었습니다. 같은 컨테이너로 작업하고 싶었습니다.

먼저 Docker 이미지를 실행하십시오.

docker run -it -p 8888:8888 -p 6006:6006 -v ~/:/host waleedka/modern-deep-learning

그런 다음 모든 컨테이너를 나열하십시오.

sudo docker ps -a

작업 할 컨테이너를 선택하십시오 (광산은 167ddd6d7f15입니다).

sudo docker start -ai 167ddd6d7f15

4

Dockerfile에서 이미지를 작성 했으므로 현재 이미지가 활성 상태가 아닙니다. 작업하려면 컨테이너 내에서이 이미지를 실행해야합니다.

$ docker images명령은 로컬 저장소에서 현재 사용 가능한 이미지 수를 설명합니다. 과

docker ps -a

현재 사용 가능한 컨테이너 수, 즉 활성 및 종료 된 컨테이너 목록을 보여줍니다.

컨테이너에서 이미지를 실행하는 두 가지 방법이 있습니다.

$ docker run [OPTIONS] IMAGE[:TAG|@DIGEST] [COMMAND] [ARG...]

분리 모드에서 :

-d=false: Detached mode: Run container in the background, print new container id

대화식 모드에서 :

-i :Keep STDIN open even if not attached

Docker 실행 명령은 다음과 같습니다.

$ docker run image_name:tag_name

Docker run에 대한 자세한 내용은 Docker run reference를 방문하십시오 .

Docker를 이해하는 것이 가장 좋습니다.


2

Docker 호스트의 모든 이미지 목록을 보려면 다음을 실행하십시오.

  $ docker images
   REPOSITORY          TAG           IMAGE ID            CREATED             SIZE
   apache_snapshot     latest        13037686eac3        22 seconds ago      249MB
   ubuntu              latest        00fd29ccc6f1        3 weeks ago         111MB

이제 대화식 모드에서 Docker 이미지를 컨테이너로 실행할 수 있습니다.

   $ docker run -it apache_snapshot /bin/bash

또는 로컬로 이미지가없는 경우 Docker Hub에서 이미지를 다운로드하여 검색하십시오.

    $ docker search ubuntu
    NAME                            DESCRIPTION             STARS  OFFICIAL  AUTOMATED
    ubuntu                          Ubuntu is a Debian...   6759   [OK]       
    dorowu/ubuntu-desktop-lxde-vnc  Ubuntu with openss...   141              [OK]
    rastasheep/ubuntu-sshd          Dockerized SSH ser...   114              [OK]
    ansible/ubuntu14.04-ansible     Ubuntu 14.04 LTS w...   88               [OK]
    ubuntu-upstart                  Upstart is an even...   80     [OK]

docker pull 명령을 사용하여 저장소에서 Docker 이미지를 가져옵니다.

     $ docker pull ubuntu

Docker 이미지를 컨테이너로 실행하십시오.

     $ docker run -it ubuntu /bin/bash

0
$ docker images
REPOSITORY                TAG                 IMAGE ID            CREATED            
jamesmedice/marketplace   latest              e78c49b5f380        2 days ago          
jamesmedice/marketplace   v1.0.0              *e78c49b5f380*        2 days ago          


$ docker run -p 6001:8585 *e78c49b5f380*

1
순서대로 설명하겠습니다.
Peter Mortensen

-1

같은 문제가 있지만 다음과 같은 오류가 발생한 사람들에게

rpc error: code = 2 desc = oci runtime error: exec failed: container_linux.go:247: starting container process caused "exec: \"bash\": executable file not found in $PATH"

나를 위해 일한 진입 점을 추가했습니다.

docker run -it --entrypoint /bin/sh Bash가없는 이미지의 경우

예 (승인 된 예에서) :

run -it --entrypoint /bin/sh ubuntu:12.04

참조 : https://gist.github.com/mitchwongho/11266726

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