컨테이너 이름 : 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 |