- docker란?
- django, db, web server 등 다양한 어플리케이션을 컨테이너 환경에서 테스트 및 배포할 수 있는 소프트웨어 플랫폼입니다.
- 컨테이너 환경은 가상 머신(Virtual machine)에서 사용되는 가상 환경과 비슷하지만 다른 구조를 가지고 있습니다.
- 가상 머신과 컨테이너 환경의 차이
- docker를 사용하는 이유
- docker를 사용할 경우 다양한 어플리케이션을 쉽고 빠르게 배포할 수 있습니다.
- 컨테이너는 각각 독립적인 환경에서 구동되기 때문에 안정적인 운영이 가능합니다.
- docker 이미지를 통해 동일한 환경을 가진 컨테이너를 쉽게 생성하고 관리할 수 있습니다.
- docker 이미지란?
- 가상 머신에서 윈도우를 설치할 때, 윈도우 ISO를 사용해 설치하는 것처럼 docker 컨테이너는 docker 이미지를 기반으로 생성됩니다.
- 이미지는 docker 컨테이너가 생성될 때 실행되는 실행파일, 설정 등을 가지고 있습니다. 예를 들어, docker postgresql 이미지는 컨테이너가 실행됐을 때 postgresql을 실행시키기 위한 패키지들이 기본적으로 설치되어 있습니다.
오늘 배운 거:docker패키지 설치,docker 설치 확인,docker컨테이너 생성하기,실행 중인 컨테이너 생성하기,다운받은 이미지 확인하기,컨테이너 내부로 들어가보기
docker 패키지 설치
sudo apt install docker.io -y
# 만약 아래와 같은 에러가 발생한다면
# E: Package 'docker.io' has no installation candidate
# sudo apt update 명령어 실행 후 docker 패키지를 다시 설치해주세요
docker 설치 확인
sudo docker --version # 도커 버전이 출력되는지 확인합니다.
# Docker version 20.10.12, build 20.10.12-0ubuntu2~20.04.1 - 정상
# command not found: docker 와 같은 문구가 출력될 경우 docker가 설치되었는지 확인해야 합니다.
Docker version 20.10.21, build 20.10.21-0ubuntu1~22.04.3 확인
docker 컨테이너 생성하기
sudo docker run -d -p 80:80 httpd:latest
# run : 이미지를 사용해 컨테이너를 실행시킵니다.
# -d : 컨테이너를 데몬(백그라운드)으로 실행시킵니다.
# 80:80 : 80번 포트로 접속했을 때 컨테이너에 접근할 수 있도록 포트포워딩 설정을 해줍니다.
# httpd:latest : httpd의 가장 최신 이미지를 사용해 컨테이너를 생성합니다.
실행중인 컨테이너 확인하기
sudo docker ps # 실행중인 컨테이너 목록 확인하기
# CONTAINER ID : 컨테이너가 가지고 있는 고유한 id
# IMAGE : 컨테이너가 생성될 때 사용된 이미지
# COMMAND : 컨테이너가 생성될 때 실행되는 명령어
# CREATED : 생성 후 경과 시간
# STATUS : 컨테이너 상태
# PORTS : 사용중인 포트
sudo docker ps -a
# -a : 중지된 컨테이너 목록까지 포함해서 모두 확인하기
이미지 생성확인 하기
이미지 생성 된거를 확인 할 수 있습니다.
다운받은 이미지 확인하기
sudo docker images
# REPOSITORY : 이미지 저장소 이름
# TAG : 이미지 버전
# IMAGE ID : 이미지의 고유한 id
# CREATED : 이미지 생성일(마지막 업데이트 일)
# SIZE : 이미지 용량
컨테이너 내부로 들어가기
sudo docker exec -it 251 /bin/bash
# $containser_id : sudo docker ps를 쳤을 때 확인되는 container_id를 입력합니다.
# /bin/bash : 컨테이너에 접속할 때 사용되는 쉘을 입력합니다.
# 이미지에 따라 /bin/bash라는 쉘이 존재하지 않을 수 있는데, 이 경우에는 /bin/sh를 사용해 접속합니다.
ls -l
자세한 정보를 확인해 봅니다.
root@25124458a5f4:/usr/local/apache2# cd htdocs
#cd: 작업 디렉토리 변경을 위한 명령어입니다.
#htdocs: 이동하고자 하는 디렉토리의 이름입니다.
#/usr/local/apache2/htdocs로 변경됩니다.
#이후에 실행되는 명령어는 /usr/local/apache2/htdocs 디렉토리를 기준으로 동작하게 됩니다.
ls -l로 확인 해 보면 total정보랑 html정보가 나오는것을 확인이 됩니다.
느낌점:docker가 다른 배포랑 다르게 리눅스로 할 수 있다는게 신기하면서 흥미롭게 배운거 같습니다.
어럽진은 않은데 적절하게 어떻게 사용 할지는 좀 더 숙지를 해봐야 될 꺼 같습니다.