Docker 주요 명령어

선종우·2023년 6월 21일
0

1. Run(이미지 -> 컨테이너)

  • 문법 : docker run [options] IMAGE [COMMAND][ARGS]

  • 예제 1 : 컨테이너 생성 및 shell 얻기

    docker run --name test -it debian
    • 설명 : debian 이미지를 test라는 이름으로 container화한다. 이때 사용자 입력을 받으려면 -i 옵션을 줘야하고 -t옵션으로 콘솔을 할당해줘야 명령어를 통해 container와 상호작용이 가능하다. 별다른 실행 옵션을 주지 않으면 docker을 실행하자 마자 종료되어버린다.
      관련글
  • 예제 2: 컨테이너 생성 시 환경변수 주입하기

    docker run --name test -it -e MYVAR1 --env MYVAR2=foo --env-file ./env.list debian
    • 설명 : 컨테이너의 환경변수를 설정하거나, Dockefile 변수를 overwrite할 수 있다.
  • 예제 2 - 1

    export VAR1=value1
    export VAR2=value2
    docker run --env VAR1 --env VAR2 ubuntu env | grep VAR
    VAR1=value1
    VAR2=value2
    • 설명 : local environmet를 docker container에 주입할 수도 있다. 만약 변수에 대해 local environment에도 값이 없고 옵션에도 값을 지정해주지 않으면 변수는 컨테이너에 설정되지 않는다.
  • 예제 2 - 3

    cat env.list
    \# This is a comment
    VAR1=value1
    VAR2=value2
    USER
    docker run --env-file env.list ubuntu env | grep -E 'VAR|USER'
    VAR1=value1
    VAR2=value2
    USER=jonzeolla
    • 설명 : 파일 형태로도 환경변수를 설정할 수 있다. 파일은 key=value쌍으로 이루어진다. 만약 value가 없다면 local environment에서 값을 찾아 주입해준다.
  • 예제 3 : port 할당하기(bridge)

    1 docker run -p 127.0.0.1:80:8080/tcp ubuntu bash
    2  docker run -d -p 127.0.0.1::5000 training/webapp python app.py
    3 docker run -p 80:8080/tcp ubuntu bash
    4 docker run -p 8000-9000:8080/tcp ubuntu bash
    5 docker run --expose 80 ubuntu bash
    • 설명 :
    1. host의 127.0.0.1:80을 컨테이너 8080포트로 바인딩한다. 127.0.0.1은 호스트의 인터페이스를 지정하는 것으로 1은 localhost를 지정하였으므로 외부에서는 접근이 불가능하다.
    2. localhost는 지정을 하였으나 host포트는 지정하지 않았다. 따라서 외부에서는 접속 불가하며 포트는 컨테이너 시작 시 동적으로 할당된다.
    3. host의 모든 인터페이스의 80포트를 컨테이너 8080포트로 바인딩한다.
    4. 호스트의 8000-9000포트를 컨테이너 8080포트로 바인딩한다.
    5. 컨테이너의 80포트를 공개한다. 이때 포트를 호스트의 인터페이스에 publish하지 않는다.
      -p, publish -> Publish a container’s port(s) to the host
      -P, --publish-all -> Publish all exposed ports to random ports
  • 예제 4 : 재시작 시점 지정
     docker run --restart=always redis
    • 설명 : docker 데몬이 시작될 때 container가 재시작된다.
      --restart=no가 default이고 자동재시작이 비활성화되어 있다.
  • 예제 5 : 백그라운드 실행
     docker run -d redis
    • 설명 : 컨테이너가 백그라운드 실행되며 catainer id를 출력한다.

2. 이미지 생성

  1. build : Dockefile로부터 이미지를 build하는 명령어
    -t: 태그, -f: 도커파일 이름 지정(default는 PATH/Dockerfile)
ex) docker build -t my-app .

3. 기타

  1. attach : 실행중 컨테이너 터미널에 IOE를 붙이는 명령어
  2. exec : 컨테이너에서 명령어를 실행하는 명령어
    -d: 커맨드를 백그라운드 실행, -e: 환경변수 설정, -i : std in 유지, -t: terminal 할당, -w: container working dir, -u: 사용자
  3. start : 컨테이너 시작
    -a : 컨테이너에 std out/err를 연결
    -i : 컨테이너에 stdin을 연결
  4. create : 컨테이너 생성

0개의 댓글