[Docker] 도커 기본 명령어2

20 Sep 2023 - juno

#cloud  #docker 


2023-09-20 클라우드 프로그래밍 3주차 강의 1

  1. 컨테이너 통신
  2. 이미지 삭제

컨테이너 통신

외부에서 접속이 가능하게 하기 위해 통신에 대한 설정?이 필요

원래 https 를 사용해야 하지만 복잡해서 안함

컨테이너 통신 체크 포인트

부가설명

  • VMware의 ubuntu 를 개별 Host 라고 생각하기
  • httpd(아파치) 는 보통 80포트를 사용
  • MySQL은 3306포트 사용
  • ens33 -> 192.168.88.21
  • Host(Dhcp) -> 192.168.88.1

결론: 포트포워딩을 해줘야한다. 외부에서 접속하려면 도메인 사서 해야함

역방향 프록시: hull.kr(:443) 로 들어오면 로컬 내부(192.168.0.2:30080)로 보내도록 리다이렉트 하고

-> 30080을 컨테이너의 80포트와 매핑한다.

# 아파치 컨테이너 생성
docker run --name apa000ex2 -d -p 8080:80 httpd
# 실행중인 컨테이너 목록 확인
docker ps

image

컨테이너가 실행 중 일때 웹 브라우저를 통해 localhost:8080 으로 접속하면 아파치컨테이너의 포트인 80 포트로 연결된다

PORTS 0.0.0.0:8080 -> 80/tcp ~

# 컨테이너 종료
docker stop apa000ex2

# 컨테이너 삭제
docker rm apa000ex2

run 명령어: 이미지로부터 컨테이너를 새로 만들고 스타트 하는 것

따라서 stop 하고난 뒤에 다시 같은 컨테이너를 실행할땐 run이 안된다.

# 이미 생성된 컨테이너 실행
docker start apa000ex2

이미지 삭제

이미지 삭제 체크 포인트

# 이미지 목록 확인
docker image ls

image

image

이미지 삭제

# 이미지 삭제
docker image rm httpd

# 버전지정 이미지 삭제
docker image rm httpd:2.2

이때, 해당 이미지가 컨테이너에서 사용 중이면 이미지를 삭제할 수 없다는 오류 메시지가 뜸

아파치 컨테이너를 종료(stop)만 하고 삭제(rm)르르 하지 않았기 때문에 이미지가 사용중인 것으로 간주됨

# 존재하는 컨테이너 목록확인
docker ps -a

image

# 컨테이너 삭제
docker rm apa000ex2

# 이후 오류메시지가 떴던 이미지 삭제
docker image rm httpd


reference

개발자 hull, 교수님 강의블로그