Virtualization 6 . Docker, Container

2024. 5. 20. 16:01Virtualization

Docker는 

커널 컨테이너 기술을 이용하여 만든 컨테이너 기술이다.

 

설치 과정이 조금 복잡하니

한번 알아보자

 

먼저 CentOS7의 가상머신을 생성하자

 

메모리 4G , 프로세서 4개로 생성했다.

OS 설치과정을 전과 같이 해주자

 

 

 

host 변경

설치중 네트워크 설정 단계에서 호스트 이름을 바꿔줄 수도 있다.

 

만약 설치 단계에서 바꾸지 않았다면 

 

vi /etc/hosts 명령어로

호스트를 변경 해주자

vi /etc/hosts
-----------------------------vi 편집기--------------------------
 (자신의 IP) docker1.test.com docker1 
 
 마지막 줄에 추가
systemctl disable --now firewalld
방화벽 비활성화

SELINUX disalbled 또는 setenforce 0로
SELINUX 비활성화

 

Git Clone 설치

yum install -y epel-release
yum install -y git-core
git clone https://github.com/ncs10322/docker.git

위 명령어로 패키지 설치 후 

ls docker 명령어를 입력해보자

ls docker

위 사진처럼 뜬다면 성공이다.

 

리포지토리 추가

yum install -y yum-utils
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
yum install -y yum-utils (리포지토리 변경후 한번더 다운로드)

 

충돌 패키지 삭제

 

rpm -qa runc 
yum -y remove runc

 

충돌 패키지가 없다면 위 사진처럼 아무것도 뜨지 않는다.

없어도 정상이다.

 

 

설치 스크립트 다운로드

 

curl -fsSl https://get.docker.com -o get-docker.sh

현재 디렉토리에 get-docker.sh 파일이 다운로드 됐는지 확인

ll

 

Docker는 설치 과정이 복잡해 스크립트 파일을 다운로드 받았다.

 

 

 

 

Docker-ce 설치

 실행 권한이 없이 때문에 권한을 부여해주고

실행해보자

chmod 777 get-docker.sh

./get-docker.sh 
권한 부여 후 위 명령어로 스크립트 실행

설치를 진행해주자

 

 

 

설치 확인

실행이 되지 않거나 이상이 있으면

설치여부를 확인해보자

rpm -qa | grep docker

 

Docker 서비스 시작

systemctl enable --now docker

실행후 status 확인

systemctl status docker

위 사진처럼 확인된다면 실행 성공이다.

 

 

 

 

 

 

예시로 Docker 내부 컨테이너에서 웹서비를 간단히 구현해보자

nginx 를 사용하겠다.

 

먼저 mkdir /www 를 생성해

웹컨텐츠 디렉토리를 정해주고

 

 

nginx라는 웹 서버 소프트웨어를 설치해보자

docker pull nginx

 

docker container run -d --name myweb -v /www:/usr/share/nginx/html -p 80:80 nginx

위 명령어로 한 컨테이너를 만들고 nginx 서비스를 추가해주자

 

/www:/usr/share/nginx/html

위 처럼 경로가 이상한 이유는 호스트 PC의 /www에

컨테이너의 /usr/share/nginx/html 를 마운트 한다는 의미다!

포트가 80:80인 이유는 첫번째 포트는 오리지널 포트고 두번째는 nginx의 포트로써 포트 포워딩을 해준 것이다.

이후 IP 주소로 접속해보면 위 사진처럼 뜰 것이다.

그럼 성공이다.

 

처음 만들어둔 /www 디렉토리에

웹컨텐츠를 넣어보자

vi /www/index.html에서 아무거나 만들어보자

성공이다.

 

 

 

 

 

 

 

Docker 내부로 접속하기

Docker 내부의 시스템으로 접속해볼 수도 있다!

 

docker exec -it myweb /bin/bash

위 명령어로 myweb 컨테이너로 접속했다!

 

접속시 시작점은 마운트 지점이다!

 

또한 내부에 만들었던 index.html 을 확인해보면

마운트 되어서 똑같은 파일이 존재하는 것을 볼 수 있다!

 

 

 

 

 

 

 

 

Docker 명령어

 

컨테이너 이미지 확인 명령어

docker images

컨터이너를 수정할때  리포지토리 이름이나, 이미지 ID로 지정해줄 수 있다.

 

우리는 각각 2주,6주, 15개월 전에 만들어진

이미지들을 다운로드 받은 걸 알 수 있다.

 

 

 

 

컨테이너 확인 명령어

docker container ls


docker container ls -a 

-a 옵션은 꺼져있는 컨테이너도 모두 표시된다.

 

 

 

 

컨테이너 삭제 및 정지 명령어

 

컨테이너 정지 명령어

docker container stop (컨테이너 이름)

컨테이너 삭제 명령어

docker container rm  (컨테이너 이름)

 

 

 

 

 

 

도커에 올라와 있는 이미지를 미리 확인해볼 수도 있다

https://hub.docker.com/

 

Docker Hub Container Image Library | App Containerization

Increase your reach and adoption on Docker Hub With a Docker Verified Publisher subscription, you'll increase trust, boost discoverability, get exclusive data insights, and much more.

hub.docker.com

위 사이트를 확인해보면

각종 이미지 파일들을 검색해볼 수 있다.

 

만약 이미지 파일을 도커 허브에 업로드 하고 싶다면

사이트 회원가입 후

docker login 명령어를 사용하자