[TIL] 2023-02-15

  • Docker를 사용하면 단일 컴퓨터에서 여러 환경을 구성할 수 있습니다.

  • 여기서 다루는 환경에는 Linux 및 Windows와 같은 운영 체제의 모든 설정이 포함됩니다.

  • 이러한 환경을 컨테이너라고 합니다.

  • 이전에는 한 대의 컴퓨터에 여러 환경을 만들려면 VMware와 같은 가상 머신을 설치하고 가상 머신에 운영 체제를 설치해야 했습니다.

  • 호스트 운영 체제 위에 게스트 운영 체제를 설치하는 방식으로 운영 체제 설치에는 추가 디스크 공간이 필요하고 하드웨어 리소스의 효율적인 사용이 제한됩니다.

  • Docker와 같은 프로그램은 이 문제를 해결합니다.

  • Docker 엔진은 호스트 운영 체제에 설치되고 컨테이너는 Docker 엔진 위에 구축된 원하는 환경에서 실행됩니다.

    호스트 운영체제와 Docker 프로그램이 직접 연결되어 있어 하드웨어 자원을 효율적으로 사용할 수 있습니다.

  • 우리가 보통 앱스토어에서 프로그램을 다운받아 실행하듯이 프로세스가 생성됩니다.

  • Docker가 이미지를 다운로드하고 실행하면 컨테이너가 생성됩니다.

  • 이때 이미지를 다운로드하는 명령어는 docker pull(이미지 이름) ex) docker pull mysql 입니다.

  • 다운로드한 Docker 이미지는 터미널에서 docker images 명령을 사용하여 확인할 수 있습니다.

  • 이미지를 컨테이너로 실행하려면 docker(옵션) run(이미지 이름)(명령)(args…) 명령을 입력합니다.

  • 실행 중인 컨테이너 목록을 확인하려면 docker ps를 통해 확인할 수 있습니다.

    종료된 컨테이너를 포함하여 모든 컨테이너를 보려면 docker ps -a
  • 실행 중인 컨테이너를 중지하려면 docker stop(containerName 또는 Container Id)
  • 중지된 컨테이너를 다시 시작하려면 docker start(containerName)
  • docker-logs -f (containername) docker 컨테이너의 로그를 확인하고 싶다면 docker-logs (containername) docker 컨테이너의 로그를 실시간으로 확인하고 싶다면
  • docker 컨테이너를 삭제하려면 docker rm(containerName)을 사용합니다.

    단, 실행 중인 docker 컨테이너는 삭제할 수 없습니다.

    실행 중인 컨테이너 도커를 강제로 삭제하려면 rm –force(containerName)
  • 도커 이미지를 삭제하려면 docker rmi(containerName)
  • Docker 이미지로 컨테이너를 생성할 때 옵션을 지정하여 포트를 설정할 수 있습니다.

    docker run -p(호스트 포트: 컨테이너 포트)(이미지 이름)
  • 명령을 작성할 때 명령이 호스트 운영 체제에서 실행되었는지 아니면 Docker 컨테이너에서 실행되었는지 확인해야 합니다.

  • 호스트 OS 터미널에서 docker exec(옵션)(containerName)(명령)을 실행하면 컨테이너 내부의 명령이 실행됩니다.

  • 예를 들어 docker exec -it mysqlserver /bin/bash 명령을 통해 MySQL 컨테이너 내에서 bash 셸을 실행하면 이제 터미널이 컨테이너 내에서 작동합니다.

  • Docker 컨테이너의 파일 시스템을 호스트 운영 체제의 파일 시스템에 매핑할 수 있습니다.

  • Docker를 실행 중인 경우 httpd 컨테이너에서 -p 8888:80 -v ~/Desktop/htdocs:/usr/local/apache2/htdocs httpd , /usr/local/apache2/htdocs 및 ~/Desktop/htdocs를 실행합니다.

    호스트 – 파일 시스템에서 연결된 운영 체제.