- 많이 사용하는 웹서버
1. apache
2. nginx
1. apache 웹서버 docker 찾기
$ docker search httpd --limit=5
2. 이미지 다운 받고 컨테이너로 실행
$ docker run httpd
- Unable to find image 'httpd:latest' locally
- 자신의 pc에 해당 이미지가 없으므로 Docker Hub에서 다운하면됨
- Command line: 'httpd -D FOREGROUND'
- apache 웹서버가 실행되었지만 로그만 화면에 보여짐
- ctrl + C로 중단시키고 -d를 사용함
$ docker run -d --name apacheweb httpd
- 해당 웹서버에 어떻게 접속해야하는지 문제 발생
- 포트포워딩 필요
- docker를 실행한 PC를 HOST PC라고 함
- 호스트 PC IP에 특정 port로 access시, 해당 port를 docker 컨테이너의 특정 Private IP의 특정 포트로 변환해 줄 수 있음 ( NAPT )
$ docker run -d -p 9999:80 --name apacheweb2 httpd
* aws에서 ec2의 보안에 들어가서 9999 허용을 해야함
- 보안탭의 [보안그룹] 클릭
- 인바운드 규칙 편집에 9999 추가
aws pulic ip:9999로 접속하면
It works! 라고 표시됨
3. 웹서비스 -v 옵션
이는 ./usr/local/apache2/htdocs 아래의 Index.html 임
이 파일을 교체하면 나의 웹페이지가 표시됨
- docker는 이미지 기반으로 컨테이너를 만들기 때문에, 컨테이너 상에서 파일을 업데이트하거나 생성시
컨테이너가 종료되면 해당 파일은 없어짐
- 이를 보완하기 위해 특정 폴더를 -v 옵션으로 교체
$ docker run -v 호스트pc의절대경로:도커컨테니어절대경로 httpd
$ docker run -d -p 9999:80 -v /home/ubuntu/2021_DEV_HTML:/usr/local/apache2/htdocs --name apacheweb2 httpd
4. 저장관련 정보
$ docker system df
- docker 와 apline
- docker 이미지는 여러개의 이미지가 계층으로 쌓인 형태로 작성됨
- 대부분의 docker 이미지에 가장 기본이 되는 이미지는 ubuntu가 아니라 alpine인 경우가 많음
- http도 태그 중에 alpine기반 태그가 있음
5. 실행중인 컨테이너 사용 리소스
$ docker container stats
6. 실행중인 컨테이너 명령 실행
$ docker exec 옵션 컨테이너ID 인자
# docker exec -it apacheweb2 /bin/bash
7. 모든 컨테이너 삭제
$ docker stop $(docker ps -a -q) # 모든 컨테이너 중지
$ docker rm $(docker ps -a -q) # 모든 컨테이너 삭제
$ docker rmi -f $(docker images -q) # 모든 이미지 삭제
$ docker container prune # 정지된 컨테이너 삭제
$ docker image prune # 실행중인 컨테이너 image 외에 이미지 삭제
$ docker system prune # 정지된 컨테이너, 실행중인 컨테이너 이미지 외의 이미지, 볼륨, 네트워크 삭제
'SW ENGINEERING > Docker' 카테고리의 다른 글
Dockerfile 기본문법(1) (0) | 2021.07.22 |
---|---|
Dockerfile 이란? (0) | 2021.07.22 |
Docker Container 명령어 (0) | 2021.07.22 |
Docker Image 명령어 (0) | 2021.07.22 |
AWS EC2에 Docker 설치하기(3) (0) | 2021.07.22 |
최근댓글