도커란?
로고를 보면 컨테이너를 나르는 고래 이미지가 있다. 고래는 서버와 이미지저장 및 배포를 의미하고, 컨테이너는 애플리케이션과 서비스 운영을 위한 환경들을 의미한다. 즉, 도커는 복잡한 리눅스 애플리케이션과 서비스 운영환경을 컨테이너로 묶어서 배포 및 실행하는 소프트웨어 플랫폼이다.
도커 이미지
도커 컨테이너를 구성하는 파일시스템과 실행할 애플리케이션 설정을 하나로 합친 것으로 컨테이너를 생성하는 템플릿 역할을 한다. 이미지는 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검색한 결과가 많이 나와있다. 이 중 STARS가 클수록 사람들이 많이 이용하는 이미지이다.
이제 이미지를 가져오면 된다.
sudo docker pull nginx
이미지가 제대로 설치가 되었는지 확인하려면 다음과 같이 입력하면 된다. 아래 그림을 보면 nginx가 제대로 설치된 것을 볼 수 있다.
sudo docker images
이제는 nginx를 실행시켜볼 차례이다. 컨테이너 이름은 nginx-server라고 하였다.
sudo docker run -d --name nginx-server -p 80:80 nginx
컨테이너 목록에 nginx가 있는지 확인하려면 다음과 같이 입력해보면 된다.
sudo docker ps
웹 브라우저에서 localhost:80을 접속해보면 정상적으로 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
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
정상적으로 실행이 된다면 아래와 같은 화면이 나온다. 해당 언어를 선택하고 필요한 정보를 입력하면 성공적으로 설치가 완료된다.
'#모의해킹 > Docker' 카테고리의 다른 글
[Docker] 도커 이미지 관리 (0) | 2021.01.25 |
---|