티스토리 뷰

728x90
반응형

 포스팅은 초보자를 위한 Docker 설치 방법 및 사용 방법에 대한 가이드입니다.


설치 및 활용 환경은 Linux NRSON 3.10.0-514.el7.x86_64 #1 SMP Tue Nov 22 16:42:41 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux 입니다.

 

1. Docker 설치

Docker를 사용하고 운영하기 위해 일반 사용자 계정인 dockerCon이라는 사용자를 생성하였습니다.

Docker의 경우 root 권한이 필요함으로 먼저 해당 계정에 sudo 사용 권한을 부여합니다.

root 계정으로 /etc/sudoer 파일을 vi로 열고 위와 같이 dockerCon 계정에 권한을 부여합니다.

 

 

 sudo 권한이 정상부여되었으면 다음과 같이 Linux 환경에 docker를 설치 합니다.

sudo wget -qO- http://get.docker.com/ | sh 

 설치가 수행되며 아래와 같은 package들이 설치되고 있음을 확인할 수 있습니다.

[dockerCon@NRSON ~]$ sudo wget -qO- http://get.docker.com/ | sh
# Executing docker install script, commit: e749601
+ sudo -E sh -c 'yum install -y -q yum-utils'
No Presto metadata available for base
+ sudo -E sh -c 'yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.r                                                                                                                                          epo'
Loaded plugins: fastestmirror, langpacks
adding repo from: https://download.docker.com/linux/centos/docker-ce.repo
grabbing file https://download.docker.com/linux/centos/docker-ce.repo to /etc/yum.repos.d/docker-ce                                                                                                                                          .repo
repo saved to /etc/yum.repos.d/docker-ce.repo
+ '[' edge '!=' stable ']'
+ sudo -E sh -c 'yum-config-manager --enable docker-ce-edge'
Loaded plugins: fastestmirror, langpacks
====================================== repo: docker-ce-edge =======================================
[docker-ce-edge]
async = True
bandwidth = 0
base_persistdir = /var/lib/yum/repos/x86_64/7
baseurl = https://download.docker.com/linux/centos/7/x86_64/edge
cache = 0
cachedir = /var/cache/yum/x86_64/7/docker-ce-edge
check_config_file_age = True
compare_providers_priority = 80
cost = 1000
deltarpm_metadata_percentage = 100
deltarpm_percentage =
enabled = 1
enablegroups = True
exclude =
failovermethod = priority
ftp_disable_epsv = False
gpgcadir = /var/lib/yum/repos/x86_64/7/docker-ce-edge/gpgcadir
gpgcakey =
gpgcheck = True
gpgdir = /var/lib/yum/repos/x86_64/7/docker-ce-edge/gpgdir
gpgkey = https://download.docker.com/linux/centos/gpg
hdrdir = /var/cache/yum/x86_64/7/docker-ce-edge/headers
http_caching = all
includepkgs =
ip_resolve =
keepalive = True
keepcache = False
mddownloadpolicy = sqlite
mdpolicy = group:small
mediaid =
metadata_expire = 21600
metadata_expire_filter = read-only:present
metalink =
minrate = 0
mirrorlist =
mirrorlist_expire = 86400
name = Docker CE Edge - x86_64
old_base_cache_dir =
password =
persistdir = /var/lib/yum/repos/x86_64/7/docker-ce-edge
pkgdir = /var/cache/yum/x86_64/7/docker-ce-edge/packages
proxy = False
proxy_dict =
proxy_password =
proxy_username =
repo_gpgcheck = False
retries = 10
skip_if_unavailable = False
ssl_check_cert_permissions = True
sslcacert =
sslclientcert =
sslclientkey =
sslverify = True
throttle = 0
timeout = 30.0
ui_id = docker-ce-edge/x86_64
ui_repoid_vars = releasever,
   basearch
