내가 느낌 Docker

김병민·2021년 7월 9일
0

Linux

목록 보기
1/1

1.Hello Docker!

What is Docker ?

리눅스 컨테이너 기술을 기반으로 하는 오픈 소스 서비스

도커를 통해 애플리케이션 실행 환경을 코드로 작성할 수 있으며, 운영체제를 격리화하여 관리

Linux Container
필요한 라이브러리와 애플리케이션을 모아서 별도의 서버처럼 구성한 것
네트워크 설정, 환경 변수 등의 시스템 자원은 각 컨테이너가 독릭접으로 소유

What problem can i sorve by using Docker ?

1. 환경 표준화

많은 환경에서 애플리케이션이 돌아가도록 도움

2. 수작업으로 일치시키는 환경 구성

개발과 실행에 대한 환경 설정이 코드로 정해져 환경을 일치 시킴

3. 리소스 격리성

실제로는 하나의 컴퓨터를 사용하지만, 여러 개의 컴퓨터를 이용하는 것처럼 사용 가능
격리성을 제공하기 때문에, 각 애플리케이션마다 다른 컴퓨터에서 실행되는 것처럼 IP나 Port 등을 다르게 설정

Docker Container Lifecycle

2.How to use Docker

Main Document
https://docs.docker.com/engine/reference/commandline/container_run/

Docker 구성 방법

사용법 : Docker CLI, Docker-Compose CLI, API Reference
환경 및 빌드 파일 구성 : DockerFile, Docker-Compose File

DOcker 이용하기

흐름

  • 레지스트리
    • Docker Hub
    • 도커 이미지를 관리하는 공간
    • 특별히 다른 것을 지정하지 않는다면, 도커 허브를 기본 레지스트리로 설정
    • 레지스트리는 Docker Hub, Private Docker Hub, 회사 내부용 레지스트리 등으로 나뉨
  • 레포지토리
    • 레지스트리 내에 도커 이미지가 저장되는 공간
    • 이미지 이름이 사용
    • GitHub의 레포지토리와 유사
  • 태그
    • 같은 이미지라고 할지라도 버전 별로 안의 내용이 조금은 다를 수 있음
    • 해당 이미지를 설명하는 버전 정보를 주로 입력
    • 특별히 다른 것을 지정하지 않는다면 latest 태그

What kind of command does Docker have?

  • 이미지 다운: docker image pull docker/whalesay:latest
    docker image pull 레지스트리/레포지토리:태그

  • 이미지 리스트 출력 : docker image ls

  • 컨테이너 이름을 이름으로 갖고 있는 컨테이너 실행: docker container run --name 컨테이너_이름 레지스트리/레포지토리:태그 cowsay boo

    • run : 컨테이너 실행
    • --name : 컨테이너 이름 할당
    • command : 초기 컨테이너 실행 시 수행되는 명령어
    • cowsay : 컨테이너 실행 시 cowsay 명령어를 호출합니다. node를 호출하듯 이용합니다.
    • boo : COMMAND인 cowsay에 넘겨질 파라미터입니다.
  • 모든 컨테이너의 리스트 출력 : docker container ps -a

  • 컨테이너 삭제 : docker container rm 컨테이너_이름

    • 컨테이너를 지칭해서 삭제합니다. 컨테이너를 명시할 때는 ps 명령을 통해 확인할 수 있는 NAMES 혹은 CONTAINER ID 를 사용

컨테이너에 파일 복사

게임 서버, 웹 서버와 같이 여러분이 사용할 도구가 도커 이미지에 모두 구성되어 있지 않은 경우도 있습니다.
1. 웹 서버는 도커 컨테이너로 실행
2. 웹 서버를 구성하는 파일은 직접 만들거나 가져온 파일 구성

장점

  1. 서버에 문제가 생기는 것을 호스트와 별개로 파악할 수 있음
  2. 문제가 생긴 서버를 끄고, 마치 공장 초기화를 하듯 도커 이미지로 서버를 재구동할 수 있음

컨테이너에 파일 복사하는 방법

  • 로컬에 있는 파일과 도커 이미지를 연결하는 방법

    • CP(Copy) 를 이용하는 방법

      • CP(Copy) : 호스트와 컨테이너 사이에 파일을 복사(Copy)
    • Docker Volume 기능을 이용하는 방법

      • Volume : 호스트와 컨테이너 사이에 공간을 마운트(Mount)
      • 마운트는 저장 공간을 다른 장치에서 접근할 수 있도록 경로를 허용해서, 마치 하나의 저장 공간을 이용하는 것처럼 보이게 하는 작업

1. httpd 웹 서버 구동

  • 레퍼지토리나 로컬에서 웹 서버와 관련된 파일을 다운

  • 명령어로 httpd 실행

    • docker container run --name 컨테이너_이름 -p 818:80 httpd

httpd(http daemon)은 Apache HTTP Server를 실행할 수 있는 오픈소스 웹 서버 소프트웨어

  • 서버가 열린 것을 확인한 후 새로운 터미널에서 cp명령어를 입력해 로컬호스트에 있는 파일을 컨터이너에 전달
    • docker container cp ./ 컨테이너_이름:/usr/local/apache2/htdocs/
    • 파일이 있는 곳에서 카피를 해야함 !!! 그래야 Dockerfile이 생김

2. Docker 이미지 만들기

앞서 만든 Docker Container를 이미지 파일로 변환하는 과정

이유
이전에 작업했던 내용을 다시 한 번 수행하지 않아도 됨
배포 및 관리가 유용

  1. 구동한 Docker Container를 이미지로 만드는 방법
  • docker container commit 컨테이너_이름 my_pacman:1.0
    • 사용하여 커밋
  • docker run --name my_web2 -p 900:80 my_pacman:1.0
    • 생선된 이미지를 900 포트에서 웹 서버 구동
  1. Docker Image 빌드를 위한 파일인 Dockerfile 로 만드는 방법
  • httpd 웹 서버 구동에서 카피한 위치에 존재
  • docker build --tag my_pacman:2.0 .
    • Dockerfile로 도커 이미지 파일을 생성
    • 뒤에 . 잊지말기
  • docker run --name my_web3 -p 901:80 my_pacman:2.0
    • 901포트에서 웹 서버 작동
profile
I'm beginner

0개의 댓글