본 글은 생활코딩 Docker 입문수업을 보고 공부한 내용을 정리한 글입니다.
도커는 컨테이너를 기반으로 하여 독립적으로 애플리케이션을 실행할 수 있도록 컨테이너를 만들고 관리하는 것을 도와주는 도구입니다.
오른쪽에 보이는 VM은 호스트 OS 위에 게스트 OS를 가상화하여 사용하기 때문에 오버헤드가 많아지고 속도문제가 발생하게 됩니다.
하지만 왼쪽과 같은 Docker는 호스트 OS 위에 게스트 OS를 분리하는 것이 아니라, 프로세스를 분리하여 사용합니다. 따라서 VM 처럼 완전히 분리된 환경을 이루면서도 오버헤드를 줄일 수 있습니다.
mac을 기준으로 합니다!
아래의 링크에 접속하여 Get Docker를 누른 뒤 실행합니다.
https://hub.docker.com/editions/community/docker-ce-desktop-mac
터미널에 접속한 뒤 docker version 라는 명령에 위와 같은 결과가 나오면 성공한 것입니다!
이미지, 컨테이너는 도커에서 어떤 의미일까요?
생활코딩의 자료를 보면 쉽게 이해가 될 것입니다.
먼저 docker hub에서 이미지를 다운받는 것을 pull이라고 하는데 이 작업을 해볼 것입니다.
https://hub.docker.com/
위의 docker hub 사이트에 접속하면 다양한 이미지들을 확인할 수 있습니다.
docker docs에서 pull을 찾아보니 다음과 같이 작성하면 된다고 합니다.
이 명령어를 사용해서 아파치 웹 서버 이미지를 pull 해보겠습니다.
docker pull httpd
이미지가 잘 받아졌는지 확인하려면 images 라는 명령어를 사용하면 됩니다.
docker images
그러면 이렇게 만들어진 이미지들을 확인할 수 있습니다.
이번에는 pull한 이미지를 가지고 컨테이너를 생성해보겠습니다.
docs를 보니 컨테이너는 run이라는 명령어로 생성할 수 있습니다.
docker run httpd
컨테이너가 제대로 만들어졌는지 확인하려면 ps 라는 명령어를 이용합니다.
위의 결과처럼 httpd 이미지로 컨테이너가 하나 만들어진 것을 확인할 수 있습니다.
docs에서 option 카테고리에 가보면 다양한 옵션이 나옵니다.
그 중 --name 이라는 옵션을 주면 컨테이너의 이름을 지정할 수 있습니다.
만약 컨테이너 이름을 web-server라고 하고싶다면 명령어는 다음과 같습니다.
docker run --name web-server httpd
이제 컨테이너를 끄고 싶습니다.
docker stop web-server
ps
명령어를 이용해서 컨테이너가 실행되고 있는지 확인합니다.
컨테이너 리스트에서 ws1 컨테이너가 사라진 것을 확인했습니다.
이미 만들어놓은 컨테이너를 다시 시작하고 싶다면 start
를 사용합니다.
docker start web-server
그렇다면 지금까지 만들어둔 컨테이너가 어떤 것이 있는지 어떻게 알 수 있을까요?
ps
명령어에 -a
옵션을 지정하면 사용가능한 컨테이너를 확인할 수 있습니다.
제가 stop시킨 ws1도 있는 것을 확인할 수 있죠
컨테이너를 지우고 싶다면 rm
을 사용합니다.
docker rm ws1
간혹 에러가 뜨고 제대로 삭제되지 않는 경우가 있습니다.
이럴 때에는 --force
옵션을 주면 강제로 삭제할 수 있습니다.
이미지는 rmi
라는 명령어로 삭제할 수 있습니다.
docker rmi httpd
오늘 알아본 명령어는 다음과 같습니다.
docker pull IMAGE
: IMAGE pull
docker rmi IMAGE
: IMAGE 삭제
docker images
: IMAGE 리스트 보기
docker run --name CNAME IMAGE
: IMAGE를 CNAME이라는 이름으로 컨테이너 생성
docker ps -a
: 존재하는 컨테이너 리스트 보기
docker ps
: 실행 중인 컨테이너 리스트 보기
docker stop CONTAINER
: 컨테이너 실행 중지
docker start CONTAINER
: 컨테이너 실행