도커 고급
이번 포스트에서는 더 많은 옵션들을 다뤄보겠습니다.
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
그동안 만들었던 예제들을 모두 지웁니다.
쿠버네티스의 기초가 되는 컨테이너 기술에 대해서 약간의 예제들을 통해 공부해봤습니다.
컨테이너는 가상환경을 통해 도커가 설치된 어디서든 정상적으로 동작할 수 있는 발판을 마련해줍니다.
쿠버네티스는 이러한 도커의 특징을 잘 이용하여 하나의 서버가 아닌 여러서버에서 컨테이너를 실행하도록 관리합니다.
다음 포스트부터는 본격적으로 쿠버네티스에 대한 글을 써보도록 하겠습니다.
Author And Source
이 문제에 관하여(도커 고급), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@yoongyum/도커-고급저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)