[Docker]2. 도커 환경 세팅[도커 엔진 | 도커 기초 | Week 2]
DevOps/Docker

[Docker]2. 도커 환경 세팅[도커 엔진 | 도커 기초 | Week 2]

목차

- 환경 세팅

- 컨테이너 생성 및 실행


환경 세팅

 

VMware 설치

 

https://www.vmware.com/kr/products/workstation-player/workstation-player-evaluation.html

 

 

 

unbuntu server 18.04.5 iso 다운

 

https://releases.ubuntu.com/18.04.5/

 

Ubuntu 18.04.5 LTS (Bionic Beaver)

Select an image Ubuntu is distributed on three types of images described below. Desktop image The desktop image allows you to try Ubuntu without changing your computer at all, and at your option to install it permanently later. This type of image is what m

releases.ubuntu.com

 

VMware 실행 후 iso 넣고 설치

 

설치가 완료되면 아래같이 화면이 뜹니다.

 

 

모두 clear를 넣어주면 아래같이 깔끔해집니다.

 

 

앞서서 입력했던 계정과 비밀번호 입력 후 로그인을 합니다.

 

 

이제 도커 엔진을 설치합시다.

 

아래 공식문서에서 

 

https://docs.docker.com/engine/install/ubuntu/

 

Install Docker Engine on Ubuntu

 

docs.docker.com

 

Set up the repository의 명령어를 복사 붙여 넣기 합니다.

 

 

이렇게 하는 방법이 첫 번째 방법이며

(복붙이 안됨..),

복사 붙여 넣기를 쉽게 하는 방법이 있습니다.

 

다른 방법으로는 

powershell 7에서 원격 접속 후 도커 설치가 진행 가능합니다.

 

powershell 7 설치

 

기존 powershell에서 다음 명령어를 입력합니다.

 

iex "& {$(irm https://aka.ms/install-powershell.ps1)} -UseMSI"

 

 

 

명령어 ifconfig로 가상 환경의 ip주소를 알 수 있습니다.

 

 

원격 접속하기 위해서는 ssh 방식으로 접속하여 가상 환경 id와 위의 ip주소를 가져다 써야 합니다.

 

 

powerShell 7에서 아래의 명령어를 입력합니다.

 

ssh VM아이디@VM의 ip 주소

 

 

입력하니 아래와 같은 창을 띄웁니다.

 

https://blueyikim.tistory.com/1792

 

[Tips] ssh로 해당 호스트 최초 접속시 fingerprint 관련 이슈 해결- known_host 파일

특정 호스트에 최초로 SSH 접속 시에 아래와 같이 RSA key fingerprint로 접속여부(yes/no)를 확인하는 차원에서 물어본다. 쉘 프로그래밍 을 통해 자동으로 SSH 명령어로 자동화를 구현하고자 할때, 제약

blueyikim.tistory.com

 

최초로 접속해서 그렇다네요. yes를 해줍니다. 

host가 여럿일 경우 계속 물어본다던데,

위에서 번거롭지 않게 하나의 host로 설정하는 방법을 알려주네요.

 

yes 하면 다음부터는 물어보지 않는답니다.

 

 

비밀번호 입력 후 이제 ~$표시로 바뀌었습니다.

 

 

우분투 서버를 정상적으로 붙였습니다.

 

 

이제 도커 엔진을 설치할 수 있는 환경이 갖추어졌네요!

 

도커 엔진을 설치해봅시다.

 

https://docs.docker.com/engine/install/ubuntu/

 

Install Docker Engine on Ubuntu

 

docs.docker.com

 

 

sudo apt-get updatepowerShell에 복붙 합니다.

 

비밀번호를 입력하면 설치가 됩니다.

 

이제 나머지도 복붙을 합니다.

백슬래쉬 되어있는 것은 한 줄을 보기 편하게 개행을 한 거라네요.

 

 

아래와 같이 똑같이 복붙을 합니다.

 

 

continue를 물어보는데 Y로 답해줍니다.

 

 

모두 설치되는 모습

 

 

이제 도커 키를 복붙 해줍니다.

 

 

 

순서대로 나머지도 복붙 해줍시다.

 

 

 

이제 진짜 도커 엔진을 설치하네요.

 

 

한 줄씩 복사해서 붙여 넣습니다.

 

 

아까와 다르게 업데이트된 것을 볼 수 있습니다.

 

다른 줄도 복사 붙여 넣기 합니다

 

 

y를 눌러 나머지도 받아줍니다.

 

 

모두 설치된 모습

 

 

 

이제 설치가 끝났습니다.

 

정상적으로 설치되었는지 확인해봅시다.

 

unbuntu 환경에서는 관리자 권한으로 실행해줘야 정상적으로 실행됩니다.

 

