가자공부하러!

Docker 기초 - 생활코딩 본문

공부/개발도구, 개발환경 등

Docker 기초 - 생활코딩

오피스엑소더스 2021. 8. 22. 22:11

1. 도커란?

직역하자면 부두에서 컨테이너를 다루는 노동자를 의미.
vmware, virtualbox와 같은 가상 머신처럼 독립된 실행환경을 제공하면서도, 
컴퓨터에 직접 애플리케이션을 설치한 것과 같이 빠르고, 
apt, npm, pip 처럼 명령어 한줄로 원하는 앱이 포함된 실행환경을 손쉽게 설치할 수 있는 
환상적인 개발환경을 제공합니다. - by egoing

리눅스의 컨테이너 기술을 이용해서 프로세스만 격리해서 빠르게 실행시키는 기술
가상 운영체제의 단점인 많은 자원 소모 없이 같은 효과를 낼 수 있음
  • 호스트와 컨테이너
    • 호스트 : 운영체제가 설치된 컴퓨터
    • 컨테이너 : 호스트에서 실행되는 격리된 실행환경
      • 운영체제가 설치되어있지 않음
      • 앱을 실행하는데 필요한 라이브러리와 실행파일만 포함

2. 이미지 pull

  • 용어
    • Docker Hub : App Store
    • image : program
    • container : process
    • 이미지 pull : App Store에서 프로그램을 다운로드 받는 동작에 대응
    • 이미지 run : 이미지를 실행시키는 행위. program을 실행해서 process를 만드는 동작에 대응

3. 컨테이너 run

GUI에서 run : images에 pull받은 image run

커맨드로 run

// httpd image pull
docker pull httpd
// docker image 리스트 확인
docker images

 

4. 기본적인 명령어

// docker container를 새로이 만들고 생성
docker run [image_name]
docker run --name [name] [image_name]

// docker container 중지
docker stop [name]

// docker container 시작
docker start [name]

// docker container 삭제
docker rm [name]
// docker container 강제 삭제
docker rm --force [name]

// docker image 삭제
docker rmi [image_name]

// docker container 로그 조회
docker logs [name]
// docker container 로그 실시간 조회
docker logs -f [name]

// 실행중인 docker container 목록 조회
docker ps
// 모든 docker container 목록 조회
docker ps -a

 

5. 네트워크

httpd 이미지를 받아서 run 시켰을 때, 그 container는 서버로 들어오는 80포트의 요청을 처리할 수 있을까?

안된다.

어떻게해야하나?

포트를 연결해주면 된다.

$ docker run --name [name] -p [host_port]:[container_port] httpd

 

6. docker container 내부 조작

컨테이너 조작(단일 명령어)

$ docker exec [name] [command]

ex) docker exec ws2 pwd

 

컨테이너 조작(지속)

$ docker exec -it [name] [command] /bin/sh

$ docker exec -it [name] [command] /bin/bash

나가기

# exit 

 

기본적인 편집툴이 없기 때문에 설치 필요 ex) # apt update #apt install nano

 

7. 호스트와 컨테이너의 파일시스템 연결

호스트의 파일시스템을 연결하지 않은 채로 컨테이너를 실행하게 된다면?

컨테이너가 삭제될 때 컨테이너가 갖고있던 파일들도 모두 삭제된다.

$ docker run -p [host_port]:[container_port] -v [host_file_path]:[container_file_path] [image_name]

ex) $ docker run -p 8888:80 -v ~/Desktop/htdocs:/usr/local/apache2/htdocs/ httpd

Comments