본문 바로가기

#모의해킹/Docker

[Docker] 도커 환경 구성 및 이미지 생성

반응형

도커 로고

도커란?

로고를 보면 컨테이너를 나르는 고래 이미지가 있다. 고래는 서버와 이미지저장 및 배포를 의미하고, 컨테이너는 애플리케이션과 서비스 운영을 위한 환경들을 의미한다. , 도커는 복잡한 리눅스 애플리케이션과 서비스 운영환경을 컨테이너로 묶어서 배포 및 실행하는 소프트웨어 플랫폼이다.

 

도커 이미지

도커 컨테이너를 구성하는 파일시스템과 실행할 애플리케이션 설정을 하나로 합친 것으로 컨테이너를 생성하는 템플릿 역할을 한다. 이미지는 Dockerfile을 통해서 빌드할 수 있고, 기본적으로 변하지 않는다.

 

도커컨테이너

이미지를 실행한 상태로 추가되거나 변하는 값은 컨테이너에 저장된다. 같은 이미지에서 여러 개여 컨테이너를 생성할 수 있고, 컨테이너의 상태가 변하거나 삭제되더라도 이미지는 변하지 않고 그대로 남아있다.

 

 


도커 환경 구축 

실습 환경 : Kali-Linux-2020.4.ver , VirtualBox 

도커 설치하기 전 저장소를 업데이트를 한다.

sudo apt-get update

 

저장소 업데이트

업데이트가 완료되면 본격적으로 도커를 설치한다. Kali-Linux 2020.4 버전은 터미널 실행 시 root 계정이 아니다.

root계정으로 하려면 sudo su -를 입력하면 계속해서 명령어 앞에 sudo를 안 써도 된다.

sudo apt-get install docker.io

 

도커 설치

도커 설치가 완료되었다면 도커를 실행시키기 위해 아래와 같은 명령어를 입력한다.

sudo service docker start

 

도커 실행

 

설치된 도커의 버전을 확인하기 위해 다음과 같이 명령어를 입력한다.

sudo docker --version

 

도커 버전 확인

 


도커 명령어

도커 명령어 검색은 docker help라고 입력하면 확인할 수 있다. 도커 이미지 관련 기본 명령어이다

명령어 설명
docker images 이미지 목록
docker search [image] 이미지 검색
docker pull [image]:[tag] 이미지 받기
docker rmi [image] 이미지 삭제
docker rmi -f [image] 컨테이너를 삭제하기 전에 이미지 삭제

도커 컨테이너 관련 기본 명령어로 컨테이너를 생성하고 실행하는 명령어들이다

 

명령어 설명
docker run [option] [image] 컨테이너 실행
docker ps [option] 실행 중인 컨테이너 확인
docker start [container] 컨테이너 시작
docker restart [container] 컨테이너 재시작
docker stop [container] 컨테이너 종료
docker attach [container] 시작한 컨테이너 터미널에 접속
docker rm [container] 컨테이너 삭제
docker rm $(docker ps -a -q) 모든 컨테이너 한 번에 삭제
docker exec -it [container] bash
컨테이너 내부로 진입

 

run 명령어 옵션이다. 컨테이너를 실행할 때 다음과 같은 형식으로 입력한다.

sudo docker run [options] image[:tag|@digest] [command] [arg…]

 

명령어 설명
-i interactive, 컨테이너와 상호적으로 주고받음.
-t tty 사용
-p 호스트와 컨테이너 포트포워딩
-d 컨테이너를 백그라운드에서 실행
--name 컨테이너 이름 설정
-v 호스트와 컨테이너의 디렉토리 연결
-e 컨테이너 환경변수 설정
-rm 프로세스 종료 시 컨테이너 자동 제거
-link 컨테이너와 컨테이너 연결

 

도커 이미지 생성 - nginx

도커에서 사용하는 이미지들은 Repository를 통해 내려 받거나 공유할 수 있다. Nginx, wordpress, MySQL 등 일반적인 애플리케이션의 공식 이미지들은 Docker Hub에서 다운이 가능하다.

 

첫번째로 Nginx를 설치한다. NginX는 웹 서버, 리버스 프록시 및 메일 프록시 기능을 가진 소프트웨어이다.

sudo docker search nginx

 

nginx 검색

nginx검색한 결과가 많이 나와있다. 이 중 STARS가 클수록 사람들이 많이 이용하는 이미지이다.

이제 이미지를 가져오면 된다.

sudo docker pull nginx

 

nginx 이미지 가져오기

이미지가 제대로 설치가 되었는지 확인하려면 다음과 같이 입력하면 된다. 아래 그림을 보면 nginx가 제대로 설치된 것을 볼 수 있다.

sudo docker images

 

이미지 목록 확인하기

이제는 nginx를 실행시켜볼 차례이다. 컨테이너 이름은 nginx-server라고 하였다.

sudo docker run -d --name nginx-server -p 80:80 nginx

 

nginx 실행

컨테이너 목록에 nginx가 있는지 확인하려면 다음과 같이 입력해보면 된다.

sudo docker ps

 

컨테이너 목록 확인하기

웹 브라우저에서 localhost:80을 접속해보면 정상적으로 nginx가 실행되는 것을 볼 수 있다.

 

nginx 웹 서버 실행


도커 이미지 생성 - MySQL, wordpress

다음은 MySQL wordpress를 설치해 볼 차례이다. 위와 같은 방식으로 설치하면 된다. 워드프레스는 웹 호스팅 서비스에서 실행되는 PHP MySQL을 기반으로 하는 무료 오픈 소스 콘텐츠 관리 시스템이다. 하나로 묶어서 간단하게 설치가 가능하지만 데이터베이스를 외부에서 사용하는 방법으로 설치를 해보았다

docker run -d --name mysql -v-mysql:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=wordpress -e MYSQL_DATABASE=wordpress -e MYSQL_USER=wordpress -e MYSQL_PASSWORD=wordpress mysql:5.7

 

MySQL 설치 및 실행

docker run -d --name wordpress-v-wordpress:/var/www/html –link mysql:mysql -e WORDPRESS_DB_HOST=mysql:3306 -e WORDPRESS_DB_PASSWORD=wordpress -p 89:80 wordpress latest

 

wordpress 설치 및 실행

 

정상적으로 실행이 된다면 아래와 같은 화면이 나온다. 해당 언어를 선택하고 필요한 정보를 입력하면 성공적으로 설치가 완료된다.

 

wordpress 접속화면

반응형

'#모의해킹 > Docker' 카테고리의 다른 글

[Docker] 도커 이미지 관리  (0) 2021.01.25