본문 바로가기

IT

도커 개요

반응형

#####. docker

###. docker 설치

#. net filter

 - 리눅스의 network는 결국 패킷으로 정보를 주고 받는다.

 - application 패킷을 까보면 많은 정보들이 있다 대표적인 것이 https 프로토콜이다.

 - 리눅스에서 소스와 타겟 패킷을 관리하는 것은 커널의 하위 시스템으로 돌고 있는 netfilter이다.

 - firewall은 netfilter정책의 iptables의 명령어로 설정하는 것이다.

 - 그래서 방화벽은 내려야한다.

 - iptables -t filter -vnL

 : -v: 상세한 출력을 표시합니다. 패킷 수와 바이트 수도 포함됩니다.
 : -n: 숫자 형태로 IP 주소와 포트 번호를 표시합니다. 호스트 이름이나 서비스 이름으로 변환하지 않습니다.
 : -L: 규칙 목록을 나열합니다.

 - 그리고 selinux도 해제한다.

 

###. 설치

#. 운영에 필요한 필수 패키지를 설치

 - yum-utils

 : yum 명령어와 관련된 유틸리티를 제공하며, 패키지 설치, 업데이트, 제거, 저장소 관리, 의존성 확인 등 다양한 작업을 수행
 - device-mapper-persistent-data

 : Device Mapper의 영속 데이터 저장을 위한 라이브러리와 도구를 제공하여 볼륨 그룹, 논리 볼륨 등을 관리하는 데 사용
 - lvm2

 :  Logical Volume Manager(LVM) 파티션, 볼륨 그룹, 논리 볼륨의 생성, 확장, 축소, 이동 등의 작업을 수행

- 명령어 입력

 : yum install -y yum-utils lvm2

 - docker repository 추가

 : yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

 - yum install -y docker-ce 해당 명령어로 도커 설치

 : systemctl enable docker

 : systemctl start docker

 : systemctl status docker

 - ifconfig 명령어로 docker0 라는 네트워크 카드가 붙은 것을 확인할 수 있다.

 - 앞서 배웠던 network space 공간이 확보 된 것을 확인 할 수 있다.

 - docker 명령어 --help의 사용법

 

 - docker run -d -p 8080:80 httpd:2.4

 - 아래와 같이 local에서는 172.21.111.112 : 8080으로 vm의 ip주소 값을 갖는다.

 - vm에서는 docker의 ip를 받는다.

 - iptables -t filter -vnL

 - iptables -t nat -vnL

 

 #. docker container ls

 - 도커 컨테이너의 목록을 표시할 때 쓰인다.

 - option으로는

 : --all : -a : 모든 컨테이너를 표시

 : --filter filter : -f : 필터링 할 조건

 : --quiet : -q : 컨테이너의 id만 표시 : docker container rm -f $(docker container ls -aq) 모든 컨테이너 삭제 유용

 

###. docker lifecycle

 - 도커의 라이프 사이클은 아래 그림과 같다.

#. docker container create

 - docker container create [option] image [command] [arg...]

 - 컨테이너를 생성하고 실행하지는 않음

 - 명령어로는 : docker container create -it centos:7.6.1810

 - status에서 created인 상태를 확인 할 수 있다.

#. docker container start

 - 컨테이너를 시작하는 명령어

 - 옵션

 : --attach -i : 표준 출력, 표준 에러를 표현

 : --interactive : -i : 컨테이너의 표준 입력에 접근

#. docker container rm

 - 컨테이너를 삭제 시켜주는 명령어

 - 옵션

 : --force : -f : 운영중인 컨테이너도 강제 종료

 : --volumes : -v : 컨테이너의 볼륨을 제거

 - 추가로 위에서 설명한 것 처럼 docker container rm -f $(docker container ls -aq) 이 명령어를 사용하면 다 지울 수 있다.

 &&. 여기서의 볼륨은 컨테이너 내부의 데이터를 영구적으로 보존하기 위해 사용되며, 컨테이너가 삭제되어도 데이터가 유지됨, 따라서 볼륨을 제거하면 해당 볼륨도 할께 삭제 한다는 의미

###. docker container run

#. -i, -t

 - 생성된 도커를 실행하는 기능

 - 옵션

 : --interactive : -i : 컨테이너가 터미널에 연결되지 않은 상태에서도 STDIN을 계속해서 열어두라는 의미

 : 백그라운드에서 실행되거나 다른 프로세스와 상호작용할 때 STDIN을 통해 입력을 계속 받음

 : --tty : -t : "Allocate a pseudo-TTY"라는 명령은 가상의 터미널을 할당하여 컨테이너 내부의 프로세스가 터미널과 상호작용할 수 있도록 만듬

 : 컨테이너 내부의 프로세스에 터미널 입력을 전달하고, 터미널 출력을 받을 수 있습니다. 이는 대화형 세션을 유지하거나 터미널 명령어를 실행하는 등의 작업에 유용

#. --name string

 - 컨테이너의 이름을 지정

 - docker container run --name con01 centos

#. --detach : -d

 - 컨테이너를 백그라운드에서 실행하고 컨테이너 ID를 출력

 - 컨테이너의 고유한 식별자인 컨테이너 ID를 출력하라는 의미.

 - 컨테이너를 백그라운드에서 실행한다는 것은 컨테이너를 백그라운드에서 독립적으로 실행하여, 현재 터미널 세션에 종속되지 않고 실행되도록 하는 것을 의미.

 - 이렇게 하면 컨테이너가 실행 중일 때 터미널 세션을 사용할 수 있고, 다른 작업을 수행할 수 있게 됨

#. --follow : -f

#. --timestamps : -t

 - 위는 로그를 확인하는 명령어로

 - 형식은 docker container logs [option] [container name]

 - -f : 출력되는 로그를 따라가는 것

- -t : timestamps 를 출력

#. port

 - 호스트의 포트를 컨테이너의 포트로 매핑

 - --publish list : -p

 - docker container run -d --name T01 -p 7070:8080 tomcat:6

 

#. docker env (환경변수)

 - 도커에 환경변수를 추가하는 명령어

 - 옵션

 : --env list : -e : 환경변수를 추가

 : --env -file 

#. --workdir string : -w

 - 현재 작업 디렉토리 설정 : 해당 디렉토리가 없으면 생성

 - docker container run -it -w=/tensorflow centos

#. prune

 - 사전적 의미 : 가지치기 / 필요없는 부분을 제거

 - docker container prune

#. docker container cp

 - echo "Hello Docker" > hello.html
 - docker container cp hello.html web:/usr/local/apache2/htdocs

#. docker container exec

 - 백그라운드에서 실행되는 컨테이너에 접속할 때 유용

 - 명령어는 docker container exec [option] [container command] [arg..] 형식으로 한다.

 - --interactive : -t : 접속 되지 않았다면 표준 입력을 열어주고 유지시킨다.

 - --tty : -t : llocate a pseudo-TTY는 의사-TTY를 생성하고, 마스터와 슬레이브 파일 디스크립터를 반환하는 작업을 의미

 - attach를 사용해도 ctrl + c로 나와야 함으로 해당 컨테이너는 exited 된다.

#. docker container diff

 - 컨테이너 파일 시스템의 변경내역 확인

 - docker container diff [container names]

#. docker container inspect

 - 컨테이너의 상세 정보 확인

 - docker container insperct [container names]

 

 

반응형

 

반응형