본문 바로가기
DevOps

#16 Docker2

by Anonymouszero 2025. 6. 12.
반응형

컨테이너 이름 : docker run -d -name=[컨테이너 이름] [이미지 이름(태그 생략)]
 > -d 옵션 : 백그라운드 실행
 > -name 옵션 : 컨테이너의 이름을 직접 명시
 > 이미 동일한 이름의 컨테이너가 있는 경우 중복 에러 발생

환경 변수 : docker run -d -e [환경변수 작성] [이미지 이름(태그 생략)] [[컨테이너에서 실행할 첫 번째 프로세스]
 > 컨테이너 생성 시 환경변수 지정 가능
 > -e(--env) 옵션 : 환경 변수 지정
 > Name=Value 형식

 > 위의 사진은 2개의 명령어
  1. docker run -d -e MYENV=foo centos env
  2. grep MyENV

 > 컨테이너의 이식성을 유지
  : 컨테이너의 동작을 변경하는 설정 > 컨테이너 외부에서 변경 가능해야 함 > 환경변수 활용

 > MySQL 공식 이미지 예시 : 데이터베이스 root 계정의  비밀번호를 환경변수로 저장

docker run -d --name mysql-srv -e MYSQL_ROOT_PASSWORD=my-secret-pw mysql:latest

 

볼륨
 > 컨테이너의 특정 경로를 컨테이너 외부와 연결 할 수 있음
 > -v 옵션 : <host 경로>:<Container 내부 경로>

docker run -d --name web -v /root/htdocs:/usr/share/nginx/html nginx


 > Volume Binding : 컨테이너 외부의 Storage 연결
  - Container Volume / Volume / Host Path 과 연결 가능
  - Volume : 연속된 저장 공간(예시, Disk, Tape) 
  - 동일 호스트 내에  Volume이 있는경우
 


포트(Port)
 > 동일 호스트 내에 Volume이 없어 원격으로 접근하는 경우(호스트 외부에서는 Container가 있는지 모름)
 > 컨테이너의 특정 Port를 호스트에서 포워딩 할 수 있음
 > -p 옵션 : <host port(범위)>:<컨테이너 내부 포트(범위)>

docker run -d --name web -p 60000-60030:60000-60030 –p 1080:80 nginx

 > Port Binidng 규칙
  - <호스트 포트>:<컨테이너 내부 포트>
   ~> 호스트의 0.0.0.0(모든 장치 의미)에서 지정된 포트로 들어오는 패킷을 <컨테이너 내부 포트>로 포워딩
  - <IP>:<호스트 포트>:<컨테이너 내부 포트>
   ~> 호스트의 지정 <IP>에서 지정된 포트로 들어오는 패킷을 <컨테이너 내부 포트>로 포워딩

 > Exposed Port Publishing
  : 이미지에 정의된 모든 EXPOSE 포트를 자동으로 호스트의 임의의 포트에 바인딩
  : -P (대문자)
  : docker run -P [이미지]

 > Port Binding

 

컨테이너 링크
 > 컨테이너 간 통신이 필요한 경우
 > --link 옵션

docker run -d --name web nginx
docker run --link web:http centos env | grep -i _port

 : --link <컨테이너 이름>:<호스트 이름>
 : web:http > web컨테이너를 http 라는 호스트 이름(별칭)으로 연결

 

네트워크 
 > 네트워크의 접속 방식을 지정
 > --net 옵션 : host, bridge, <network-id>, container:<컨테이너 ID>

docker run -d --net=bridge --name web nginx

 > Bridge Network : Host의 네트워크에 Bridge하여 통신
 > Host Network : Host의 네트워크에 Bridge하여 통신
 > Container Network : 다른 컨테이너의 network 사용

반응형

'DevOps' 카테고리의 다른 글

#15 Docker  (1) 2025.06.12
#14 ChatOps  (1) 2025.06.11
#13 Site Reliability Engineering  (0) 2025.06.11
#12 DevOps와 애자일 개발  (3) 2025.06.11
#11 인프라 아키텍쳐 변경  (1) 2025.06.11