Home Docker 3 - Container
Post
Cancel

Docker 3 - Container

Intro

  • image는 container를 생성하는데 필요한
    모든 정보를 갖고있었다(inspect).
  • container는 그 정보를 토대로 실행한다.
  • 아무튼 image를 local로 pull한 뒤 부터.

Create

  • image에서 container를 생성.
    실행은 하지 않는다.

    1
    
      docker create [OPTIONS] IMAGE [COMMAND] [ARG...]
    
  • 아무런 option없으면 알아서 만들어줌.
    정상적으로 만들어지면
    container id가 나오고 끝.

    1
    2
    3
    
      docker create tomcat:latest  
    
      8bb7897eacbe81e7e7530dc2381083b8e8cfe253551b9fbd48b2a9c1fb1bfa4a
    
  • 이 때 만들어진 container는

    1
    
      docker ps -a
    

    로 확인을 할 수 있음.

    1
    2
    
      CONTAINER ID   IMAGE                       COMMAND                  CREATED         STATUS                       PORTS     NAMES
      8bb7897eacbe   tomcat:latest               "catalina.sh run"        3 seconds ago   Created                                friendly_lumiere
    
  • 생성에 필요한 부가정보는
    option에 선택적으로 넘겨줄 수 있다.
  • 없어도 생성되는 이유는
    이미 image에 기본 정보가 있어서일듯함.

Start

  • create로 생성된 container를 실행한다.

    1
    
      docker start [OPTIONS] CONTAINER [CONTAINER...]
    
  • 위 CONTAINER에는 container을 쓰는데
    container id나 name을 쓴다.

    1
    2
    3
    
      docker start friendly_lumiere                                  
    
      friendly_lumiere
    

    또는

    1
    2
    
      docker start 8bb7897eacbe
      8bb7897eacbe
    
    • 정상실행일 경우
      container id 또는 name을
      상황에 맞게 출력.
  • container create 이후 조작은
    create할때 나오는
    container id 또는 name으로 하게됨.
    id는 생성할때 나온게 full
  • 실행중인 container는

    1
    
      docker ps
    

    로 확인한다.

    1
    2
    
      CONTAINER ID   IMAGE           COMMAND             CREATED          STATUS         PORTS      NAMES
      8bb7897eacbe   tomcat:latest   "catalina.sh run"   12 minutes ago   Up 3 minutes   8080/tcp   friendly_lumiere
    
  • docker ps는 실행하고 있는 container
    docker ps -a는 전체 container

Restart

  • container 다시시작

    1
    
      docker restart [OPTIONS] CONTAINER [CONTAINER...]
    
    1
    2
    
      docker restart friendly_lumiere
      friendly_lumiere
    
  • option으로 -t 또는 –time를 지정해
    다시 시작 전 대기시간을 설정한다.


Stop

  • container 정지.

    1
    
      docker stop [OPTIONS] CONTAINER [CONTAINER...]
    
    1
    2
    
      docker stop friendly_lumiere  
      friendly_lumiere
    
  • option으로 -t 또는 –time를 지정해
    정지하기전 대기시간을 설정한다.


Remove

  • container 삭제

    1
    2
    
      docker rm friendly_lumiere
      friendly_lumiere
    
  • 정지되어있는 container만 가능.
  • 여기까지 하면
    container 생성, 시작, 정지, 삭제.

Run

  • create - start를 동시에.

    1
    
      docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
    
  • 예를들어 tomcat을 해보면

    1
    
      docker run tomcat:latest
    

    이 후 알아서 실행함.

  • 확인해보면

    1
    2
    3
    4
    
      docker ps
        
      CONTAINER ID   IMAGE           COMMAND             CREATED              STATUS              PORTS      NAMES
      1bbadf422714   tomcat:latest   "catalina.sh run"   About a minute ago   Up About a minute   8080/tcp   gallant_yonath
    

    start 결과와 같음.

  • 또한

    1
    2
    3
    4
    5
    
      docker ps -a
        
      CONTAINER ID   IMAGE           COMMAND             CREATED         STATUS                      PORTS      NAMES
      1bbadf422714   tomcat:latest   "catalina.sh run"   8 minutes ago   Up 8 minutes                8080/tcp   gallant_yonath
      8bb7897eacbe   tomcat:latest   "catalina.sh run"   19 hours ago    Exited (143) 18 hours ago              friendly_lumiere
    

    create로 만든 것과 다른 name으로
    새로 생성됨.


COMMAND

  • docker을 처음에 쓰면서
    가벼운 vmware정도로 생각하고 썼는데
    실제로 centos를 실행해보면 바로 종료된다.
  • vmware등의 가상화 프로그램과 차이점인데
    docker은 os자체를 실행하는게 아니라
    그 환경을 빌려 application layer에서
    격리된 환경을 만들고 실행한다.
    이 실행하는것이 정확히는 ‘명령어’이다.
  • container가 실행되면
    주어진 환경에서 명령어를 실행했고
    그 결과를 보여줬던것.
    실행한 명령어는 COMMAND에 있다.
  • centos는 “/bin/bash” 였고
    이 전에 tomcat같은 경우
    “catalina.sh run”등등.
    이 중 tomcat은 실행 후 동작하고 있었는데
    서비스 형태로 동작하는것들이 이런듯하다.
    db, 웹서버등이 이경우.
  • image에 기본적으로 실행할
    command가 적혀있는데 변경도 가능함.
    run을 보면 끝에 arg를 전달할 수 있었는데

    1
    2
    3
    4
    
    docker run centos:latest ps
      
    PID TTY          TIME CMD
      1 ?        00:00:00 ps
    

    이 경우

    1
    2
    3
    4
    
    docker ps -a
    
    CONTAINER ID   IMAGE                       COMMAND                  CREATED          STATUS                      PORTS     NAMES
    be1ea0bdedf3   centos:latest               "ps"                     52 seconds ago   Exited (0) 50 seconds ago             wizardly_lamarr
    

    COMMAND가 바꿘걸 확인할 수 있다.


Outro

  • container의 생성, 시작, 정지, 삭제는
    명령어만 보면 저게 전부임.
  • 여기에는 image관련 키워드의
    기능적인면만 보려고 option을 생략함.
  • 다만 container를 상황에 맞게 사용하려면
    그에 맞는 option이 필요함.
  • option을 잘 못 쓰면 그만큼
    원하는 동작을 안할가능성이 크다.
  • option관련은 길어서 따로.
This post is licensed under CC BY 4.0 by the author.

Docker 2 - Image

Docker 4 - Container Option

Comments powered by Disqus.