Docker는 간단한 명령어로 컨테이너 이미지를 생성하고 저장할 수 있는 서버 가상화 플랫폼입니다.
Docker Container
는 가상화 기술 중 하나로 기존 가상화와 달리 프로세스를 격리시켜 동작하는 방식을 말합니다. Container
는 Container Image
를 기반으로 실행되며, 도커를 사용하면 간단한 명령으로 Container Image
를 만들고 저장할 수 있습니다. 또한 도커를 설치한 로컬에 Container Image
를 다운로드하여 Container
를 실행할 수 있습니다.
그게 뭔데 씹덕ㅇ🥊...
Container Image
란 앱을 실행하는 데 필요한 모든 파일, 라이브러리, 종속성 및 기타 필요한 설정을 포함하는 패키지입니다.Container Image
는 앱의 환경에 관계없이 일관성있게 실행할 수 있도록 해주는 대단한 녀석입니다..응..그렇구나..
말 그대로 Container Image
는 앱을 실행하기 위한 모든 것을 가지고 있기 때문에, 새로운 환경에서 더이상 설치할 필요가 없어집니다.
새로운 환경에서 미리 만들어놓은 Container Image
를 다운받고 Container
를 생성하면 새로운 환경에서도 앱을 실행할 수 있게됩니다.
당연한 얘기이지만 공식 사이트에서 Docker를 다운을 받을 수 있습니다.
https://www.docker.com/
DockerHub 사이트에서 연습삼아 mongo
와 mongo-express
를 검색하였습니다.
https://hub.docker.com/
docker pull mongo
docker pull mongo-express
위의 명령어로 mongo
와 mongo-express
를 다운 받았습니다.
docker images
설치가 완료되면 위의 명령어로 다운받은 이미지를 확인합니다.
다운받은 이미지는 Docker Desktop
의 Images
에 저장됩니다.
이제 MongoDB 데이터베이스를 실행하는 Docker Container
를 시작해야 합니다. 일반적으로 MongoDB는 27017 port
를 사용한다고 합니다.
docker run --name my-mongo -d mongo
위의 명령어는 my-mongo
라는 이름의 MongoDB 컨테이너를 생성하고 실행시켜줍니다.
docker run --name my-mongo-express -d -p 8081:8081 --link my-mongo:mongo mongo-express
--name my-mongo-express
: 컨테이너의 이름을 my-mongo-express
로 설정합니다.
-d
: 컨테이너를 백그라운드에서 실행합니다.
-p 8081:8081
: 호스트 8081 port
와 컨테이너 8081 port
를 연결합니다.
--link my-mongo:mongo
: my-mongo 컨테이너
와 연결하고, 컨테이너에서 mongo
라는 이름을 참조할 수 있게 해줍니다.
mongo-express
: mongo-express
라는 Container Image
를 의미합니다.
localhost:8081
에 접속을 해줍니다.
사용자 이름과 비밀번호를 따로 설정하지 않았다면 기본값은 다음과 같습니다.
사용자 이름
: admin
비밀번호
: pass
Mongo Express
라는 웹 사이트 화면이 출력됩니다. 컨테이너 실행된 거 맞죠..? 맞겠지..?😭
컨테이너 이미지 목록
docker images
컨테이너 이미지 검색
docker search [이미지 이름]
컨테이너 이미지 받기
docker pull [이미지 이름]:[버전]
컨테이너 정보 확인
docker ps
모든 컨테이너 정보 확인
docker ps -a
컨테이너 이미지 삭제
docker rmi [이미지 id]
컨테이너, 이미지, 네트워크 모두 삭제
docker system prune
컨테이너 정지
docker stop "name or id"
컨테이너 바로 정지
docker kill "name or id"
컨테이너 접속
docker attach [컨테이너 id 또는 name]
컨테이너 실행
docker run [options] 이미지[:version|@DIGEST][COMMAND] [ARG...]
options
: --name, -d, -p, --link 등..
version
: 이미지의 특정 버전
@DIGEST
: 이미지의 특정 인스턴스를 정확하게 지정(기본값은 latest)
COMMAND
: 컨테이너가 시작될 때 실행할 명령을 지정(이미지에 따라 기본값이 설정되어 있음)
ARG
: COMMAND
에 전달할 추가 인수를 지정(선택사항)
컨테이너 시작
docker start [컨테이너 id 또는 name]
컨테이너 재시작
docker restart [컨테이너 id 또는 name]
Docker를 왜 사용하는지에 대한 것은 어느정도 이해한 것 같기는 하지만..공부를 더 해야한다..😥 사용법이라든지.. 사용법이라든지.. 사용법이라든지..🙄