Skip to content
CatBus

카테고리: docker

"docker" 로 분류된 글.

DOCKERCH6
인스트럭션내용
FROM토대가 되는 이미지를 지정
ADD이미지에 파일이나 폴더를 추가
COPY이미지에 파일이나 폴더를 복사
RUN이미지를 빌드할 때 실행할 명령어 지정
CMD컨테이너를 실행할 때 실행할 명령어 지정
ENTRYPOINT컨테이너를 실행할 때 실행할 명령어 강제 지정
ONBUILD이 이미지를 기반으로 다른 이미지를 빌드할 때 실행할 명령어를 지정
EXPOSE이미지가 통신에 사용할 포트를 명시적으로 지정
VOLUMEpersistency data를 저장할 경로를 명시적으로 지정
ENV환경변수 정의
WORKDIRRUN, CMD, ENTRYPOINT, ADD, COPY에 정의된 명령어를 실행하는 작업 디렉터리를 지정
SHELL빌드 시 사용할 shell을 변경
LABEL이름이나 버전, 저작자 정보를 설정
USERRUN, CMD, ENTRYPOINT에 정의된 명령어를 실행하는 사용자 또는 그룹을 지정
ARGdocker build 커맨드를 사용할 때 입력받을 수 있는 인자를 선언
STOPSIGNALdocker build 커맨드를 사용할 때 컨테이너 안에서 실행 중인 프로그램에 전달되는 시그널을 변경
HEALTHCHECK컨테이너 health check 방법을 커스터마이징

컨테이너와 호스트 간에 파일 복사하기

프로그램만으로 구성된 시스템은 그리 많지 않다. 5장에서도 나왔듯이 프로그램 외에도 프로그래밍 언어의 런타임이나 웹 서버, 데이터베이스 등이 함께 시스템을 구성한다.

2024.12.12·12분·docker
DOCKERCH7
# 베이스 이미지 선택
FROM kwon0528/postgres_backend:0.5

# 필요한 패키지 설치 (bash 설치)
RUN apt-get update && apt-get install -y bash

# 작업 디렉토리 설정
WORKDIR /home

# back.sh 파일 복사
COPY back.sh /home/back.sh

# 실행 권한 부여
RUN chmod +x /home/back.sh

# 실행
CMD ["bash", "/home/back.sh"]

Dockerfile.vue

# 베이스 이미지 선택
FROM kwon0528/vue_frontend:0.3.2

# 작업 디렉토리 설정
WORKDIR /app

# # front.sh 파일 복사
# COPY front.sh /app/chuibot/front.sh

# # 실행 권한 부여
# RUN chmod +x /app/chuibot/front.sh

# # 실행
# CMD ["sh", "/app/front.sh"]
# CMD cd ~/chuibot && git pull

도커 컴포즈를 익히자

시스템 구축과 관련된 명령어를 하나의 텍스트 파일(정의 파일)에 기재해 명령어 한번에 시스템 전체를 실행하고 종료와 폐기까지 한번에 하도록 도와주는 도구이다.

2024.12.12·15분·docker
DOCKERCH8
항목내용
kube-let마스터노드에 있는 kube-scheduler와 연동하며 워커 노드에 파드를 배치하고 실행한다. 또 실행 중인 파드의 상태를 정기적으로 모니터링하며 kube-scheduler에 통지한다
kube-proxy네트워크 통신의 라우팅 메커니즘

쿠버네티스를 익히자

Kubernetes는 컨테이너 오케스트레이션 도구이다. 컨테이너 오케스트레이션이란 시스템 전체를 통괄하고 여러 개의 컨테이너를 관리하는 일을 말한다.

2024.12.12·12분·docker
DOCKERCH5
C:\Users\Kwon>docker run --name mysql000ex11 -dit --net=wp -e MYSQL_ROOT_PASSWORD=1234 -e MYSQL_DATABASE=wordpress---db -e MYSQL_USER=wordpress000user -e MYSQL_PASSWORD=1234 mysql --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci --default-authentication-plugin=mysql_native_password
853dd040ade1fef5532d8429504d7a1b2ab3f0b3cb6f8ed635918d4df773b1b6

C:\Users\Kwon>docker run --name wordpress000ex12 -dit --net=wp -p 8085:80 -e WORDPRESSS_DB_HOST=mysql000ex11 -e WORDPRES
S_DB_NAME=wordpress000db -e WORDPRESS_DB_USER=wordpress000user -e WORDPRESS_DB_PASSWORD=1234 wordpress
aef41f135fbdba00fe389a0f882e52aaa05f24f638fbf7ce3277dfc964ea5e79

C:\Users\Kwon>docker ps
CONTAINER ID   IMAGE       COMMAND                  CREATED          STATUS          PORTS                  NAMES
aef41f135fbd   wordpress   "docker-entrypoint.s…"   24 seconds ago   Up 21 seconds   0.0.0.0:8085->80/tcp   wordpress000ex12

여러 개의 컨테이너를 연동해 실행해보자

워드프레스는 웹 사이트를 만들기 위한 소프트웨어로, 아파치나 데이터베이스, PHP 런타임 등을 필요로 하기 때문에 구축을 위한 연습 소재로 좋다.

