본문 바로가기
DevelopmentTools/Docker

[생활코딩] Docker 입문수업 Day-1

by 수짱수짱 2022. 5. 28.

Docker의 사용목적?

하나의 컴퓨터에 가상으로 컴퓨터를 만들고 그 위에 운영체제를 설치한 후 웹 서버를 설치한다면 컴퓨터를 별도로 장만하지 않아도 된다!

 

but, 겨우 웹 서버를 운영하기 위해서 운영체제를 깐다는 것이 비효율적이다. 운영체제의 크기가 너무 크기도 크고 운영체제 위에 운영체제를 깐다는 것 때문에 실행속도가 너무 느려지게 된다.

 

 

따라서, 한대의 컴퓨터에서 각각의 앱을 실행시키는 것이다. 단, 각각의 앱은 격리된 환경에서 실행된다.

이 때, 운영체제가 설치된 컴퓨터를 주인 = host

host에서 실행되는 격리된 각각의 실행환경 = container

 

각각의 container에는 운영체제 전체가 설치되어 있는 것이 아니고 앱을 실행하는 데에 필요한 라이브러리, 실행파일들만 포함되어 있다.

=> 이미 존재하는 운영체제를 공유함으로써 무엇인가를 설치 할 필요도 없고 운영체제가 하나 이므로 속도도 느려지지 X

또한, 시간도 절약되며 저장장치 용량도 아낄 수 있다.

 

리눅스 OS에는 이런 실행방법이 내장되어 있다. 이러한 기술을 Container라고 부른다.

이런 기술을 사용하여 이 일을 쉽게 해주는 소프트웨어중 가장 자주 사용하는 것이 Dokcer이다.

 


Docker는 리눅스Os의 기술이다. 우리가 알아야 할 것들은?

 

첫번째, 도커 위에서 돌아가는 컨테이너

두번째, 컨테이너 안에서 동작하는 각각의 앱들은 리눅스 os에서 동작하는 앱이다.

 

만약 pc가 리눅스os가 아니라면 도커를 사용할 수 없다? 그렇지 않다.

=> 가상머신을 깔고 리눅스 os를 설치하여 그 위에서 docker를 사용할 수 있다.

 

docker가 알아서 가상머신을 생성하고 그 위에 리눅스를 설치하여 준다.

단, 가상머신위에서 동작하기때문에 성능의 저하는 뒤따를 수 밖에 없다.

 

리눅스OS가 아님에도 docker를 사용하는 이유는 docker를 사용함에 있어서 얻을 수 있는 편의성이 크기 때문이다.

 

1. https://www.docker.com/

 

Home - Docker

With over 50 sessions for developers by developers, watch the latest developer news, trends, and announcements from DockerCon 2022. From the keynote to

www.docker.com

2. 난 윈도우os이므로 윈도우용 데스크탑 docker설치

서버는 리눅스 우분투이므로 리눅스용도 같이 알아두기.

 

설치시 WSL 2 installation is incomplete 발생 

해결법 => https://blog.nachal.com/1691

 

docker는 gui환경 보다는 명령어를 이용해 제어하는 것이 도커의 모든 기능을 활용할 수 있다. => cmd환경

 

cmd환경

docker images 입력 후 에러가 뜨지 않는다면 성공적으로 docker가 설치된 것

 

* 리눅스 환경에서도 같은 명령어

sudo docker images (sudo로 권한 얻는 것)

 


docker hub라는 registry 서비스에서 필요한 sw를 찾을 수 있다. (비슷한 개념으로 app store)

hub에서 찾아낸 내 pc에 저장해 갖고 있는 것 = image  (비슷한 개념으로 program)

image를 실행하는 것 = container (비슷한 개념으로 program을 실행하면 실제로 동작하는 것은 process)

프로그램이 여러 개의 process를 가질 수 있는 것 처럼 image도 여러 개의 container를 가질 수 있다.

 

docker hub에서 image를 다운 받는 행위 => pull

image를 실행시키는 행위 => run

run을 하게 되면 image가 container가 되고 그 container가 실행되면서 container안에 포함 되어있는 실행되도록 설정된 프로그램이 실행되면서 그 프로그램을 사용자가 사용할 수 있게 되는 것이다.

 

 

docker hub에서 image를 다운 받는 방법

1. https://hub.docker.com/ 

 

Docker Hub Container Image Library | App Containerization

Build and Ship any Application Anywhere Docker Hub is the world's easiest way to create, manage, and deliver your team's container applications.

hub.docker.com

 

* docker hub상의 apache는 httpd 라는 이름은 가지고 있다.

 

2. docker docs에 pull하는 방법에 대한 문서를 참고한다.

https://docs.docker.com/engine/reference/commandline/pull/

 

docker pull

docker pull: Most of your images will be created on top of a base image from the [Docker Hub](https://hub.docker.com) registry. [Docker Hub](https://hub.docker.com) contains many pre-built images that you can `pull`...

docs.docker.com

 docker pull [OPTIONS] NAME[:TAG|@DIGEST]

해당 명령어를 통해 registry로 부터 이미지를 다운 받을 수 있다.


image를 run시켜 container로 만드는 방법

 docker run [OPTIONS] IMAGE [COMMAND] [ARG...]

 

command는 컨테이너 안의 실행시키고 싶은 명령어

[]는 생략 가능

 

docker ps 

=> 우리가 만든 컨테이너를 확인하는 명령어

 

docker run --name ws2 httpd

=> 컨테이너 이름을 옵션을 통해 설정해줄 수 있다.

 

 

실행중인 컨테이너를 종료시키는 명령어

 docker stop [OPTIONS] CONTAINER [CONTAINER...]

 

유의할 점: 종료를 시켰다고 컨테이너가 삭제된 것은 아니다.

 

docker ps -a

=> stop시킨 컨테이너들 까지 전부 확인할 수 있다.

 

docker start ws2

=> stop시킨 컨테이너를 다시 실행시킬 수 있다.

 

위의 명령어로 실행시키면 로그가 출력되지 않는데

도커의 로그를 확인하는 명령어

 docker logs [OPTIONS] CONTAINER

 

docker logs ws2

단, 로그가 출력되고나면 꺼져버리므로 

 

docker logs -f ws2

=> 로그의 변화를 실시간으로 화면에 출력하도록한다.

 

컨테이너를 삭제하는 명령어

 docker rm [OPTIONS] CONTAINER [CONTAINER...]

현재 실행중인 컨테이너는 삭제할 수 없으므로 docker stop으로 컨테이너를 종료시키고 난 후에 삭제해야 한다.

 

docker rm --force

=> 현재 실행중인 컨테이너를 종료시키지 않고도 바로 삭제할 수 있다.

 

이미지를 삭제하는 명령어

 docker rmi [OPTIONS] IMAGE [IMAGE...]

docker image 명령어를 통해 이미지가 삭제됐는지 확인할 수 있다.

 

 

~ 4. 컨테이너 run


 

'DevelopmentTools > Docker' 카테고리의 다른 글

[Linux] apache-tomcat 연동  (0) 2022.05.30
[생활코딩] Docker 입문수업 Day-2  (0) 2022.05.29