https://www.udemy.com/course/learn-docker/learn/lecture/7894024?start=705#questions 강의를 기반으로 작성하였습니다.
: isolated environments but share same OS kernel
: 사용자 공간을 추상화하여 격리된 공간에서 경량의 OS 수준의 가상화를 제공
: 호스트 시스템의 커널을 다른 컨테이너와 공유 (영구적 X, 이미지로 부터 생성 and 삭제)
VM
docker
도커 → 리눅스 커널을 활용, 기반!
윈도우, mac은 별도의 virtual machine 필요 (그림 상에서 docker engine이 여기에 해당_ 리눅스 환경으로 변환해줌)
https://velog.io/@kdaeyeop/도커-Docker-와-VM의-차이
▶run : container를 생성. 만약에 해당 image가 존재하지 않으면 자동으로 docker hub에서 pull해와서 컨테이너 생성
▶ps : 작동중인 모든 container 표시해줌 ( -a 를 추가하면 종료되었던 이전 컨테이너도 모두 보여줌)
▶images : 설치된 images 나열
▶rmi : image 삭제 (해당 image와 관련된 컨테이너는 미리 꼭 삭제해두어야 함)
💡 docker run ubuntu 을 실행시키고 docker ps 를 확인해보면 실행중인 container가 없음을 확인할 수 있다. ⇒ container는 os의 host가 되는 것이 아니라 구체적인 task나 process를 수행하는 역할이기 때문에 컨테이너는 process가 진행되는 도중에만 실질적으로 실행이 된다 |
▶Run - tag
: 내가 원하는 이미지의 특정 버전으로 run 하고자 할 때
docker hub에서 해당 image의 버전들을 확인하고
run command 옆에 별도의 버전을 표기해준다
▶Run - detatch
docker run ubuntu sleep 15 우분투에게 ‘ sleep 15’라는 명령을 다음과 같이 주게 되면 15초 동안 어떠한 작업도 현재 창에서 진행할 수 없게 된다
그리고 다른 콘솔 창에서 docker ps를 확인해보면 해당 container가 실행중임을 확인할 수 있다.
해당 컨테이너의 실행을 멈추고 싶다면 다른 콘솔 창에서 docker stop [container name] 을 입력하면 된다
이런 번거로움을 방지하고자 background에서 컨테이너의 command가 수행될 수 있게 하는 명령어가 -d (detatch)이다.
background에서 진행되는 프로세스를 다시 foreground로 불러내기 위해서는 docker attatch [container]를 입력해주면 된다 (그러면 다시 아까처럼 프로세스 끝날 때까지 내가 조절할 수 없다)
실행중인 컨테이너의 로그를 확인하기 위해선 docker logs [container]를 활용하면 된다.
▶Run - standart input
디폴트로 도커 컨테이너는 인풋을 받지 않아 별도의 옵션을 적용해줘야 함 (non interactive mode)
interactive mode
▶Run - PORT mapping
웹 브라우저에서 웹 서버에 접속하기 위해서
(웹 브라우저 - 도커 호스트) & (도커 호스트 - 도커 컨테이너)
이렇게 두 개의 출입문 즉 포트 번호를 명시해주어야 한다
이 때 쓸수 있는 옵션 명령어가 -p (publish)이다
-p [호스트 포트번호] : [컨테이너 포트 번호]
각 컨테이너들의 정보들은 docker inspect [container]를 통해 확인할 수 있다. 여기서 컨테이너들의 ip주소도 확인 가능
jenkins란?
소프트웨어 개발 시 지속적으로 통합 서비스를 제공하는 툴이다. (CI : Continuous Integration)
여러 개발자들이 하나의 프로그램을 개발할 때 버전 충돌을 방지하기 위해 각자 작업한 내용을 공유영역에 있는 저장소에 업로드하여 지속적으로 통합할 수 있게 해줌
git과 연동되어 코드 변경을 감지하고 자동화 테스트를 수행
https://inpa.tistory.com/entry/Jenkins-📚-젠킨스란-무엇인가
: 컨테이너를 정의하는 읽기 전용 템플릿
: 코드에 필요한 라이브러리 및 종속성에 대한 정의와 코드 내포 in Dockerfile
: package template plan -> create containers
이렇게 정의한 image를
docker build . -f Dockerfile -t jaykim/my-custom-app 으로 빌드할 수 있다
(이 과정에서 docker hub와 인증 과정 필요로 하는 듯)
웹서버 구축할 수 있게 해주는 아파치에서 나온 httpd image
run을 통해서 컨테이너를 만들고
컨테이너를 실행하여 컨테이너 내부로 들어감
해당 컨테이너의 주소는 /usur/local/apache이고
httpd가 제공하는 웹 서비스의 index.html 파일은 /usur/local/apache/htdocs 안에 있음
해당 주소로 이동을 해주고 (현재 컨테이너 안임)
nano 에디터로 index.html 파일을 수정하고
저장한뒤 localhost:8081을 새로고침해주면
수정한 html 파일 결과물이 나오게 된다
[4차시/15기 공도웅] Docker-2 (0) | 2023.04.18 |
---|---|
[4차시/15기 최경석] Docker-1 (0) | 2023.04.05 |
[3.5차시/16기 박민규] FastAPI-(2) (0) | 2023.04.02 |
[3차시/15기 공도웅] Fast API (0) | 2023.03.26 |
[2.5차/15기 김제성] API & REST API (0) | 2023.03.23 |
댓글 영역