sudo docker version 입력

 

 

정상적으로 도커가 설치되었는지 확인했습니다!!

 


컨테이너 생성 및 실행

 

 

 

이제 컨테이너를 한 번 실행해봅시다.

컨테이너에는 대화형 컨테이너, 백그라운드 컨테이너가 있습니다.

 

대화형 컨테이너는 사용자가 확인할 수 있지만,

백그라운드 컨테이너는 사용자가 확인할 수 없고 백그라운드에서 돌아갑니다.

 

 

 

대화형 컨테이너를 실행시키는 명령어는 아래와 같습니다.

 

run 명령어는 컨테이너를 생성하고 실행하는 명령어입니다.

단순 생성 명령어create이며,

이미 생성된 컨테이너를 실행하는 명령어start입니다.

 

대화형 컨테이너는 interativetty를 의미하는 -i-t를 붙여줍니다.

 

https://mug896.github.io/bash-shell/tty.html

 

TTY | Introduction

TTY 컴퓨터는 기본적으로 연산을 위한 입력장치와 출력장치를 가집니다. 지금은 기술이 좋아져서 노트북같은 경우 연산장치, 디스플레이 출력장치, 키보드 입력장치가 모두 같이 있지만 초기에

mug896.github.io

 

name이라는 옵션을 지정하지 않으면, 이 컨테이너 이름이 무작위로 설정되게 됩니다.

이름이 무작위로 설정되면 이 컨테이너가 무슨 역할을 하는지 모르겠죠?

 

컨테이너의 이름을 지어줄 때 무엇이 설치되어있고 어떤 역할을 하는지 이름을 반드시 붙여줍니다.

 

이름을 붙여주고 나서는 사용할 이미지를 적어줍니다.

 

다 입력했으니 입력하고 실행해봅시다.

 

sudo docker container run -i -t --name centos centos:latest

 

 

local에 이미지가 없는 경우 docker hub에서 가져옵니다.

 

 

이제 centos가 정상적으로 실행되었으며, shell에 입력할 수 있습니다.

 

 

unix기반에서 문자열을 나타내 주는 echo명령어 입력을 한번 해보면,

정상적으로 실행되는 것을 눈으로 확인할 수 있습니다.

 

 

또한 exit를 입력하면 unbuntu server로 나올 수 있습니다.

 

 

 

 

이제 background container를 실행해 봅시다.

 

 

background container는 위처럼 눈으로는 확인할 수 없습니다.

background, 즉, 뒷단에서 돌기 때문에 확인을 못합니다.

 

다만, 나중에 log를 확인할 수 있습니다.

 

그래서 서버를 실행시켜 확인해 봅시다.

 

backgroud는 

detach라는 옵션과

publish 옵션을 사용합니다.

publish 옵션은 몇 번 포트에서 forwarding을 할 것인가를 설정해 두는 겁니다.

 

앞쪽에 입력하는 것은 post 우리가 들어가는 unbuntu-server의 포트를 의미하며,

뒤쪽에 입력하는 값은 이 명령어를 통해 생성된 container의 포트를 의미합니다.

 

name은 위와 같고, 뒤에 쓰는 것은 사용할 이미지를 의미합니다.

 

입력하고 실행해 주면 

sudo docker container run -d -p 80:80 --name web-server httpd:latest

 

 

실행이 됩니다.

 

대화형 컨테이너랑은 다르네요.

뭔가를 위처럼 확인할 수 없습니다.

 

 

직접적으로 접근해서 확인해봅시다.

 

sudo docker system info

 

 

이렇게도 확인할 수 있지만, 좀 더 정확하게 알아보기 위해 아래의 명령어를 입력해줍니다.

 

sudo docker container ls 

 

container ID, Image, Command, Created, Status, Ports, Name을 알 수 있습니다.

 

 

이래도 긴가민가하기 때문에 

직접 브라우저에서 확인해봅시다!!

 

ifconfigip주소를 가져와서 브라우저에 입력해봅시다.

 

 

와 정말 작동하네요!!

It works! 가 default값으로 설정되어 있다네요.

 

 

 

 

log도 확인하고 싶다면, 아래와 같이 입력합니다.

 

sudo docker container logs <container 이름>

sudo docker container logs web-server

 

 

log를 확인할 수 있습니다.

 

 

그 서버에 접속하고 새로고침을 하고 나서 다시 log를 확인한 결과 여러 줄이 생겨난 것을 확인할 수 있습니다!

이처럼 사용자가 접속한 log를 확인할 수 있습니다.

 

 

 

이상으로, 도커 환경 세팅 및 기본적인 컨테이너 생성 및 실행에 대해서 정리 및 기록했습니다.