[Docker] 0. 도커 알아보기
우리가 새로운 컴퓨터를 사고나면
컴퓨터에 운영체제(OS)를 설치한 뒤,
프로그램을 설치하고 필요한 환경 변수를 설정해주고 패키지를 설치하면
드디어 코드를 돌릴 수 있는 환경 준비가 완성 된다.
어떤 코드를 열심히 작성해서 해당 애플리케이션이 작동이 완성되었다해보자.
그럼 이제 애플리케이션을 다른 새로운 컴퓨터에 띄워야 한다면 어떻게 하겠는가?
OS는 깔려있으니, 필요한 프로그램을 설치하고, 환경 변수를 설정하고, 패키지를 설치하여
코드를 실행해야 할 것이다.
불편하지 않은가?
나는 귀찮다.
이게 컴퓨터 1대에서 2대가 되고 만약 10대가 된다면 정말정말 많이 귀찮아질 것이다.
그럼 어떻게 해야 할까?
이 내가 만든 이 환경을 그대로 감싸서 포장해버릴 수 있지 않을까?
그러면 이 환경을 내가 별 수고가 안들어도 다른데 옮길 수 있을테고,
복제도 할 수 있지 않을까?
그래서 이 때 생각 해볼 수 있는게 도커(Docker) 다.

도커란 무엇인가?
도커는 애플리케이션을 컨테이너라는 가벼운 가상화 환경에서 실행할 수 있게 해주는 컨테이너화 플랫폼이다.
도커를 사용하면 애플리케이션과 그 종속성을 패키징하여 어디서나 일관되게 실행할 수 있다.

컨테이너는 뭐지?
컨테이너는 애플리케이션 실행에 필요한 모든 파일(코드, 라이브러리, 설정 파일 등)을 포함한 독립적인 패키지이다.
가상 머신(VM)과 달리 운영체제 전체를 에뮬레이트하지 않으며, 호스트 OS의 커널을 공유하므로 가볍고 빠르다.
그럼 도커가 왜 필요한거야?
- 개발 환경과 프로덕션 환경의 일관성 보장:
도커 컨테이너는 애플리케이션과 그 종속성을 포함한 독립된 환경을 제공한다.
즉, 개발 환경에서 실행한 애플리케이션을 프로덕션 환경에서도
동일한 환경에서 실행할 수 있기 때문에 “내 컴퓨터에서는 잘 됐는데”라는 문제가 줄어든다.
- 배포 및 확장의 용이성:
도커 컨테이너는 애플리케이션을 빠르게 배포하고 쉽게 확장할 수 있게 해준다.
컨테이너는 실행 중인 호스트 시스템과 독립적이므로, 여러 인스턴스를 동시에 실행할 수 있다.
또한, 컨테이너를 사용하여 서버에 신속으로 배포하기 때문에 유연한 확장이 가능하다.
- 종속성 문제 해결:
도커는 애플리케이션에 필요한 모든 라이브러리, 프레임워크, 시스템 도구 등을 하나의 패키지(컨테이너)에 포함한다.
따라서 종속성 충돌이나 누락 문제를 해결할 수 있다.
도커 이미지를 통해 애플리케이션의 일관된 배포가 가능하다.
그럼 도커 컨테이너가 가지는 특징은 뭐가 있을까?
도커 컨테이너의 특징
- 경량성: 각 컨테이너는 별도의 운영 체제를 실행하지 않고 호스트 OS의 커널을 공유한다.
이로 인해 컨테이너는 빠르게 시작되며 적은 양의 리소스를 사용한다. - 이식성: 컨테이너는 어플리케이션과 모든 종속성을 하나의 이미지로 캡슐화한다. 이 이미지는 환경에 관계없이 일관된 방식으로 실행될 수 있어, “한 번 구성하면 어디서나 실행된다(Write Once, Run Anywhere)“를 실현한다.
- 일관성: 도커는 개발, 테스트, 프로덕션 환경 간의 일관성을 보장한다.
동일한 도커 이미지가 각 환경에서 동일하게 실행되므로, 환경에 따른 문제를 최소화 할 수 있다. - 독립성:각 컨테이너는 독립적인 실행 환경을 가지며, 다른 컨테이너와 운영체제로부터 격리된다.
이는 애플리케이션 간의 충돌을 방지하고 보안을 강화한다.
이제 한번 도커를 설치하고 한번 명령어 해보는 실습을 해보겠다.
도커 환경 만들기
도커 환경은 도커가 설치되는 환경 어디에서나 가능하다.
하지만 나는 로컬에 설치하지 않고 EC2 인스턴스에 직접 설치해 사용하겠다.

1. 도커 환경 구축하기
- 사용 인스턴스 환경
- 이름: docker_test
- AMI(OS): Amazon Linux 2023
- 인스턴스: t2.micro
- 보안그룹: 22(ssh), 3000
- 도커 설치하기
yum update -y #업데이트
yum install -y docker #도커 설치
systemctl start docker #도커 시작
systemctl enable docker #부팅 시 자동으로 도커 시작
usermod -aG docker ec2-user # 도커 명령어에 관리자 권한(생략해도됨)
- 2. 다양한 도커 명령어 사용해보기
docker pull hello-world #도커 허브에 있는 이미지 다운하기
docker images # 로컬에 있는 도커 이미지 리스트 확인
docker run hello-world # 도커 이미지 실행하기
docker exec -it <컨테이너_ID> /bin/bash #도커 컨테이너에 접속
docker ps # 실행되고 있는 도커 컨테이너 목록 확인
docker ps -a # 모든 도커 컨테이너 목록 확인
docker stop <컨테이너_ID> # 도커 컨테이너 중지
docker start <컨테이너_ID> # 중지된 도커 컨테이너 다시 시작
docker rm <컨테이너_ID> # 도커 컨테이너 삭제
docker rmi hello-world # 로컬에 있는 도커 이미지 삭제
이상으로 간단히 도커에 대해 알아보았다.
다음 글에서는 도커 파일을 직접 작성하고 이미지를 만들어 실행하는 것을 해보겠다.