[docker] docker 기본

Seongho·2024년 1월 25일
0

docker

목록 보기
1/3

intro..

최근 동아리 웹사이트 백엔드 개발을 거의 마무리하는 단계에 있다.
프론트엔트와 api 테스트를 계속해서 진행하고 있는데, 서버가 내 컴퓨터에 있다보니, 테스트 할때마다 만나서 하고 있다.
만나서 하지 않으려면, 내가 먼저 배포를 해놓거나, 프론트엔트에서 내 백엔드 서버와 같은 환경을 세팅하고 내 깃헙 코드를 pull 해서 사용하는 방법이 있다.
그런데, 도커를 공부해보니, 내가 개발한 백엔드 서버를 도커 image로 만들어 Docker Hub에 올리면, 프론트엔드는 그 image를 pull 하여 본인 컴퓨터의 가상 환경에 컨테이너로 실행하면 이 문제를 해결 할 수 있다는 것을 알게 되었다.
그래서 이참에 도커의 간단한 개념과 사용 방법을 알아보았다.

도커(Docker)란?

리눅스 컨테이너 기반 가상화 기술로, 애플리케이션을 패키징하고 배포하는데 사용된다.

그러니까, 쉬운 말로, 어떤 서비스를 컨테이너에 담고, 그 컨테이너들을 리눅스 위에서 작동시키는 기술이라 생각하면 된다.
컨테이너 기술은 리눅스 운영체제의 기술이기 때문에, 도커는 리눅스 위에서 동작한다.
운영체제가 깔려있는 컴퓨터를 host라 한다.

참고 : 컨테이너 기술이 등장하게 된 배경


가상 머신(VM)은 VM마다 운영체제를 같이 가상화하기 때문에 많은 용량을 차지하여 메모리, CPU 자원을 너무 많이 사용한다. 따라서, 이를 해결하기 위해 호스트와 커널(운영체제)을 공유하는 컨테이너가 등장하게 되었다.
컨테이너 기술의 장점으로는
1. 운영체제를 미포함하여 자원 효율적이다
2. 컨테이너 내부에 의존성과 라이브러리를 포함하여 패키징 하므로 리눅스 위에만 올릴 수 있으면 어떤 환경에서도 동작할 수 있다. (이식성이 좋다)
3. 호스트와 커널을 공유하므로 호스트와 더 밀접하게 통합하여 네트워크와 자원 활용이 효과적이다.

도커 사용법 (기본)


docker hub에서 이미지를 가져오는 것을 pull 이라 하고, 이미지를 컨테이너화해서 실행시키는 것을 run이라 한다. run 이후의 상태를 컨테이너라 한다.

https://hub.docker.com/search?q=apache
dockerhub에 들어가면 도커 이미지를 pull 할 수 있다. 실습을 위해 아파치 웹서버 이미지인 httpd를 pull 하였다.

  • docker pull (이미지 이름) : docker image를 가져오는 명령어
docker pull httpd
  • docker images : 현재 host에 있는 docker image를 보는 명령어
docker images

  • docker ps : 현재 실행중인 컨테이너를 보여준다.
docker ps

  • docker ps -a : 실행중인 컨테이너와 중지된 컨테이너 모두 보여준다.
docker ps -a

  • docker run --(옵션) (옵션 관련 명령) (이미지이름) : 이미지 컨테이너화 + 실행
docker run --name ws1 httpd

docker ps를 해보면 ws1이라고 이름을 지정한 httpd가 컨테이너가 되어 잘 실행되고 있는 것을 알 수 있다.

  • docker stop (컨테이너 이름) : 실행중인 컨테이너 중지
docker stop ws1

docker ps를 했을 때 아무것도 출력되지 않고, docker ps -a를 했을 때 STATUS가 Exited로 바뀐 것을 확인할 수 있다.

  • docker rm (컨테이너 이름) : 컨테이너 삭제
docker rm ws1

ws1이 삭제된 것을 확인할 수 있다.

  • docker run --p(호스트 포트):(컨테이너 포트) httpd : host의 port와 컨테이너의 포트를 연결해준다 (포트포워딩)
docker run --name ws1 --p8081:80 httpd


8081 포트로 들어온 요청을 ws1 컨테이너의 80번 포트로 전송한다.
테스트를 해보자

8081 포트로 요청을 보냈을 때, 웹 서버에 있는 index.html이 응답으로 전송되는 것을 확인하였다.

  • docker logs -f (컨테이너 이름) : 실시간으로 컨테이너의 로그를 확인한다.
docker logs -f ws1

  • docker exec -it (컨테이너 이름) /bin/bash : 컨테이너 내부에서 bash쉘 실행
docker exec -it ws1 /bin/bash

이 이후의 리눅스 명령어는 컨테이너 내부에서 실행되는 명령어이다.

nano 에디터로 index.html을 열어보았다.

  • docker inspect (이미지 이름) : 도커 이미지 객체의 세부 정보를 보여준다.
docker inspect ws1
profile
Record What I Learned

0개의 댓글