도커(docker)는 리눅스 컨테이너에 여러 기능을 추가함으로써 애플리케이션을 컨테이너로서 좀 더 쉽게 하용할 수 있게 만들어진 오픈소스 프로젝트입니다.
일반적으로 도커라고 하면 도커 엔진 혹은 도커와 관련된 모든 프로젝트를 의미합니다. 보통 도커엔진이라는 의미로 더 많이 쓰이는데 도커 엔진은 컨테이너를 생성하고 관리하는 주체로서 이 자체로도 컨테이너를 제어할 수 있고 다양한 기능을 제공하는 도커의 주 프로젝트입니다.
1가상머신과 도커 컨테이너
기존의 가상화 기술은 하이퍼바이저를 이용해 어러 개의 운영체제를 하나의 호스트에서 생성해 사용하는 방식이었습니다. 대표적인 가상화 툴로는 VMware,VirtualBox 등이 있습니다.
도커 컨테이너는 가상화된 공간을 생성하기 위해 리눅스의 자체 기능인 chroot, 네임스페이스(namespace),cgroup을 사용함으로써 프로세스 단위의 격리 환경을 만들기 때문에 성능 손실이 거의 없고, 컨테이너에 필요한 커널은 호스트의 커널을 공유해 사용하고, 컨테이너 안에는 애플리케이션을 구동하는 데 필요한 라이브러리 및 실행 파일만 존재하기 때문에 컨테이너를 이미지로 만들었을 때 이미지의 용량 또한 가상 머신에 비해 대폭 줄어들고 컨테이너를 이미지로 만들어 배포하는 시간이 가상머신에 비해서 빠릅니다.
2.도커엔진 설치
2017년 이전의 도커 엔진은 1.xx버전으로 표기되어 왔습니다. 하지만 1.13을 마지막으로 2017년 3월부터 도커 EE(Enterprise Edition)과 CE(Communuty Edition)으로 구분되어 제공하고 있으며 버전 이름 또한 17.03-EE 또는 17.03-CE와 같은 형태로 변하였습니다.
EE는 유료로 제공되는 기업용 솔루션, CE는 무료로 제공되는 도커엔진입니다.
리눅스(Ubuntu)에 도커 설치하기
-VM은 인터넷이 되는 환경이어야 합니다.
버전확인
ysbae@ysbae-VirtualBox:~$ uname -r
5.3.0-28-generic
설치에 필요한 curl 패키지 설치
ysbae@ysbae-VirtualBox:~$ sudo apt-get install curl
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following additional packages will be installed:
libcurl4
The following NEW packages will be installed:
curl libcurl4
0 upgraded, 2 newly installed, 0 to remove and 273 not upgraded.
Need to get 373 kB of archives.
After this operation, 1,038 kB of additional disk space will be used.
Do you want to continue? [Y/n] y
Get:1 http://kr.archive.ubuntu.com/ubuntu bionic-updates/main amd64 libcurl4 amd64 7.58.0-2ubuntu3.10 [214 kB]
Get:2 http://kr.archive.ubuntu.com/ubuntu bionic-updates/main amd64 curl amd64 7.58.0-2ubuntu3.10 [159 kB]
Fetched 373 kB in 1s (252 kB/s)
Selecting previously unselected package libcurl4:amd64.
(Reading database ... 129917 files and directories currently installed.)
Preparing to unpack .../libcurl4_7.58.0-2ubuntu3.10_amd64.deb ...
Unpacking libcurl4:amd64 (7.58.0-2ubuntu3.10) ...
Selecting previously unselected package curl.
Preparing to unpack .../curl_7.58.0-2ubuntu3.10_amd64.deb ...
Unpacking curl (7.58.0-2ubuntu3.10) ...
Setting up libcurl4:amd64 (7.58.0-2ubuntu3.10) ...
Setting up curl (7.58.0-2ubuntu3.10) ...
Processing triggers for man-db (2.8.3-2ubuntu0.1) ...
Processing triggers for libc-bin (2.27-3ubuntu1) ...
curl은 다양한 프로토콜을 지원하는 데이터전송용 command line Tool입니다.
curl을 사용해서 docker사이트를 추가해줍니다.
ysbae@ysbae-VirtualBox:~$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
OK
repository에 docker다운로드 경로를 추가합니다.
ysbae@ysbae-VirtualBox:~$ sudo add-apt-repository \
"deb [arch=amd64] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) \
stable"
Get:1 https://download.docker.com/linux/ubuntu bionic InRelease [64.4 kB]
Get:2 https://download.docker.com/linux/ubuntu bionic/stable amd64 Packages [12.5 kB]
Hit:3 http://kr.archive.ubuntu.com/ubuntu bionic InRelease
Get:4 http://kr.archive.ubuntu.com/ubuntu bionic-updates InRelease [88.7 kB]
Get:5 http://security.ubuntu.com/ubuntu bionic-security InRelease [88.7 kB]
Get:6 http://kr.archive.ubuntu.com/ubuntu bionic-backports InRelease [74.6 kB]
Get:7 http://kr.archive.ubuntu.com/ubuntu bionic-updates/universe Translation-en [343 kB]
Fetched 672 kB in 3s (199 kB/s)
Reading package lists... Done
ysbae@ysbae-VirtualBox:~$ apt-get update
Reading package lists... Done
E: Could not open lock file /var/lib/apt/lists/lock - open (13: Permission denied)
E: Unable to lock directory /var/lib/apt/lists/
W: Problem unlinking the file /var/cache/apt/pkgcache.bin - RemoveCaches (13: Permission denied)
W: Problem unlinking the file /var/cache/apt/srcpkgcache.bin - RemoveCaches (13: Permission denied)
ysbae@ysbae-VirtualBox:~$ sudo apt-get update
Hit:1 https://download.docker.com/linux/ubuntu bionic InRelease
Get:2 http://security.ubuntu.com/ubuntu bionic-security InRelease [88.7 kB]
Hit:3 http://kr.archive.ubuntu.com/ubuntu bionic InRelease
Hit:4 http://kr.archive.ubuntu.com/ubuntu bionic-updates InRelease
Get:5 http://kr.archive.ubuntu.com/ubuntu bionic-backports InRelease [74.6 kB]
Fetched 163 kB in 2s (91.5 kB/s)
Reading package lists... Done
apt-get을 최신상태로 업데이터합니다.
ysbae@ysbae-VirtualBox:~$ sudo apt-get update
추가된것을 확인할 수 있습니다.
Hit:1 https://download.docker.com/linux/ubuntu bionic InRelease
Get:2 http://security.ubuntu.com/ubuntu bionic-security InRelease [88.7 kB]
Hit:3 http://kr.archive.ubuntu.com/ubuntu bionic InRelease
Hit:4 http://kr.archive.ubuntu.com/ubuntu bionic-updates InRelease
Get:5 http://kr.archive.ubuntu.com/ubuntu bionic-backports InRelease [74.6 kB]
docker-ce버전을 설치합니다.
ysbae@ysbae-VirtualBox:~$ sudo apt-get install docker-ce
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following additional packages will be installed:
aufs-tools cgroupfs-mount containerd.io docker-ce-cli git git-man liberror-perl pigz
Suggested packages:
git-daemon-run | git-daemon-sysvinit git-doc git-el git-email git-gui gitk gitweb git-cvs
git-mediawiki git-svn
The following NEW packages will be installed:
aufs-tools cgroupfs-mount containerd.io docker-ce docker-ce-cli git git-man liberror-perl pigz
0 upgraded, 9 newly installed, 0 to remove and 273 not upgraded.
...생략
설치 확인
ysbae@ysbae-VirtualBox:~$ docker info
Client:
Debug Mode: false
Server:
ERROR: Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Get http://%2Fvar%2Frun%2Fdocker.sock/v1.40/info: dial unix /var/run/docker.sock: connect: permission denied
errors pretty printing info
위의 에러가 나오면, ysbae유저를 docker를 사용할수있게 변경 후 docker시스템을 재기동하고 세션을 다시 엽니다.
ysbae@ysbae-VirtualBox:~$ sudo usermod -a -G docker $USER
ysbae@ysbae-VirtualBox:~$ sudo service docker restart
ysbae@ysbae-VirtualBox:~$ docker info
Client:
Debug Mode: false
Server:
Containers: 0
Running: 0
Paused: 0
Stopped: 0
Images: 0
Server Version: 19.03.12
Storage Driver: overlay2
Backing Filesystem: extfs
Supports d_type: true
Native Overlay Diff: true
Logging Driver: json-file
Cgroup Driver: cgroupfs
Plugins:
Volume: local
Network: bridge host ipvlan macvlan null overlay
Log: awslogs fluentd gcplogs gelf journald json-file local logentries splunk syslog
Swarm: inactive
Runtimes: runc
Default Runtime: runc
Init Binary: docker-init
containerd version: 7ad184331fa3e55e52b890ea95e65ba581ae3429
runc version: dc9208a3303feef5b3839f4323d9beb36df0a9dd
init version: fec3683
Security Options:
apparmor
seccomp
Profile: default
Kernel Version: 5.3.0-28-generic
Operating System: Ubuntu 18.04.4 LTS
OSType: linux
Architecture: x86_64
CPUs: 1
Total Memory: 3.844GiB
Name: ysbae-VirtualBox
ID: KJJ6:DAYW:MUQZ:HJH7:H6GY:EDGI:U3BO:2N7S:I7LH:GOKP:CYVF:TQIQ
Docker Root Dir: /var/lib/docker
Debug Mode: false
Registry: https://index.docker.io/v1/
Labels:
Experimental: false
Insecure Registries:
127.0.0.0/8
Live Restore Enabled: false
WARNING: No swap limit support
설치완료
도커와 쿠버네티스의 공부를 시작하였습니다. 앞으로 책을 통해 공부후 블로그에 자주 정리할수 있도록 하겠습니다.
출처 : 시작하세요! 도커/쿠버네티스
'도커&쿠버네티스 > 도커' 카테고리의 다른 글
환경변수옵션을 사용하여 MYSQL 설치하기 (0) | 2020.09.07 |
---|---|
도커의 유용한 명령어 (0) | 2020.09.07 |
도커엔진 (0) | 2020.09.04 |
댓글