(Docker/Linux) 컨테이너 다루기

설치(센트OS)

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

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 : 백그라운드에서 실행(-it의 반대)

(예) docker run -d centos:latest

–name : 컨테이너 이름 지정

(예) 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번 포트로 넘겨줌
# 도커의 네트워크는 방화벽이 켜져 있어야 함