[Docker] Docker tutorial, 개념, 기초

Onam Kwon·2022년 6월 8일
0

Docker

목록 보기
1/2

Docker

  • 코딩을 통해 프로그램을 만들고 난 후 다른사람과 공유를 해야하는 경우나 다른 기계에서 작업을 하는 경우가 자주 생긴다.
  • 예를들면 NodeJS의 버전이 다르다던지 운영체제가 다르다던지 해서 돌릴수가 없는 경우가 생긴다.
  • 이럴때 Docker를 사용하면 이 상황을 해결해 준다.

What to know

Docker

  • 서로 다른 환경에서 소프트웨어를 가상으로 구동 가능하게 해주는 툴, 컨테이너를 관리하는 플랫폼.

Image

  • 컨테이너 실행에 필요한 파일과 설정값등을 포함하고 있는 파일. Immutable(변하지 않음).
  • 이미지를 실행하면 컨테이너가 생김.
  • 이해를 돕기 위한 비슷한 예시: OS img파일.
# Listing docker images
docker images

# Remove all images at once. 
docker rmi $(docker images -q)

# Downloading a docker image
docker pull {image_name}:{tag}

# Generating a docker container using a docker image
#ex) docker create -it python
docker create {option} {image_name}:{tag}
  • Options / Explanation
    • -d: run it as a daemon(background)
    • -it: Entering a container and using CLI
    • --name: naming a container
    • -p {host’s port num}:{container’s port num}: connecting host’s port and container’s port
    • -v {host’s directory}:{container’s directory}: connecting host’s directory and container’s directory

Layer

  • 도커 이미지는 컨테이너를 실행하기 위한 정보를 담고 있기 때문에 용량이 수백 MB에 달한다.
  • 한번 빌드할 때 마다 어느정도 시간이 소요되고 이미지를 수정할 때 마다 상당한 시간이 소요된다.
  • 이를 해결하기 위해 layer라는 개념을 도입했다.
  • 여러개의 layer로 구성된 이미지는 특정 이미지가 수정되면 해당 이미지만 수정후 빌드하면 되므로 굉장히 효율적으로 이미지를 관리할 수 있다.

Container

  • 이미지를 실행한 상태, 독립된 가상 공간, 프로그램이 돌아가는 곳.
  • 같은 이미지에서 여러개의 컨테이느 생성 가능, 컨테이너가 수정되어도 이미지는 불변.
    • 가상머신과 비슷해 보이지만 VM은 한 물리적 컴퓨터에서 각각의 OS를 가상으로 돌리며 물리적 자원을 분할해서 사용한다, 하지만 도커는 실행환경을 독립적으로 구동하는 구조라 OS단까지 내려가지 않는다. 따라서 컴퓨터에 직접 프로그램을 설치한 것과 별 차이 없는 속도를 뽑아낼 수 있다.
# Listing containers
docker container ls

# Entering a container(using CLI)
docker attach {container_id || container_name}

# Downloading an image then running it
docker run {image_name}:{tag}

# Starting a generated container(running CMD that is saved in an image)
docker start {container_id || container_name}

# Deleting a container
docker rm {container_id || container_name}

# Deleting all containers
docker rm $(docker ps -aq)

# Deleting unusing docker items(containers, images, networks and volumes)
docker system prune -a

# Stopping all containers
docker stop $(docker ps -aq)

Dockerfile

  • DNA와 비슷하다고 보면 된다, 도커에게 어떤식으로 빌드할지 알려주는 내용을 포함하고 있다.
# Listing docker containers
docker container ls

# Generating an image using a dockerfile
docker build -t {image_name} .

docker-compose.yml

  • 여러개의 컨테이너로 이루어진 서비스를 일괄적으로 한번에 관리하는 용도.
# Running a docker-compose.yml
# Attach -d for background use.
docker-compose up
profile
권오남 / Onam Kwon

0개의 댓글