username =
+ sudo -E sh -c 'yum makecache'
Loaded plugins: fastestmirror, langpacks
base                                                                        | 3.6 kB  00:00:00
docker-ce-edge                                                              | 2.9 kB  00:00:00
docker-ce-stable                                                            | 2.9 kB  00:00:00
extras                                                                      | 3.4 kB  00:00:00
updates                                                                     | 3.4 kB  00:00:00
(1/14): docker-ce-edge/x86_64/primary_db                                    |  15 kB  00:00:00
(2/14): base/7/x86_64/other_db                                              | 2.5 MB  00:00:00
(3/14): docker-ce-stable/x86_64/primary_db                                  |  12 kB  00:00:00
(4/14): docker-ce-edge/x86_64/filelists_db                                  | 8.5 kB  00:00:00
(5/14): base/7/x86_64/filelists_db                                          | 6.7 MB  00:00:00
(6/14): extras/7/x86_64/filelists_db                                        | 709 kB  00:00:00
(7/14): extras/7/x86_64/other_db                                            | 121 kB  00:00:00
(8/14): extras/7/x86_64/prestodelta                                         | 128 kB  00:00:00
(9/14): docker-ce-edge/x86_64/other_db                                      |  62 kB  00:00:00
(10/14): updates/7/x86_64/prestodelta                                       | 960 kB  00:00:00
(11/14): docker-ce-stable/x86_64/filelists_db                               | 7.3 kB  00:00:00
(12/14): updates/7/x86_64/other_db                                          | 734 kB  00:00:00
(13/14): updates/7/x86_64/filelists_db                                      | 4.2 MB  00:00:00
(14/14): docker-ce-stable/x86_64/other_db                                   |  66 kB  00:00:00

Loading mirror speeds from cached hostfile
 * base: data.nicehosting.co.kr
 * extras: data.nicehosting.co.kr
 * updates: data.nicehosting.co.kr
Metadata Cache Created
+ sudo -E sh -c 'yum install -y -q docker-ce'
No Presto metadata available for base
warning: /var/cache/yum/x86_64/7/docker-ce-edge/packages/docker-ce-18.03.0.ce-1.el7.centos.x86_64.r                                                                                                                                          pm: Header V4 RSA/SHA512 Signature, key ID 621e9f35: NOKEY
Public key for docker-ce-18.03.0.ce-1.el7.centos.x86_64.rpm is not installed
Importing GPG key 0x621E9F35:
 Userid     : "Docker Release (CE rpm) <docker@docker.com>"
 Fingerprint: 060a 61c5 1b55 8a7f 742b 77aa c52f eb6b 621e 9f35
 From       : https://download.docker.com/linux/centos/gpg
setsebool:  SELinux is disabled.
If you would like to use Docker as a non-root user, you should now consider
adding your user to the "docker" group with something like:
  sudo usermod -aG docker dockerCon
Remember that you will have to log out and back in for this to take effect!
WARNING: Adding a user to the "docker" group will grant the ability to run
         containers which can be used to obtain root privileges on the
         docker host.
         Refer to https://docs.docker.com/engine/security/security/#docker-daemon-attack-surface
         for more information.
[dockerCon@NRSON ~]$

 

 docker가 정상적으로 설치가 되면 다음 명령어로 실행 또는 중지 할수 있습니다.

   아래와 같이 docker-containerd 프로세스가 기동되는 것을 확인 할 수 있습니다.

docker 기동 : sudo service docker start

docker 종료 : sudo service docker stop

  

 docker 관련 업데이트는 아래와 같이 받을 수 있습니다.

sudo yum install docker

  

 docker 버전은 아래와 같이 확인 할 수 있습니다.

docker version

  

 

2. Docker hub 연동

- Docker는 2013년에 시작된 오픈소스 프로젝트로, 이미 콘테이너와 거의 동의어 취급을 받기에 이르고 리눅스 콘테이너와 똑같은 커널 원리로 만들어졌으며, 사용하기 편한 인터페이스와 중앙 공공 이미지 저장소의 운영을 통해 콘테이너 열풍을 부추기고 있습니다. 이 중앙 저장소를 도커 허브(Docker Hub)라고 부르며, 이것이 ‘쉬운 콘테이너 기술’인 도커의 핵심이라 할 수 있습니다.
- Docker hub에서는 자신만의 repository를 등록하고 배포하고 관리할 수 있습니다. 

Docker Hub https://hub.docker.com/

 

- 하단의 New to Docker 부분을 통해 손쉽게 Docker Hub에 가입할 수 있습니다. 

정말 간단하죠.?

  

 - 아래와 같이 입력한 E-Main로 인증메일이 날라오니 Confirm 하시면 최종 승인됩니다.

  

 - Docker hub 로그인 화면입니다.

  

 - 아래와 같이 Docker에 로그인이 완료 되었습니다. 

  

 

3. Docker 활용 가이드

자 이제 실제 Docker를 활용하는 방법에 대해 알아 보겠습니다.

간단히 지금까지 수행한 내용을 정리하자면,

- Linux에 Docker Install

- Docker Hub 가입 및 로그인

 