2024.12.09·7분·docker
DOCKERCH4
이미지 이름컨테이너의 내용컨테이너 실행에 주로 사용되는 옵션 및 인자
openjdkjava 런타임-d를 사용하지 않고 인자로 java 명령 등을 지정해 도구 형태로 사용한다.
pythonpython 런타임-d를 사용하지 않고 인자로 python 명령 등을 지정해 도구 형태로 사용한다.
phpPHP 런타임웹 서버가 포함된 것과 실행 명령만 포함된 것으로 나위어 제공된다.
rubyruby 런타임웹 서버가 포함된 것과 실행 명령만 포함된 것으로 나위어 제공된다.
perlperl 런타임-d를 사용하지 않고 인자로 perl 명령 등을 지정해 도구 형태로 사용한다
gccC/C++ 컴파일러-d를 사용하지 않고 인자로 gcc 명령 등을 지정해 도구 형태로 사용한다
nodeNode.js-d를 사용하지 않고 인자로 app 명령 등을 지정해 도구 형태로 사용한다
registry도커 레지스트리-d옵션을 사용해 백그라운드로 실행한다. -p 옵션으로 포트 번호를 지정한다.
wordpressWordPress-d옵션을 사용해 백그라운드로 실행한다. -p 옵션으로 포트 번호를 지정한다. MySQL 또는 MariaDB가 필요하다. 접속에 필요한 패스워드는 -e 옵션으로 지정한다.
nextcloudNextCloud-d옵션을 사용해 백그라운드로 실행한다. -p 옵션으로 포트 번호를 지정한다.
redmineRedmine-d옵션을 사용해 백그라운드로 실행한다. -p 옵션으로 포트 번호를 지정한다. PostgreSQL 또는 MySQL이 필요하다

컨테이너를 실행해 보자

컨테이너를 다루는 모든 명령은 docker 명령어로 시작한다 docker 명령어 뒤에 '무엇을', '어떻게', '대상' 순으로 지정하여 명령어를 작성한다.

2024.11.17·37분·docker
DOCKERCH2

2-1. OS는 뭘 하는가?

소프트웨어나 프로그램의 명령을 하드웨어에 전달하는 역할을 한다.

하드웨어는 자신의 판단으로 여러 의미 중 적절한 것을 고르거나 적당히 일을 할 수 없고, 지시받은 대로만 수행할 수 있으므로 동작 하나하나를 지정해 주지 않으면 안 된다.

OS는 이런 일들을 하드웨어가 알아들을 수 있게 번역하여 전달하게 된다.

2-2. 도커의 리눅스 OS 비슷한 것

본래 OS는 ‘커널’이라는 부분과 ‘그 이외의 주변 부분’으로 구성된다. 주변 부분이 프로그램의 연락 내용을 커널에 전달하고 커널이 하드웨어를 다룬다.

여기서 도커의 컨테이너는 운영체제의 주변 부분을 가지고 있다. 이를 통해 프로그램의 명령을 전달받고, 이를 밑바탕이 되는 커널에 전달하는 구조로 되어 있다.

이 덕분에 OS 전체를 컨테이너에 넣지 않을 수 있어, 도커는 가장 큰 특징인 ‘가벼움’을 얻을 수 있다.

2-3. 도커는 기본적으로 Linux 용이다.

도커의 동작 원리

위 그림은 도커의 간단한 구조를 나타낸 것이다. 물리 서버가 있고, 여기서 동작하는 리눅스 운영체제가 있다.

2024.11.07·8분·docker
DOCKERCH1

2-1. 컨테이너

컴퓨터(서버) 상의 환경을 작게 분할한 공간

이렇게 나누어진 컨테이너에 데이터나 프로그램을 두어 격리한다. 이를 격리하는 기능을 제공하는 소프트웨어가 도커다. 도커는 도커 소프트웨어 본체인 도커 엔진을 설치해 사용한다. 이 도커 엔진을 사용하여 컨테이너를 생성하고 구동할 수 있다.

컨테이너를 만드는 데에는 도커 엔진 외에도 이미지가 필요하다

이미지는 컨테이너의 빵틀과도 같은 역할을 하는 것

이미지에는 많은 종류가 있다. 아파치 컨테이너를 만들려면 아파치 이미지를 사용하고, MySQL 컨테이너를 만들려면 MySQL 이미지를 사용한다.

용량이 허락하는 한, 하나의 도커에서 여러 개의 컨테이너를 만들 수 있다.

2-2. 도커의 작동

도커는 리눅스 상에서 동작한다.

Windows나 MacOS에서도 동작하지만 결국 내부적으로 리눅스가 개입한다. 또한, 컨테이너에서 동작시킨 프로그램도 리눅스용 프로그램이다.

도커란 무엇인가?

도커는 '데이터 또는 프로그램을 격리시키는 기능'을 제공하는 소프트웨어다. 주로 서버에 사용되며, 다양한 프로그램과 데이터를 각각 독립된 환경에 격리하는 기능을 제공한다. 운영체제(비슷한 것) 통째로 격리하는 기능이다.

2024.11.06·5분·docker