2023. 9. 14. 12:24ㆍ쿠버네티스/Docker
리눅스 컨테이너에 여러 기능을 추가함으로써 애플리케이션을 컨테이너로서 좀 더 쉽게 사용할 수 있게 만들어진 오픈소스 프로젝트를 의미.
"도커"라고 하면 "도커 엔진" 또는 관련된 프로젝트를 의미하나, 보통 도커 엔진이라는 의미로 더 많이 사용한다. 도커의 여러 프로젝트들은 도커 엔진들 좀 더 효율적으로 사용하기 위한 것에 불과해 핵심은 도커 엔진에 있다.
도커 엔진 설치는 공식 홈페이지에서 문서를 통해 설치가 좋다.
https://docs.docker.com/engine/install/
Install Docker Engine
Choose the best method for you to install Docker Engine. This client-server application is available on Linux, Mac, Windows, and as a static binary.
docs.docker.com
cent os 기준
https://docs.docker.com/engine/install/centos/
Install Docker Engine on CentOS
Learn how to install Docker Engine on CentOS. These instructions cover the different installation methods, how to uninstall, and next steps.
docs.docker.com
Open VM Tools 설치
대부분의 Linux 배포판에는 open-vm-tools가 포함되며 일부 배포판은 기본적으로 open-vm-tools를 설치합니다.
docs.vmware.com
[centOS 7] VB에서 centOS minimal install(최소 설치) 후 화면 해상도 조절
상황 버추얼박스 설치centOS 7.1511 배포판 설치 화면 크게 보려고 게스트 확장자 설치 => xorg 가 없어서 x11는 skip 되고 나머지만 설치됨 / yum update kernel* 한 후 다시 해봤지만 마찬가지 잘 되지 않음
lhb0517.tistory.com
https://wlsvud84.tistory.com/24
리눅스 Centos 7 grub2 부팅 순서 변경하기
안녕하세요 롯사입니다. 이번 시간엔 Centos 7 적용되어 있는 grub2 기반의 커널 순서 변경하는 방법에 대해서 알아보겠습니다. 커널 순서 변경해야 하는 경우는 크게 많지 않지만 보안 패치를 하거
wlsvud84.tistory.com
일반사용자에게 docker 명령어 권한 주기
usermod -a -G docker [멤버이름]
도커 엔진의 핵심은 "이미지와 컨테이너" 이다.
이미지는 컨테이너 생성할 때 필요한 요소이며, 가상 머신을 생성할 때 사용하는 iso 파일과 비슷한 개념이다. 이미지는 여러 개의 계층으로 된 바이너리 파일로 존재하고, 컨테이너를 생성하고 실행할 때 읽기 전용으로 사용된다. 이미지는 도커 명령어로 내려받을 수 있으므로 별도로 설치할 필요는 없다.
기본적 구조는 [저장소 이름]/[이미지 이름]:[태그]의 형태로 구성 된다.
alicek106 : ubuntu : 22.04
저장소 : 이미지 이름 : 이미지 버전
- 저장소 : 이미지가 저장된 장소를 의미한다. 저장소 이름이 명시되지 않으면 도커에서 기본적으로 제공하는 이미지 저장소인 "도커 허브"의 공식 이미지를 의미한다. 보통 저장소 이름을 생략하는 경우도 있다.
- 이미지 이름 : 해당 이미지가 어떤 역할을 하는지 나타냅니다. 위 예시는 우분투 컨테이너를 생성하기 위한 이미지라는 것을 알 수 있습니다. 이미지의 이름은 생략할 수 없으며 반드시 설정해야 합니다.
- 태그 : 이미지의 버전 관리, 혹은 리버전 관리에 사용합니다. 일반적으로 22.04와 같이 버전을 명시하지만 태그를 생략하면 도커 엔진은 이미지의 태그를 latest로 인식합니다.
도커 컨테이너
목적에 맞는 파일 시스템, 격리된 시스템 자원, 네트워크를 사용할 수 있는 독립된 공간이 생성되고, 이것이 컨테이너이다. 예를 들어, 웹 서버 도커 이미지로부터 여러개의 컨테이너를 생성하면 컨테이너의 개수만큼 웹 서버가 생성된다.
출처 : https://wlsvud84.tistory.com/24
컨테이너 구조
출처 : https://www.leafcats.com/146
컨테이너
출처 : https://masterfromus.wordpress.com/2020/02/08/docker-container/
- Isolate - resource, network, application - 다른 컨테이너, 호스트 PC에 영향을 주지 않는다.
도커 호스트 : 도커 데몬이 실행되고 있는 시스템(Linux kernerl)
도커 Daemon : 도커 호스트 위에서 동작하는 도커 엔진 의미 (systemctl start docker)
출처 : https://www.edureka.co/blog/docker-architecture/
- Client : 도커 Container를 관리하고 실행하기 위해서 Deamon과 상호작용하는 Binary 파일이다.
- Registry : 도커 Image가 저장되어 있는 장소이다. 대표적으로 Docker Hub가 있다. Registry는 Public Registry와 Private Registry가 있다.
- Daemon : Host에 설치되어 도커 Container를 관리하는 daemon 프로세스이다. Client와 상호작용한다.
- Image : 도커 Daemon을 통해 Container로 실행 가능하도록 필요한 프로그램, 라이브러리, 소스 등이 설치된 파일이다. 파일로 저장되어 있다.
- Container : Image를 실행한 상태이다.
컨테이너 / 컨테이너 이미지
출처 : 이미지
도커 이미지 파일 확인해 보기
컨테이너 다루기
도커 엔진 버전 확인
docker -v
빠르게 업데이트 되기 때문에 버전 확인은 중요하다.
도커 로그인
dorcker login
도커 생성 및 실행
docker run -i -t ubuntu:14:04
-i, -t는 컨테이너와 입출력을 가능하게 해주는 옵션이다.
위와 같은 명령어로 생성, 실행 후 컨테이너 안으로 들어가게 된다.
컨테이너의 기본 사용자는 root이고 호스트 이름은 무작위의 16진수 해시값이다. 무작위의 16진수 해시값은 컨테이너의 고유한 ID의 앞 일부분이다.
-i옵션은 상호 입출력을, -t 옵션은 tty를 활성화 해서 배시 셸을 사용하도록 컨테이너를 설정해주었다. docker run 명령어에서 이 두 옵션 중 하나라도 사용하지 않은면 셸을 정상적으로 사용할 수 없다.
컨테이너와 호스트의 파일시스템은 서로 독립적이므로 ls 명령어로 파일시스템을 확인해보면 아무것도 설치되지 않은 상태임을 확인할 수 있다.
(단 컨테이너를 정지시킨다)exit 명령어로 "호스트"로 돌아갈 수 있다. 아니면 Ctrl + D로 나올수 있다.
컨터에너를 정지시키지 않고 나오기 위해서는 "Ctrl+ P, Q"를 입력하면 된다.
"Ctrl+ P, Q"로 빠져나온 상태라, centos는 status가 "up"상태이다.
컨테이너 "run"명령어는 4가지 단계의 명령어를 포함하고 있다.
# 이미지 다운로드
docker pull centos:7
# 컨테이너 생성
docker create -i -t --name mycentos centos:7
# 컨테이너 시작
docker start mycentos
# 컨테이너 진입
docker attach mycentos
도커이미지 확인
docker images
컨테이너 목록 확인
docker ps
정지되지 않은 컨테이너 목록이 나온다. "docker ps -a" 명령어로 확인하면 정지된 컨테이너 목록까지 다 출력 된다.
명령어의 출력에 대한 내용
- CONTAINER ID : 자동으로 할당된 고유 ID, 컨테이너 정보 확인하기 위해 docker inspect 명령어를 사용하면 전체 ID를 확인할 수 있다.
docker inspect mycentos | grep Id
- IMAGE : 컨테이너를 생성할 때 사용한 이미지의 이름
- COMMAND : 커맨드는 도커 컨테이너가 시작될 때 실행될 명령어 이다. 커맨드는 이미지에 미리 내장돼 있기 때문에 별도로 설정할 필요는 없다. docker run or create 명령어의 맨 끝에 입력해서 컨테이너를 생성 및 실행 하면 명령어를 덮어쓸 수 있다.
docker run -it ubuntu echo hello world!
하지만 위처럼 덮어쉬어지면 /bin/bash를 덮어쓰기 때문에 상호 입출력이 가능한 셸이 실행되지 않아 컨터이너가 실행되지 않는다.
- CREATED : 컨테이너가 생성되고 난 뒤 흐른 시간
- STATUS : 컨테이너의 상태 표현, 실행 중임을 나타내는 "UP", 종료된 상태인 "Exited", 일시 중지된 상태인 "Pause"등이 있다.
- PORTS : 컨테이너가 개방한 포트와 호스트에 연결한 포트를 나열, port를 지정하지 않으면 아무것도 출력이 안됨
- NAMES : 컨테이너의 고유한 이름, --name 옵션으로 지정할 수 있다. 지정하지않으면 무작위로 생성 됨, "rename" 명령어로 이름을 변경 할 수 있음.
명령어의 출력 결과가 잘 안보일때는 --format 옵션을 활용하여 깔끔하게 볼 수 있다.
docker ps --format "table {{.ID}}\t{{.Status}}\t{{.Image}}\t{{.Names}}"
컨테이너 삭제
docker rm [컨테이너 이름 or 컨테이너 ID]
# 한번에 모든 컨테이너 지우기
#방법 1
docker container prune
#방법 2
docker stop ${docker ps -a -q}
docker rm ${docker ps -a -q}
run -d / run -i -t
mysql 컨테이너 설치
wordpress 컨테이너 설치
설치 후 확인
'쿠버네티스 > Docker' 카테고리의 다른 글
도커의 동작 원리 (2) | 2023.10.22 |
---|---|
도커 엔진 (0) | 2023.10.22 |
무엇을 컨테이너로 만드나 (0) | 2023.07.23 |
컨테이너 알아보자 (0) | 2023.07.23 |
centos7-docker install (1) | 2023.07.23 |