다양한 명령어들을 지금부터 테스트 해 볼텐데요 잘 따라 오세요.

먼저 Docker Hub에 올라가 있는 최신 버전의 Wildfly를 다운로드 받아 위에 생성한 Docker hub nara0617 계정에 repository를 생성하여 업로드 해보도록 하겠습니다.

1) Docker 로그인

Docker hub에서 다운로드 받기 위해 docker login을 수행합니다.

docker ID, PassWD는 Docker Hub 가입시 입력한 값을 넣어 주시면됩니다.

[dockerCon@NRSON ~]$ sudo docker login
Login with your Docker ID to push and pull images from Docker Hub. If you don't have a Docker ID, head over to https://hub.docker.com to create one.
Username (nara0617): nara0617
Password:
Login Succeeded
[dockerCon@NRSON ~]$

 

2) Wildfly Package 조회

Wildfly 다운로드를 받기 위해 아래와 같이 package를 조회해 봅니다.

아래와 같이 다양한 docker repository가 있는데요 그중 최상단의 jboss/wildfly를 다운로드 받아 보도록 하겠습니다.

하단의 내용은 Docker Hub에서 조회한 내용과 동일함을 알려 드립니다.

- docker search result

[dockerCon@NRSON ~]$ sudo docker search wildfly
NAME                               DESCRIPTION                                     STARS               OFFICIAL            AUTOMATED
jboss/wildfly                      WildFly application server image                388                                     [OK]
apiman/on-wildfly10                The full apiman quickstart running on WildFl…   8                                       [OK]
openshift/wildfly-8-centos         DEPRECATED - see openshift/wildfly-81-centos7   6                                       [OK]
piegsaj/wildfly                    WildFly 10.0.0.Final on Java 8                  6                                       [OK]
wildflyext/wildfly-camel           WildFly with Camel Subsystem                    5
frekele/wildfly                    docker run --rm --name wildfly -p 8080:8080 …   4                                       [OK]
aerogear/unifiedpush-wildfly                                                       4                                       [OK]
openshift/wildfly-101-centos7      A Centos7 based WildFly v10.1 image for use …   3
bitnami/wildfly                    Bitnami WildFly Docker Image                    2                                       [OK]
jboss/keycloak-adapter-wildfly                                                     2                                       [OK]
openshift/wildfly-110-centos7      A Centos7 based WildFly v11.0 image for use …   1
ceagan/wildfly                     JBoss Wildfly with XMLStarlet                   1                                       [OK]
openshift/wildfly-100-centos7      A Centos7 based WildFly v10.0 image for use …   1
rafabene/wildfly-ticketmonster                                                     1                                       [OK]
bangnab/wildfly-oraclejdk          Like jboss/wildfly but with Oracle JDK inste…   1                                       [OK]
caltha/wildfly                     Self contained WildFly application server       0                                       [OK]
dthuilot/wildfly-admin             wildfly with admin console enabled.             0                                       [OK]
splatform/wildfly-resource                                                         0
cfje/wildfly-resource                                                              0
fksaito/wildfly                    Modificações em imagens wildfly para expor p…   0
openshift/wildfly-90-centos7       A Centos7 based WildFly v9.0 image for use w…   0
devcomb/keycloak-adapter-wildfly   Similar to 'jboss/keycloak-adapter-wildfly' …   0
openshift/wildfly-81-centos7       A Centos7 based WildFly v8.1 image for use w…   0
parunruaivo/wildfly-deployer       jdk8 maven wildfly                              0
surveysampling/wildfly-base        base wildfly image                              0
[dockerCon@NRSON ~]$

  

 - docker hub에서 조회한 result

  

 3) Docker hub에서 wildfly 다운로드

아래와 같이 손쉽게 docker hub에서 다운로드 받을 수 있습니다.

여기서 유의할 점은

sudo docker pull jboss/wildfly:[tag]

위 tag 부분입니다.

Docker hub에는 repository 하위 구조로 tag를 생성할 수 있습니다. 먼저 설명전에 jboss/wildfly의 tag를 살펴 보겠습니다.

Repository의 jboss/wildfly를 클릭하면 아래 화면으로 이동합니다.

  

 - 상단의 Tags를 클릭하면 아래와 같이 해당 repository에 verison 별 업데이트를 수행할 수 있습니다.

Tag는 위와 같이 해당 repository에 버전 관리 또는 패치 이력을 확인 할 수 있는 역할을 수행합니다.

