IT Technology/Cloud

Docker 중요 명령어 (docker run) 컨테이너, 네트워크 설정

by빵수 2021. 5. 5. 21:25
728x90
반응형

docker container run 명령 개요

 

 

  • docker container run 구문은 도커에서 가장 중요하고 기능이 많기에 사실상 가장 핵심적인 내용이다.
  • docker run 명령어는 pull, create, start 3가지를 모두 수행한다.
  • 이미지가 없이 run을 수행하면 이미지를 받고, 컨테이너를 생성하고, 시작도 수행한다. 시작하면서 명시한 명령도 수행한다.

#docker container(안써도됨) run [옵션] 도커이미지명[:태그] [명령어]

 

※ 명령의 옵션은 크게 4가지로 나뉜다.

 • 컨테이너 설정 옵션

 • 네트워크 설정 옵션

 • 환경변수 설정 옵션

 • 자원제한 설정 옵션

 

도커 서버가 아닌 도커 서버-클라이언트로 구성된 경우 (즉, 서버는 따로 있고 내가 명령어 치는 곳이 클라이언트인 경우) 클라이언트에서 docker run 을 수행하면, 도커 서버의 docker daemon에 의해 실행되고, 결과를 클라이언트가 받아서 볼 수 있다.

 

 

 

컨테이너 설정 옵션

 

 

※ 참고 : 컨테이너의 "종료"

 

  - 대부분의 컨테이너는 명령어에 /bin/bash를 넣으면, 해당 컨테이너에 진입할 수 있다. 

  - 컨테이너 진입한 후, exit를 입력하면 쉘에서 나가는게 아니고, 컨테이너를 "종료" 한다. 

  - 컨테이너에 인수를 넣으면, 그 인수를 "가진" 컨테이너로써 생성된다. 

  - 원래 컨테이너는 인수 없이 컨테이너에 구축된 내용 그대로 사용한다. 

  - 하지만 필요한 경우와 여러가지 사용을 위해 인수(명령어)를 추가하여 컨테이너를 실행한다. 

  - 컨테이너를 종료하지 않으려면, ctrl+p+q를 입력하여 빠져나올 수 있다.

 

Ex)

 

#docker container run centos

  - 아무 일도 없이 컨테이너가 종료된다. 받은 인수가 없어 할 일이 없기 때문이다.

 

#docker container run -itd centos

  - 컨테이너가 백그라운드로 작동하고, 표준 입력 터미널이 열린 상태가 된다. 컨테이너가 계속 유지된다.

 

#docker container run centos /bin/cal

  - 아래와 같이 결과가 나오며 컨테이너가 종료된다. 받은 인수의 결과를 리턴하고 더이상 할 일이 없기 때문이다.

 

 

#docker container run -itd centos /bin/cal

  - 아무 결과도 없이 컨테이너가 종료된다. 백그라운드에서 /bin/cal을 실행하고 종료되었기 때문이다.

 

#docker container run -it centos /bin/ping localhost

  - 컨테이너로 진입 후 계속 핑을 날리게 된다. 

  - 끝없이. ctrl+p+q로 빠져 나가면 이것은 백그라운드로 계속 ping을 날리는 중이다. 

  - 컨테이너는 살아있다.

  - 만약 ctrl+p+q로 빠져 나가지 않고 exit로 나갔다면, 해당 명령이 끝나므로 컨테이너는 종료된다.

 

 

네트워크 설정 옵션

 

포트 번호같은 네트워크 설정을 통해 외부에서 컨테이너의 프로세스에 액세스하도록 설정할 수 있고, 

컨테이너끼리 통신도 할 수 있는 여러가지 네트워크 통신을 설정할 수 있다.

 

 

포트 설정

 

#docker container run -d -p 8080:80 nginx

  - nginx라는 이미지를 바탕으로 컨테이너를 생성하고, 백그라운드에서 실행한다. 

  - 그리고 호스트 포트 8080과 컨테이너 포트 80을 매핑한다. (0.0.0.0:8080->80/tcp) 

  - 즉 이 명령을 실행하여 컨테이너를 만든 후, 브라우저 등에서 호스트의 8080에 엑세스하면 컨테이너에서 작동하고 있는 nginx(80번포트) 서비스에 엑세스할수 있다.

 

DNS 서버 설정

#docker container run -d --dns 192.168.1.1 nginx

 

MAC 주소 설정

#docker container run -d --mac-address="92:d0:c6:0a:29:33" centos

  - docker container inspect --format="{{ .Config.MacAddress }} 로 실제 설정값 확인 가능

 

/etc/hosts에 호스트명과 ip주소 정의하기

#docker container run -it --add-host test.com:192.168.1.1 centos

 

컨테이너 호스트명 설정

#docker container run -it --hostname www.host.com

  - 이 값은 자신의 /etc/hosts에도 자동으로 적용된다.

 

도커 네트워크 명시하여 연결

#docker container run -itd --name=webap --net=web-network nginx

- nginx 이미지이고 이름이 webap인 컨테이너를 web-network라는 도커 네트워크에 연결한다.

 

 

 

반응형