도커 고급

6367 단어 도커dockerdocker

이번 포스트에서는 더 많은 옵션들을 다뤄보겠습니다.

Port (-p)

-p옵션은 호스트와 컨테이너 간의 포트 배포/바인드를 위해서 사용됩니다.
호스트 컴퓨터에서 컨테이너에서 리스닝하고 있는 포트로 접속할 수 있도록 설정합니다.

기본포맷

$ docker run -p <HOST_PORT>:<CONTAINER_PORT> <IMAGE_NAME>

예제

$ docker run -d -p 5000:80 nginx

예제에서는 컨테이너 80번포트를 호스트의 5000번포트에 맵핑합니다.


5000번으로 localhost를 호출합니다.

$ curl localhost:5000


내부ip로도 확인해봅니다.

$ hostname -i	#리눅스환경에서 내부아이피확인 명령어입니다.

빨간색 사각형위치에 자신의<내부IP 또는 공인IP> 입력하시면 됩니다.




URL : { <내부IP 또는 공인IP>:5000 }	#웹브라우저에서 실행시킨 화면입니다.





Volume (-v)

-v옵션은 호스트와 컨테이너 간의 볼륨 설정을 위해서 사용됩니다.
호스트 컴퓨터의 파일 시스템의 특정 경로를 컨테이너의 파일 시스템의 특정 경로로 마운트를 합니다.

컨테이너는 휘발성 프로세스이기 때문에 컨테이너 내부의 데이터를 영구적으로 저장할 수 없습니다.컨테이너의 데이터를 지속적으로 보관하기 위해서 볼륨을 사용합니다.

기본포맷

$ docker run -v <HOST_DIR>:<CONTAINER_DIR> <IMAGE_NAME>

예제

$ echo hello! > test.txt	#현재 디렉토리에 test.txt파일 생성
$ docker run -p 6000:80 -v $(pwd):/usr/share/nginx/html/ -d nginx 

$ curl localhost:6000/test.txt	#nginx에서 파일이 보이는지 확인

현재 디렉토리를 컨테이너의 nginx디렉터리와 연결합니다.




ENTRYPOINT (--entrypoint)

--entrypoint옵션은 Dockerfile의 ENTRYPOINT설정을 강제로 override할 때 사용합니다.

Dockerfile을 다음과 같이 수정합니다.

예제

$ docker build . -t lets-echo
$ docker run lets-echo hello				#echo hello
$ docker run lets-echo cat /etc/password	#cat명령어가 작동안하고 문자열을 출력합니다.

$ docker run --entrypoint=cat lets-echo /etc/passwd	#강제로 cat명령어로 override




User (--user)

기본적으로 컨테이너의 유저는 root입니다.
보안을 위해서 일반유저를 사용하도록 만들 수 있습니다.


Dockerfile을 다음과 같이 수정합니다.

예제

$ docker build . -t my-user	#이미지 생성

$ docker run -it my-user bash	#ubuntu유저로 컨테이너 실행

ubuntu유저로 컨테이너 내부에 진입한것을 볼 수 있습니다.



이번에는 강제로 root유저로 진입해보겠습니다.

$ docker run --user root -it my-user bash




✋마치며

모든 컨테이너 삭제

$ docker rm $(docker ps -aq) -f
$ docker rmi $(docker images -q) -f

그동안 만들었던 예제들을 모두 지웁니다.



쿠버네티스의 기초가 되는 컨테이너 기술에 대해서 약간의 예제들을 통해 공부해봤습니다.

컨테이너는 가상환경을 통해 도커가 설치된 어디서든 정상적으로 동작할 수 있는 발판을 마련해줍니다.

쿠버네티스는 이러한 도커의 특징을 잘 이용하여 하나의 서버가 아닌 여러서버에서 컨테이너를 실행하도록 관리합니다.

다음 포스트부터는 본격적으로 쿠버네티스에 대한 글을 써보도록 하겠습니다.

좋은 웹페이지 즐겨찾기