중요 도커 4가지
docker image
docker container
docker network
docker volume
도커 ssh접속
mobaXterm이 안될 시 cmd :) ssh ubuntu@192.168.56.10으로 재접속 시도 후 껏다 다시 키기
*에서 도커 이미지 내용 파악
docker image는 Container runtime에 필요한 바이너리, 라이브러리 및 설정 값 등을 포함하고, 변경되는 상태 값을 보유하지 않고 (stateless) 변하지 않는다. (Immutable, RO)
Runtime
어떤 프로그램이 실행되고 있는 동안의 동작
ㄴ해당 프로그램이 필요한 시스템 자원(RAM, 시스템 변수, 환경변수 등)을 할당박고 실제로 시스템 자원을 사용해서 어떤 처리를 하고 있는 것
런타임 환경(Runtime Environment)
런타임이 시스템 자원에 액세스 할 수 있도록 해주는 실행 환경
프레임워크
프로그램을 개발하기 위해 사용되는 틀을 제공하는 프로그램
configure = 설정 값
가상화를 하는 이유 = 금액이 절약됨, 설치속도가 빠름(서버~클라이언트 설치)
도커의 단점
작고 빠르게 하기 위해 필요한 것 외에는 할 수 있는 게 없음(특수목적용) -> 필요한 기능만 뽑아서 각각 만들기 때문
도커 컨테이너
실행되고 있는 상태
해당 상태를 만드는 것이 도커 이미지
가상머신은 필요 시 설치
도커 컨테이너는 설치된 상태를 스냅샷으로 찍어둔 걸 그대로 푸는 것
ㄴ스냅샷는 실행이 아닌 보관해놓은 상태(=도커이미지) > 변경 불가
데브옵스
소스프로그램(사람이 알아볼 수 있는 것) ---컴파일러(번역=문법검사)---> 목적프로그램
실행 모듈 작동 시 메모리로 로드
홈페이지
web - 기본 정적 웹페이지
was(Web Application Server) - 클릭 등 입력 등에 따라 프로그램(어플리케이션)이 동작하는 웹페이지
도커이미지 만드는 방법
1. 설치 다한 상태에서 이미지로 만드는 방법
2. 만드는 방법을 적어놓고 실행하여 만드는 방법
도커 이미지 파일 만들기 위해서는 메이커에서 만든 베이스 이미지를 들고와서 깔고 필요한 app을 올려서 만든다
만든 이미지 파일을 도커 이미지 저장소에 저장
이후 docker run을 하면 만든 도커 이미지가 실행됨
제일 오래걸리는 건 다운로드 받는 시간
베이스 이미지 => 내가 작업하기 위해 가지고 온 이미지
ㄴOS, 런타임환경 등
리눅스에서 필요한 패키지는 yum install에서 다운 = 저장소(Repogitory)
보안상 회사의 도커이미지는 허브에 올리면 안되기에 서버하나 만들어서
기업의 인프라에 개별적인 private registry서버를 두고, 이곳에 이미지를 pull/push하기도 한다.
도커허브 = 레지스트리
계정별 공간 = 리포지토리
$docker pull busybox
BusyBox : 400여개의 리눅스 커맨드라인 명령어들을 모아놓은 단일 실행 파일 => 경량의 리눅스 명령어만 존재
ㄴ특수목적의 작고 세부적인 명령 위함
~$ docker pull gcr.io/google-samples/hello-app:1.0
구글에서 만든 도커이미지
다른곳에서 받은 경우 리포지토리에 위치가 표기됨
~$ docker image inspect httpd:latest
도커이미지(httpd)의 상세내용 확인
ㄴhtml 형식으로 나옴
프로토콜 : 통신규칙 = 통신상 2진수를 전송했을 때 어디서 어디까지(옥텟 등) 자르는 지 약속하는 것
텍스트로 된 데이터를 메모장(어떤컴퓨터에서도 사용가능한 앱:종속X) 같은 앱으로 전송
.html은 태그명령어가 필수 기에 사용 어렵기에
.xml을 제작되게됨 : 구조화된 문서
ㄴ정해진 문법이 없어 마음대로 쓰는 게 가능
<학생>
<번호>1</번호>
<이름>홍길동</이름>
...
</학생>
.json 형태가 그다음 제작됨
ㄴ키와 값으로 이루어진 형태
학생{
번호 : 2;
이름 : 홍길서;
...
}
inspect통해서 확인하는 내용 중
ExposedPorts = 외부접속용 포트
Architexture = 접속구조 구성방식
도커이미지
마지막 ls를 명령입력 시 이미지 레이어를 볼수 있다
이미지를 찍고 그 위에 nginx를 설치하여 RW레이어를 추가하여 nginx이미지 새롭게 제작
기존 레이어와 이미지 파일 합친것 menge
작업중 레이어 wordr
이미지 파일 lowerdr
작업이 끝나면 2개가 합쳐짐
$ docker history httpd:latest
/bin/sh 밑에 깔려있는 운영체제
이미지 만든 내용 올리기
도커허브 접속을 위해 로그인
$docker info | grep -i username : 명령어를 전송하기 위한 파이프라인 기능
ㄴdocker info안에 username에 관한 값이 없음
Docker Hub 사이트에서 쓰는 ID와 비번 입력하여 로그인 시 결과값이 생김
비번은 (숨겨진).docker 폴더에 .json에 들어있으나 암호화 되어있음
ls -al : 숨겨진 폴더 포함 전체 리스트 확인
암호화
비번 암호화가 풀기 쉽다
그렇기에 ID,비번 가지고 도커에 로그인하지 말 것!!
docker hub에서 Account Settings - Security - Personal access tokens
> 502-token(원하는 토큰) 입력 후 Read, Write, Delete 체크 후 실행하면 암호화된 토큰(임시)비번을 얻을 수 있다
ㄴ단점 : 할때마다 토큰 비번을 꺼내서 입력해야하기에 리눅스에 보관
$ vi .access_token : 토큰 생성
ㄴ얻은 토큰 비번을 입력 후 :wq로 저장
원래는 계정의 비번이나 토큰을 입력해야 하나 이렇게 저장함으로 자동으로 비번 입력
$ cat .access_token | docker login --username brilliance408 --password-stdin
ㄴ토큰결과를 파이프를 통해 뒤로 넘길 때 계정 명을 입력 후 비번은 기본입력칸으로 입력
로그인방법
1. ID,비번 입력
2. ID,토큰 입력
3. 토큰을 저장하여 cat으로 접속
이용하지 않거나 이동할 때 토큰 비활성화 필수!!
로그인 완료 후
명령어를 넣어 계정내 동일한 이미지를 복사 후 붙여넣고
계정에 해당 도커이미지를 업로드
이후 잘못 설치한 이미지가 있다면
$ docker (image) rmi [도커 레포지토리+태그 / 이미지 ID]
여기서 이미지 아이디만 보고 싶다면
$ docker images -q : 통해 확인 가능
전체 이미지 삭제 시
$ docker rmi $(docker images -q)
ㄴ$(명령어)는 내부명령어를 실행
ex) echo "ls" 는 문자열 취급이나 echo "$(ls)" 는 명령어로 처리
전체 이미지 삭제를 해도 실행중인 파일이 있어 전체삭제는 불가한데
$ docker rm $(docker ps -aq)
여기서 모든 컨테이너도 없애야 하기에 해당 명령어 사용해도 태그 들어간 내용 들은 삭제되지 않아 중간에 -f(강제명령)을 추가 입력 해야함
해당 명령어들로 도커 이미지와 컨테이너들을 삭제
'AWS 교육 > Docker-AWS (월)' 카테고리의 다른 글
241007_Docker Network 브릿지, namespaces, DNS서버, 지정 (0) | 2024.10.07 |
---|---|
240930_Docker 컨테이너, 네트워크 (0) | 2024.09.30 |
240925_네트워크 축약 (0) | 2024.09.25 |
240909_Docker 기초 (0) | 2024.09.10 |
240902_Docker 원격접속 (0) | 2024.09.10 |