Docker 설치하고 사용하기
Docker를 쓰면 프로그램과 실행 환경을 통째로 묶어서 어느 서버에서나 똑같이 실행할 수 있습니다. Ubuntu 서버 기준으로 설명합니다.
1. 설치
Docker 공식 설치 스크립트를 사용합니다.
curl -fsSL https://get.docker.com | sudo sh
매번 sudo를 붙이지 않으려면 내 계정을 docker 그룹에 넣고 다시 접속합니다.
sudo usermod -aG docker $USER
설치가 잘 됐는지 확인합니다.
docker run --rm hello-world
"Hello from Docker!"가 나오면 성공입니다.
2. 컨테이너 실행해보기
웹서버(Nginx)를 띄워봅니다.
docker run -d --name web -p 80:80 --restart unless-stopped nginx
-d백그라운드 실행-p 80:80서버의 80번 포트를 컨테이너의 80번 포트로 연결--restart unless-stopped서버가 재부팅돼도 자동으로 다시 실행
브라우저에서 http://서버IP로 접속하면 Nginx 화면이 보입니다.
3. 자주 쓰는 명령어
docker ps # 실행 중인 컨테이너 목록
docker logs -f web # 로그 보기 (Ctrl + C로 나가기)
docker restart web # 재시작
docker stop web # 정지
docker rm web # 삭제 (정지 후)
docker images # 받아둔 이미지 목록
docker system df # Docker가 쓰는 디스크 용량
4. Docker Compose로 여러 개 한 번에
설정 파일 하나로 여러 컨테이너를 함께 관리할 수 있습니다. compose.yaml 파일을 만듭니다.
services:
web:
image: nginx
ports:
- "80:80"
restart: unless-stopped
docker compose up -d # 실행
docker compose down # 정지 및 삭제
docker compose logs -f # 로그 보기
⚠️ 방화벽 주의
Docker로 연 포트(-p)는 ufw 방화벽 설정을 무시하고 외부에 열립니다. DB처럼 서버 안에서만 써야 하는 컨테이너는 아래처럼 127.0.0.1에만 연결하세요.
docker run -d --name db -p 127.0.0.1:3306:3306 -e MARIADB_ROOT_PASSWORD=긴비밀번호 mariadb
방화벽 설정은 방화벽 포트 열기를 참고하세요.
디스크가 가득 찼어요
안 쓰는 이미지·컨테이너가 쌓이면 디스크를 많이 차지합니다.
docker system prune
실행 중이 아닌 컨테이너와 쓰지 않는 이미지를 정리합니다. 지워도 되는지 확인 후 y를 입력하세요.