웹사이트를 만들려고 하면 웹서버 DB 등등을 다운 받아야한다 하지만 그때마다 오류가 많이 날 가능성이 있다 하지만 어떤 컴퓨터에 이미 DB가 설치되어있고 네트워크 통신으로 데이터를 주고 받는다면 설치하는 시간을 줄일수 있다. 하지만 virtual box 혹은 vmware 를 사용하면 운영체를 별도로 설치하기 때문에 무겁고 성능도 좋지 못하다 하지만 하나의 컴퓨터에서 동작하는 프로그램이라면 얘기가 달라질 것이다 도커는 하나의 컴퓨터에서 독립적인 공각에서 프로그램과 프로그램이 동작하기 위해 꼭필요한 라이브러리등의 파일만을가지고 실행할수 있는 환경을 구성할 수 있는 기능이다.
도커는와 같은 컨테이너 기술은 리눅스 운영체제의 기술이다. 그러므로 리눅스 운영체제를 사용한다면 성능 저하없이 사용할 수 있고 윈도우나 mac 일 경우는 도커가 알아서 가상머신을 설치하고 그 위에 리눅스를 설치해 준다. 그래서 속도 저하가 조금 생긴다. 하지만 편의성이 커서 사용한다.
도커 링크에 들어가서 데스크탑 설치 이후 cmd 켜서 docker images 입력한후 잘 나온다면 설치가 완료 된것
프로그램은 앱스토어에서 받고 받은 것의 이름은 프로그램이며 실행하면 프로세스가 된다. 이처럼 도커도 필요한 프로그램을 찾기위해선 docker hub 를 사용한다. 이를 통해 다운(pull)받은 프로그램을 image 라고 하며 이것을 실행(run)한 것을 container 라고 한다. 하나의 image 는 여러개의 container 가 될 수 있다.
https://hub.docker.com 에 접속하여 오른쪽 상단에 explore 를 클릭한다.
그후 왼쪽 상단에 container 를 클릭하여 내가 필요한 소프트웨어를 다운 받을 수 있다.
e.g. httpd 를 검색하여 apache web server 를 설치할 수 있는 명령어가 나오는 것을 확인 할 수 있다.
도커 메뉴얼 에 접속하여 pull 등의 메뉴얼을 볼 수 있다.
docker pull NAME : 소프트웨어 다운 //docker pull httpd
docker images : 설치된 이미지 확인
docker run --name CNAME IMAGE : 이미지를 실행 컨테이너 이름지정가능 //docker run --name ws1 httpd
docker stop CONTAINER : 컨테이너 종료
docker start CONTAINER : 컨테이너 재실행
docker ps : 현재 실행중인 컨테이너
docker ps -a : 꺼진 컨테이너 까지 볼수 있는 명령어
docker logs -f CONTAINER : 재실행 하면 로그가 안보이는 데 이 명령으로 실시간 로그 확인 가능
docker rm CONTAINER : 컨테이너 삭제 //실행중 강제 삭제 rm --force
docker rmi IMAGE : 이미지 삭제
컴퓨터에는 65535 개의 포트로 나누어져 있어 소프트웨어를 네트워크 적으로 나누어 준다.
Host 와 Container 는 독립적인 실행환경이기 때문에 각자 독립적인 포트와 파일 시스템을 가지고 있다. 그래서 $docker run -p 80:80 httpd 로 포트 포워딩을 해주어야 한다.
즉 앞에 80번 포트로 들어온 요청이 컨테이너의 80번포트로 전달된다는 의미이다.
e.g. $docker run -p 8080:80 httpd 명령을 실행하고 브라우저에서 localhost:8080/index.html 을 입력하면 웹서버가 실행되는 것을 확인 할 수 있다.
docker exec CONTAINER COMMAND
e.g. docker exec ws2 pwd 하지만 한번 하고 꺼진다. 계속 연결을 하고싶다면
docker exec -it ws2 /bin/sh 명령을 입력하면 쉘을 얻어서 사용할 수 있다. 종료는 exit
-it 욥션은 그냥 이런게 있다 하자 운영체제 지식이 필요하다.
htdocs 디렉토리에 가면 index.html 이 있는데 vi 등이 없기때문에 apt update 하고 apt install nano 하면 nano 가 설치된다. 수정하면 local로 들어가도 변경된 내용이 나타난다.
하지만 이렇게 하면 컨테이너 지우면 수정한게 다 날라가니까 불편하다 그래서 host 의 파일시스템 을 변경하면 컨테이너의 파일시스템도 변경되게 연결 시킬수 있다.
docker run -p 8080:80 -v C:\Users\[host_name]\Desktop\htdocs\:/usr/local/apache2/htdocs/ httpd
위와 같이 입력하면 도커 호스트의 폴더를 사용하여 컨테이너의 폴더에 연결할 수 있다 그리하여 호스트 파일을 수정하면 도커 컨테이너에 적용이된다. 그럼 컨테이너는 정말 실행만 하는 구조가 되어 언제든지 삭제하고 생성할 수 있다.