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를 왜 사용하는지에 대한 것은 어느정도 이해한 것 같기는 하지만..공부를 더 해야한다..😥 사용법이라든지.. 사용법이라든지.. 사용법이라든지..🙄