개요
이번 게시물에서는 네트워크 설정과 웹에서 강력한 기능을 발휘할 수 있는 docker에 대해 간략하게 설명하겠습니다.
목차
1. docker란?
2. docker hub과 이미지
3. 간단한 웹 서버 만들어 보기
1. docker란?
Microsoft 공식 사이트에 따르면, "Docker는 클라우드 또는 온-프레미스로 실행될 수 있는 이식 가능하고 문제를 스스로 해결할 수 있는 컨테이너로서 애플리케이션 배포를 자동화하기 위한 오픈 소스 프로젝트입니다"라고 서술되어 있습니다.
2. docker hub과 이미지
git은 오픈 커뮤니티로 github과 gitlab가 있듯이, docker는 오픈 커뮤니티로 docker hub를 꼽을 수 있습니다. Docker hub는 docker에서 핵심적인 여러 설정들의 이미지를 받을 수 있습니다.
docker에서 이미지는 작업환경의 세팅 값을 복사할 수 있는 능력을 가졌으며, 더 나아가서 세팅 뿐만 아니라 안에 들어있는 코드들도 복사해서 가져갈 수 있는 기능을 가졌습니다. 이번에 실습할 때는 nginx라는 이미지를 사용할 것입니다.
3. 간단한 웹 서버 만들어 보기
우선 docker를 설치합니다. mac또는 리눅스 환경인 경우 terminal에서 진행해 주면 되며, window의 경우에는 windows powershell에서 진행해 주면 됩니다. 이때 윈도우에서 wsl2를 설치한다면, 윈도우 powershell에서도 리눅스 명령어를 사용할 수 있게 됩니다.
그럼 docker 버전확인 부터 시작하여 간단한 웹 서버를 만들어보는 명령어에 대해 서술하겠습니다.
docker -v
: 버전 확인
docker pull nglnx
: nglnx 이미지 다운
docker ps
: 실행중인 컨테이너 목록
docker ps -a
: 전체 컨테이너 목록
docker run -it -d -p 80:80 --name test ae2feff98a0c[image id]
: -p는 앞이 로컬 컴퓨터에서 열을 포트, 뒤는 도커 포트 번호임 (포트 포워딩)
: 이리 하게 되면 밖에서 앞에 작성한 포트로 접속할 경우, 도커로 접속할 수 있게 됩니다.
+ docker run -it -d -p 8080:80 nginx 이렇게도 해도 됨!
: why? 1. 다운받아놨으면 자동으로 nginx id를 찾아줍니다.
2. 없어도 유명한 것들은 자동으로 검색한 후 다운받아서 사용가능 합니다.
완료되면 127.0.0.1:80 (본인이 연 포트) 웹페이지에 입력해보면 Welcome to nginx! 이라는 환영 문구가 나옵니다.
docker exec
: 컨테이너 내부에 명령어를 실행시켜 준다
docker exec -it [컨테이너 id] /bin/bash
: 실제로 접속
이제부터 리눅스 환경으로 usr/share/nginx/html으로 이동합니다(ls, cd 활용). 이 안에 index.html이 있는데, 로컬로 편집한 html으로 교체하면 화면 변경이 가능합니다. 참고로 컨테이너 혹은 이미지 id는 모두 이름으로 대체 가능합니다.
1. rm index.html로 기존의 index.html 삭제
2. exit으로 빠져나오기
3. docker cp [바꿀 index.html 있는 폴더 주소]/index.html [컨테이너id]:[아까 user/share/nginx/html]
하면 index.html(내가 작성한) 것이 들어가게 됨
4. 확인하려면 아까 주소 다시 접속
이렇게 간단하게 웹서버를 만들 수 있습니다. 또한 앞에서 언급했듯이 docker는 나만의 container를 이미지로 저장해서 배포할 수 있습니다.
1. exit으로 나가기
2. docker stop [컨테이너 id]로 컨테이너 멈추기
2-1. 확인하려면 docker ps
2-2. 살리고 싶으면 docker start [컨테이너 id]
: 이것이 도커의 장점! db서버, 사이트 서버 등 여러 서버를 만들 경우 원하는 서버를 마음대로 껏다 킬 수 있습니다.
3. docker export -o [export할 이미지 이름].tar [컨테이너 id]
4. 이미지 다시 가져오려면 import [아까 export한 파일 이름].tar [컨테이너 id]
4-1. docker images로 확인
5. docker rm [컨테이너 id]: 기존에 만들었던 컨테이너 지우기
6. 앞에서 한것처럼 run하기(이미지 id만 바꿔서)
댓글