Docker hub 에 가입하고 로그인
도커 허브 Url은 다음과 같다. 일반적인 사이트 회원가입처럼 회원가입을 진행하고 로그인을 한다.
https://hub.docker.com/
계정을 생성하고 로그인을 하면 초기화면으로 진입한다.
새로운 Repository를 생성해본다 상단 Repositories 메뉴를 선택하고 Create Repository를 선택한다. 본인 계정 밑에 Repository 이름을 입력하고 Public/Private 유무를 체크한다.
우측에는 tip으로 tag 생성 방법 및 push로 로컬에 저장된 이미지를 허브로 올리는 방법이 명시되어 있다.
Test application 도커 빌드 및 허브에 올리기
java8위에 올라가는 간단한 war파일을 이미지로 빌드해본다. docker search 명령으로 java8 이미지들을 검색해본다.
아래 제일 먼저 리스트에 나온 williamyeh/java8을 선정해본다.
docker.io/williamyeh/java8:latest
root@worker1:~# docker search java8
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
williamyeh/java8 Oracle Java 8 image for Docker 10 [OK]
fiadliel/java8-jre Java 8 JRE image, based off Alpine Linux, in… 6 [OK]
mykro/java8-jre An Oracle Java JRE base to install Java apps… 4 [OK]
ksimple/java8-mvn-nodejs-npm-python3 java8-mvn-nodejs-npm-python3 3 [OK]
...
docker pull 명령으로 이미지를 로컬에 다운로드 받는다.
root@worker1:~# docker pull williamyeh/java8
Using default tag: latest
latest: Pulling from williamyeh/java8
f2b6b4884fc8: Pull complete
c6c308a14d13: Pull complete
Digest: sha256:174d528516a0eae5c4df69966eeb5e51d7c0dc1a532249af61013953eab1d9f3
Status: Downloaded newer image for williamyeh/java8:latest
docker.io/williamyeh/java8:latest
정상적으로 받아졌는지 docker images로 확인한다.
root@worker1:~# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
k8s.gcr.io/kube-proxy v1.23.1 b46c42588d51 3 weeks ago 112MB
calico/node v3.21.2 f1bca4d4ced2 4 weeks ago 214MB
calico/pod2daemon-flexvol v3.21.2 7778dd57e506 4 weeks ago 21.3MB
calico/cni v3.21.2 4c5c32530391 4 weeks ago 239MB
k8s.gcr.io/pause 3.6 6270bb605e12 4 months ago 683kB
williamyeh/java8 latest 00bc163fa009 3 years ago 593MB
이미지에 포함할 test.war 파일이 있는 곳으로 이동해서 docker build를 위한 dockerfile을 생성한다. 기본적으로 Dockerfile 이름으로 생성하면 디폴트로 해당 파일을 읽는다. 만일 다른 이름의 도커 파일을 생성하고 싶다면 docker build시에 -f로 도커파일명을 명시적으로 설정해준다.
root@worker1:~/docker_test# ls -la
total 296700
drwxr-xr-x 2 root root 4096 1월 7 10:30 .
drwx------ 5 root root 4096 1월 7 10:33 ..
-rw-r--r-- 1 ubuntu ubuntu 303807335 1월 7 10:27 test.war
root@worker1:~/docker_test# vim Dockerfile
FROM williamyeh/java8
COPY *.war app.war
ENTRYPOINT ["java", "-jar", "app.war"]
위와 같이 설정된 도커파일을 가지고 도커 이미지를 빌드한다. -t로 이미지명:tag명 을 설정해준다.
root@worker1:~/docker_test# docker build -t kindlove/test:1.0 .
Sending build context to Docker daemon 303.8MB
Step 1/3 : FROM williamyeh/java8
---> 00bc163fa009
Step 2/3 : COPY *.war app.war
---> f14236bab77b
Step 3/3 : ENTRYPOINT ["java", "-jar", "app.war"]
---> Running in 55576a53125b
Removing intermediate container 55576a53125b
---> 56205a2a3df8
Successfully built 56205a2a3df8
Successfully tagged kindlove/test:1.0
docker images로 정상적으로 생성되어 있는지 확인한다.
root@worker1:~/docker_test# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
kindlove/test 1.0 56205a2a3df8 9 seconds ago 897MB
k8s.gcr.io/kube-proxy v1.23.1 b46c42588d51 3 weeks ago 112MB
calico/node v3.21.2 f1bca4d4ced2 4 weeks ago 214MB
calico/pod2daemon-flexvol v3.21.2 7778dd57e506 4 weeks ago 21.3MB
calico/cni v3.21.2 4c5c32530391 4 weeks ago 239MB
k8s.gcr.io/pause 3.6 6270bb605e12 4 months ago 683kB
williamyeh/java8 latest 00bc163fa009 3 years ago 593MB
도커 이미지 허브에 Push 하기
도커에 로그인 한다.
root@worker1:~/docker_test# 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: kindlove
Password:
WARNING! Your password will be stored unencrypted in /root/.docker/config.json.
Configure a credential helper to remove this warning. See
https://docs.docker.com/engine/reference/commandline/login/#credentials-store
Login Succeeded
앞서 생성한 이미지를 push 한다. push시에 tag명은 실제 repository 명 (kindlove/test)와 같아야 한다.
root@worker1:~/docker_test# docker push kindlove/test:1.0
The push refers to repository [docker.io/kindlove/test]
cb8282ae10f3: Pushed
0da402cf5915: Mounted from williamyeh/java8
8fad67424c4e: Mounted from williamyeh/java8
1.0: digest: sha256:34c1d5624afbeb112316194317b17e33cea954ea6f2011f45d361129053fec70 size: 955
도커를 실제 repository 명과 맞추지 않고 test 이름으로 빌드해본다.
root@worker1:~/docker_test# docker build -t test:1.0 .
Sending build context to Docker daemon 303.8MB
Step 1/3 : FROM williamyeh/java8
---> 00bc163fa009
Step 2/3 : COPY *.war app.war
---> 7a3a7180081c
Step 3/3 : ENTRYPOINT ["java", "-jar", "app.war"]
---> Running in 288ef8bf12ec
Removing intermediate container 288ef8bf12ec
---> 29317dcfa366
Successfully built 29317dcfa366
Successfully tagged test:1.0
root@worker1:~/docker_test# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
test 1.0 29317dcfa366 7 seconds ago 897MB
k8s.gcr.io/kube-proxy v1.23.1 b46c42588d51 3 weeks ago 112MB
calico/node v3.21.2 f1bca4d4ced2 4 weeks ago 214MB
calico/pod2daemon-flexvol v3.21.2 7778dd57e506 4 weeks ago 21.3MB
calico/cni v3.21.2 4c5c32530391 4 weeks ago 239MB
k8s.gcr.io/pause 3.6 6270bb605e12 4 months ago 683kB
williamyeh/java8 latest 00bc163fa009 3 years ago 593MB
위 이미지 명으로 push를 해보면 실제 repository가 존재하지 않으므로 access denied 에러가 발생하는것을 볼 수 있다.
root@worker1:~/docker_test# docker push test:1.0
The push refers to repository [docker.io/library/test]
cb8282ae10f3: Preparing
0da402cf5915: Preparing
8fad67424c4e: Preparing
denied: requested access to the resource is denied
이럴경우 이미지에서 tag를 재생성해서 실제 repository로 push 할 수 있다. tag를 재 생성 하되 kindlove/test 로 실제 repository path로 설정해 준다.
root@worker1:~/docker_test# docker tag test:1.0 kindlove/test:1.1
root@worker1:~/docker_test# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
kindlove/test 1.1 29317dcfa366 5 minutes ago 897MB
test 1.0 29317dcfa366 5 minutes ago 897MB
k8s.gcr.io/kube-proxy v1.23.1 b46c42588d51 3 weeks ago 112MB
calico/node v3.21.2 f1bca4d4ced2 4 weeks ago 214MB
calico/pod2daemon-flexvol v3.21.2 7778dd57e506 4 weeks ago 21.3MB
calico/cni v3.21.2 4c5c32530391 4 weeks ago 239MB
k8s.gcr.io/pause 3.6 6270bb605e12 4 months ago 683kB
williamyeh/java8 latest 00bc163fa009 3 years ago 593MB
정상적으로 push가 됨을 확인할 수 있다.
root@worker1:~/docker_test# docker push kindlove/test:1.1
The push refers to repository [docker.io/kindlove/test]
cb8282ae10f3: Pushed
0da402cf5915: Pushed
8fad67424c4e: Pushed
1.1: digest: sha256:1f563b177ba3cdcb711cd9556053ec210ac1a6ac91f27e1a2e87a1c89c1eb468 size: 955
-- The End --
'Devops > Docker' 카테고리의 다른 글
[Docker] windows wsl 2 설치하기 (1) | 2022.10.31 |
---|---|
[Docker] Oracle DB 설치하기 (Oracle 12c) (1) | 2022.10.27 |
[Docker] Ubuntu에 Docker 설치하기 (0) | 2022.01.12 |
[Docker] Docker 명령어 정리 #2 (0) | 2021.12.30 |
[Docker] Docker 명령어 정리 #1 (0) | 2021.12.30 |