[Docker] 기초 정리
## 도커 설치
1. virtual box 설치 - 네트워크 구성 - vm 만들기
- virtualbox 다운로드 후 설치(virtualbox.org)
- 환경설정(네트워크 구성)
- 가상머신 만들기
2. vm에 ubuntu 20.04 설치하고 기본 환경 구성하기
- ubuntu 20.04 설치(ubuntu.com) : LTS(Long Term Support version)
키보드 설정 그대로 - 디스크를 지우고 우분투 설치 - 타임존 서울
- 여기까지 하면 설치가 되고 재시작을 물어봄
- 재시작 후 우측 상단에서 설정 버튼을 통해 [디스플레이] tab에 진입하여 화면 해상도를 변경해준다. 1280 * 960(4:3)
- 네트워크 구성
- 바탕화면에서 우측버튼 클릭하면 `터미널 열기` 로 들어감(cmd)
- ip addr, hostn90me 클릭하면 정보 확인 가능
- 호스트 네임 변경: sudo vi /etc/hostname 입력 후 docker-ubuntu.example.com 으로 수정(putty 명령어 활용)
- 호스트 정보 추가 : sudo vi /etc/hosts 입력 후
- ping -c 3 8.8.8.8 을 입력하여 통신이 잘되는지 확인(8.8.8.8 은 google의 dns)
- root password 설정 : 비밀번호(password)
- 여기까지 하면 ubuntu 환경 구성은 완료
- exit 2번 입력 후 reboot 입력
- putty로 접속정보 입력 후 접속
3. vm에 centos 설치하고 환경구성하기
4. ubuntu/centos server에 docker 설치하기
- https://docs.docker.com/engine/install/ubuntu/
* 다운로드 방법
- repository를 이용해서 설치 (외부 네트워크 O)
- download 후 직접설치 (외부 네트워크 X)
- script를 이용한 설치
// Install using the apt repository
// 설치 전 이전버전 삭제
for pkg in docker.io docker-doc docker-compose podman-docker containerd runc; do sudo apt-get remove $pkg; done
// 요구프로그램 설치
guru@docker-ubuntu:~$ sudo apt-get update
guru@docker-ubuntu:~$ sudo apt-get install ca-certificates curl gnupg
// 인증서 저장
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg
// url 등록
echo \
"deb [arch="$(dpkg --print-architecture)" signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
"$(. /etc/os-release && echo "$VERSION_CODENAME")" stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
// docker engine 등록
sudo apt-get update
// 설치 가능 버전 확인
apt-cache madison docker-ce | awk '{ print $3 }'
// 특정 버전 설치
VERSION_STRING=5:20.10.24~3-0~ubuntu-jammy
sudo apt-get install docker-ce=$VERSION_STRING docker-ce-cli=$VERSION_STRING containerd.io -y
// 설치 정상적으로 되었는지 확인
guru@docker-ubuntu:~$ sudo docker version
Client: Docker Engine - Community
Version: 20.10.24
API version: 1.41
Go version: go1.19.7
Git commit: 297e128
Built: Tue Apr 4 18:21:03 2023
OS/Arch: linux/amd64
Context: default
Experimental: true
Server: Docker Engine - Community
Engine:
Version: 20.10.24
API version: 1.41 (minimum version 1.12)
Go version: go1.19.7
Git commit: 5d6db84
Built: Tue Apr 4 18:18:48 2023
OS/Arch: linux/amd64
Experimental: false
containerd:
Version: 1.6.21
GitCommit: 3dce8eb055cbb6872793272b4f20ed16117344f8
runc:
Version: 1.1.7
GitCommit: v1.1.7-0-g860f061
docker-init:
Version: 0.19.0
GitCommit: de40ad0
guru@docker-ubuntu:~$
- 계정 추가 및 관리자 권한 부여
guru@docker-ubuntu:~$ su - // root 로 접속
암호:
root@docker-ubuntu:~# usermod -a -G docker guru // guru 관리자 권한 부여
root@docker-ubuntu:~# su - guru
guru@docker-ubuntu:~$ docker ps // 권한 잘 부여되었는지 확인
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
guru@docker-ubuntu:~$
5. windows 10에 dockerDesktop 설치하기
# cat app.js
const http = require('http');
const os = require('os');
console.log("test server is running...");
var handler = function(req, res) {
res.writeHead(200);
res.end("Container Hostname: " + os.hostname() + "\n");
};
var www = http.createServer(handler);
www.listen(8080);
# cat Dockerfile
FROM node:12 // node환경을 설치하고
COPY app.js /app.js // ??
ENTRYPOINT ["node", "app.js"] // 만들어놓은 app.js를 저장하고 실행할 수 있는 환경을 만듬