자 그럼 실제 docker hub에서 해당 파일을 다운로드 해보겠습니다.

저희가 받은 버전은 wildfly12.0.0.Final 버전이며 아래와 같이 받을수 있습니다.

위에 적어 두었지만 다시한번 말씀드리자면,

sudo docker pull jboss/wildfly:[tag]

위와 같이 tag 부분에 해당 repository의 tag 명을 적어주면 다운받을 수 있습니다.

사진이 잘려서 아래쪽에 보면... 12.0.0.Final 있어요 ㅎㅎ 직접 들어가서 확인해 보시는 것도 도움이 되겠네요.

[dockerCon@NRSON ~]$ sudo docker pull jboss/wildfly:12.0.0.Final
12.0.0.Final: Pulling from jboss/wildfly
Digest: sha256:f3cf633d47453b879fad95d6fdfe88335036a224808df8704c1c733fb995c2c9
Status: Image is up to date for jboss/wildfly:12.0.0.Final
[dockerCon@NRSON ~]$

 

4) 개인 계정에 repository 생성

자 그럼 이제 다운로드 받은 wildfly12.0.0.Final을 개인 계정으로 옮기기 위해 repository를 생성하도록 하겠습니다.

방법은 매우 간단합니다.

sudo docker tag jboss(다운받은 계정명)/wildfly(다운받은 계정의 repository):12.0.0.Final(다운받은 Tag) nara0617(본인 계정)/wildfly(본인 계정의 repository):12.0.0.Final(본인 계정의 Tag 명칭)

형식입니다.

[dockerCon@NRSON ~]$ sudo docker tag jboss/wildfly:12.0.0.Final nara0617/wildfly:12.0.0.Final
[dockerCon@NRSON ~]$  

 

5) 개인 계정 repository에 업로드

자 그럼 저의 최초 tag 및 upload 과정입니다.

sudo docker push nara0617(본인 계정)/wildfly(본인 계정의 repository):12.0.0.Final(본인 계정의 Tag 명칭)

형식입니다.

[dockerCon@NRSON ~]$ sudo docker push nara0617/wildfly:12.0.0.Final
The push refers to repository [docker.io/nara0617/wildfly]
edb20a08b656: Pushing [>                                                  ]  3.319MB/200MB
7947a0b3572f: Pushing [==>                                                ]  11.57MB/203.2MB
83203b7fd655: Pushing [==================================================>]  308.7kB
a338cab01449: Pushing [================>                                  ]   9.46MB/28.55MB
b03095563b79: Pushing [=>                                                 ]  6.488MB/195.4MB 

 

위와 같이 수행되다 정상 완료되면,  

 

[dockerCon@NRSON ~]$ sudo docker push nara0617/wildfly:12.0.0.Final
The push refers to repository [docker.io/nara0617/wildfly]
edb20a08b656: Pushed
7947a0b3572f: Pushed
83203b7fd655: Pushed
a338cab01449: Pushed
b03095563b79: Pushed
12.0.0.Final: digest: sha256:f3cf633d47453b879fad95d6fdfe88335036a224808df8704c1c733fb995c2c9 size: 1373
[dockerCon@NRSON ~]$

이런 형식으로 종료가 되죠.

자 업로드가 완료 되었으니 직접 본인의 Docker Hub에 가서 확인해 보겠습니다. 

 

6) Docker hub 확인

DashBoard를 보면 다음과 같이 repository wildfly가 생성된 것을 볼 수 있습니다.

  

 위에서 살펴보았던 것처럼 Tags로 이동하면, 방금전 업로드 했던 12.0.0.Final 버전이 업로드 된것을 볼수 있네요. 굿!

 

이제 제 nara0617/wildfly는 누구나 다운로드 받을 수 있는 버전이 되었습니다.

참고로 repository 관리 화면을 확인하고 오늘 포스팅은 마치도록 하겠습니다.

docker repository에 들어가면 Tags 옆에 Settings 라는 탭이 있습니다.

해당 탭을 눌러 보면 다음과 같은 화면이 출력됩니다.

Make this Repository Private 항목은 해당 repository를 Owner와 organization에 포함된 멤버에게만 공개하는 방식입니다.

Delete Repositry는 말 그대로 그냥 해당 Repository를 지우겠다는 의미입니다.

 

자 다음시간에는 Docker Hub Repository에 업데이트 된 wildfly를 다시 다운받아 패치 반영하는 방법을 알아 보도록 하겠습니다.

감사합니다.


728x90
반응형