CLOUD/Docker&Kubernetes

[Docker/Linux] 컨테이너 다루기

alsruds 2023. 4. 18. 11:10

설치 (CentOS)

참고 : https://docs.docker.com/engine/install/centos/

 

Install Docker Engine on CentOS

 

docs.docker.com

yum install -y yum-utils 
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
yum-config-manager --enable docker-ce-nightly
yum-config-manager --enable docker-ce-test
yum install -y docker-ce docker-ce-cli containerd.io --allowerasing

# 시작
systemctl restart docker
systemctl enable docker

 

● 실행

docker run -it [repository 명]/[실행하고 싶은 이미지]:[버전] 쉘
# (ex) docker run -it ubuntu bash
# 이미지 : docker hub 에서 확인
# 이미지 내려받기 : docker pull [이미지]:[버전]

# -i : input - 키보드 입력을 표준 입력으로 쉘에 전달
# -t : terminal - 터미널 디바이스와 쉘을 연결
# -it : 프로그램을 화면에 띄움

-d : background 로 실행 ( -it 와 반대 )

(ex) docker run -d centos:latest

--name : 컨테이너 이름 지정

(ex) docker run -it --name centos7 centos:7 bash

》 bash 종료 : exit / ctrl + d (컨테이너 종료) / ctrl + p,q (컨테이너 종료 안하고 빠져나오기)

 

컨테이너 생성

# container 생성
docker create -it [이미지]	# 꺼져있음

# container id 확인
docker ps	# 현재 실행 중인 컨테이너
docker ps -a	# 모든 컨테이너 출력 - 꺼져 있는 프로그램도 확인 가능
docker ps -a -q	# 컨테이너 ID만 출력

# 시작
docker start [container id]

# 들어가기
docker attach [container id]

 

 종료

# container 종료
docker stop [container id]

# container 삭제
docker rm [container id]	# 중지된 컨테이너만 삭제 가능
docker rm -f [container id]	# 실행 중인 컨테이너 삭제 가능

# 중지된 모든 컨테이너 삭제
docker container prune

# 모든 컨테이너 정지 및 삭제
docker stop $(docker ps -a -q)	# 정지
docker rm -f $(docker ps -a -q)	# 삭제

 

● 이미지 만들기

docker commit [이름] [이미지 이름]:[버전]

# 이미지 빌드
docker build --tag [이미지 이름]:[버전] [도커파일 경로]

# 이미지 목록 확인
docker images

# 이미지 삭제
docker rmi -f [image id]

# 실행
docker run [이미지 이름]:[버전]

 

● 포트포워딩

docker run --name some-nginx -p 9999:80 -d nginx
# 9999번 포트로 찾아오면 80번 포트로 넘겨줌
# 도커의 네트워크는 방화벽이 켜져 있어야 함