반응형

 

 

 

Docker에서 기본 인증 사용하기

도커 레지스트리에는 로그인 기능이 없기 때문에 Nginx의 기본인증 기능을 사용해야하며, HTTP 프로토콜에는 인증을 지원하지 않습니다. 따라서 HTTPS 프로토콜을 사용해야합니다.

 

 

 

/etc/hosts 파일 수정

# vi /etc/hosts 127.0.0.1 localhost 127.0.1.1 master 192.168.0.201 registry.example.com # The following lines are desirable for IPv6 capable hosts ::1 ip6-localhost ip6-loopback fe00::0 ip6-localnet ff00::0 ip6-mcastprefix ff02::1 ip6-allnodes ff02::2 ip6-allrouters

 

 

 

 

사설 SSL 인증서 생성 및 설정

# openssl genrsa -out server.key 2048 Generating RSA private key, 2048 bit long modulus (2 primes) .......................................+++++ ..................................+++++ e is 65537 (0x010001)

 

 

사설 SSL 인증서 키 파일 설정

# openssl req -new -key server.key -out server.csr Can't load /root/.rnd into RNG 139832043372992:error:2406F079:random number generator:RAND_load_file:Cannot open file:../crypto/rand/randfile.c:88:Filename=/root/.rnd You are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter '.', the field will be left blank. ----- Country Name (2 letter code) [AU]:KO State or Province Name (full name) [Some-State]: Locality Name (eg, city) []:Seoul Organization Name (eg, company) [Internet Widgits Pty Ltd]:Company Organizational Unit Name (eg, section) []:Company Common Name (e.g. server FQDN or YOUR name) []:registry.example.com Email Address []:jinsu@example.com Please enter the following 'extra' attributes to be sent with your certificate request A challenge password []: An optional company name []:
  • Country Name : 국가 코드이며, 대문자 KO를 입력합니다.
  • State or Province Name : 주 또는 도입니다. 상황에 맞게 입력
  • Locality Name : 도시입니다. 상황에 맞게 입력
  • Organization Name : 회사이름 입력
  • Organizational Unit Name : 회사 조직 이름 입력
  • Common Name : Docker 레지스트리를 실행하는 서버의 도메인 주소 /etc/hosts 파일에 설정한대로 입력
  • Email Address : 이메일 주소 입력

 

 

 

서버 인증서 파일을 생성하고 시스템에 설치

# openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt Signature ok subject=C = KO, ST = Some-State, L = Seoul, O = Company, OU = Company, CN = registry.example.com, emailAddress = jinsu@example.com Getting Private key # ls total 68 -rw-r--r-- 1 root root 1350 Oct 30 07:23 server.crt -rw-r--r-- 1 root root 1070 Oct 30 07:23 server.csr -rw------- 1 root root 1675 Oct 30 07:05 server.key # cp server.crt /usr/share/ca-certificates/ # echo "server.crt" | tee -a /etc/ca-certificates.conf server.crt # update-ca-certificates Updating certificates in /etc/ssl/certs... rehash: warning: skipping ca-certificates.crt,it does not contain exactly one certificate or CRL 1 added, 0 removed; done. Running hooks in /etc/ca-certificates/update.d... done. # service docker restart

 

 

 

 

이어서...

반응형
반응형

 

Docker 컨테이너 레지스트리를 S3와 연결하여 이미지를 올리는 방법

 

 

 

 

AWS S3 버킷 생성

 

 

 

위에 본인 계정을 눌러서 보안 자격증명 선택

 

 

 

액세스 키를 생성하고 액세스 키 ID, 보안 액세스 키 정보를 저장하세요

 

 

 

 

 

이미지 공유하는 서버

# docker pull registry:latest # docker run -d -p 5000:5000 --name S3-registry \ > -e SETTINGS_FAVOR=s3 \ > -e AWS_BUCKET=myjinsubucket \ > -e STORAGE_PATH=/registry \ > -e AWS_KEY=AKIAXTQDBB4IWDCCQ7G71 \ > -e AWS_SECRET=jB+PT5NNL38XRR7mw+I1KnGm0+sr+GEl99waCxJy1 \ > registry ef05e0f6c4f5dd66e05557de5e5efd4ac95dc11914abeaf51baca2642d42cc76 # docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES ef05e0f6c4f5 registry "/entrypoint.sh /etc…" 9 minutes ago Up 9 minutes 0.0.0.0:5000->5000/tcp, :::5000->5000/tcp S3-registry
  • Docker 레지스트리 이미지를 받습니다.
  • registry:latest 이미지를 컨테이너로 실행합니다.
  • AWS S3 저장소 설정 
  • > SETTINGS_FLAVOR : 이미지 저장 방법입니다. S3를 설정합니다.
  • > AWS_BUCKET : 이미지 데이터를 저장할 S3 버킷 이름입니다.
  • > STORAGE_PATH : 이미지 데이터 저장할 경로입니다.
  • > AWS_KEY : AWS 액세스 키를 설정합니다.
  • > AWS_SECRET : AWS 시크릿 키를 설정합니다.

 

 

 

 

 

 

 

반응형
반응형

 

Docker 개인 저장소 구축하기

 

보통은 알려진 CA에서 발급한 TLS 인증서를 사용하여 레지스트리를 보호하는 것이 매우 권장되지만, 자체 서명된 인증서를 사용하거나 암호화되지 않은 HTTP 연결을 통해 레지스트리를 사용하도록 선택할 수 있습니다. 만약 인터넷이 안되거나 그냥 개인이 따로 저장하겠다고하면 HTTP 연결을 통해 개인 저장소를 구축할 수 있습니다.

 

Docker 명령은 기본적으로 Docker Hub를 사용합니다. 

Docker 저장소 서버는 Docker registry 서버라고 부릅니다.

# docker push 명령으로 레지스트리 서버에 이미지를 올리고,

# docker pull 명령으로 이미지를 받을 수 있습니다.

 

 

 

insecure-registry 설정

# vi /etc/docker/daemon.json { ​​"insecure-registries" : ["192.168.0:201:5000"] } # systemctl restart docker
  • daemon.json 생성 및 해당 내용 저장
  • docker restart

 

 

 

개인 저장소가 잘 구축 되었는지 ubuntu 서버 2개로 테스트 해봤습니다.

 

 

개인저장소 구축한 서버

# docker run -d -p 5000:5000 --name hello-registry \ > -v /tmp/registry:/tmp/registry \ > registry 2976da0da8d746a1ba60f88930dd46bff8143795c516dd9653fcf1a6942432e5 # # docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 2976da0da8d7 registry "/entrypoint.sh /etc…" 3 seconds ago Up 2 seconds 0.0.0.0:5000->5000/tcp, :::5000->5000/tcp hello-registry
  • 이미지 파일은 호스트의 /tmp/registry 디렉터리에 저장됩니다.

 

 

 

이미지 tag, push 설정하기

# docker build --tag hello:0.1 . # docker images REPOSITORY TAG IMAGE ID CREATED SIZE hello 0.1 75f0625417ad 36 seconds ago 232MB # docker tag hello:0.1 localhost:5000/hello:0.1 # docker images REPOSITORY TAG IMAGE ID CREATED SIZE hello 0.1 75f0625417ad About a minute ago 232MB localhost:5000/hello 0.1 75f0625417ad About a minute ago 232MB # docker push localhost:5000/hello:0.1 The push refers to repository [localhost:5000/hello] 2d1630f34efb: Pushed 0492b535da40: Pushed 1db69eba3ab3: Pushed b9b64cd744c9: Pushed 83109fa660b2: Pushed 30d3c4334a23: Pushed f2fa9f4cf8fd: Pushed 0.1: digest: sha256:6b8296113e568e6184eb893fd02f006034c26b0778c86922cd65554f0f379106 size: 1782
  • 가지고있는 Dockerfile을 build 하여 name : hello | tag : 0.1로 image 생성
  • tag 생성 : docker tag <이미지이름>:<tag> <registry URL>/<이미지 이름>:<tag>
  • push 명령 : docker push <registry URL>/<이미지 이름>:<tag>

 

 

 

개인저장소에 있는 이미지를 Pull 받을 서버

# docker pull 192.168.0.201:5000/hello:0.1 Error response from daemon: Get "https://192.168.0.201:5000/v2/": http: server gave HTTP response to HTTPS client
  • pull 명령으로 개인저장소 서버에서 이미지를 받아오는데 오류 로그 발생
  • 해결방법 : insecure-registries 설정 필요

 

 

# vi /etc/docker/daemon.json { ​​​​​​​​​​"insecure-registries" : ["192.168.0.201:5000"] } # docker pull 192.168.0.201:5000/hello:0.1 0.1: Pulling from hello 2e6e20c8e2e6: Pull complete 0551a797c01d: Pull complete 512123a864da: Pull complete 0cde67eab025: Pull complete 119857f951bc: Pull complete 41786f85cd57: Pull complete 56705ad25a7d: Pull complete Digest: sha256:6b8296113e568e6184eb893fd02f006034c26b0778c86922cd65554f0f379106 Status: Downloaded newer image for 192.168.0.201:5000/hello:0.1 192.168.0.201:5000/hello:0.1 # docker images REPOSITORY TAG IMAGE ID CREATED SIZE 192.168.0.201:5000/hello 0.1 75f0625417ad 14 minutes ago 232MB
  • insecure-registries 설정 후 pull 했을때 이미지 받아오기 완료

 

 

 

참고링크 : https://docs.docker.com/registry/insecure/

 

 

 

 

 

 

 

 

반응형
반응형

 

 

도커 명령어를 입력하려면 관리자 계정이 아니고는 sudo를 항상 입력해줘야하지만 해당 명령어를 이용하여 일반 사용자에서도 명령어 입력이 가능하게 설정하는 방법입니다.

$ sudo usermod -aG docker ${USER} $ sudo service docker restart

현재 계정에서 로그아웃 한 뒤 다시 로그인합니다.

 

 

 

 

 

반응형
반응형

 

Error response from daemon 해결 방법

 

Ubuntu 서버에서 처음으로 Docker login을 하게되면 아래와 같은 에러가 발생하는 경우가 있다.

Error response from daemon: Get https://registry-1.docker.io/v2/: unauthorized: incorrect username or password

 

 

 

구글의 DNS 주소를 /etc/resolv.conf 에 추가해주세요.

# vi /etc/resolv.conf nameserver 8.8.8.8 naveserver 8.8.4.4

 

 

설정이 완료되었다면, Docker 데몬을 restart 해주세요.

# systemctl daemon-reload # systemctl restart docker

 

 

 

또한 login 계정에 @뒤에 이메일주소가 들어가있는지 확인해보세요.

# 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: djwlstn12345 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

 

만약 위 방법으로 안된다면 docker logout 후 다시 login 해보시길 바랍니다.

# docker logout

 

 

 

 

 

 

감사합니다.

 

 

반응형
반응형

 

 

Docker

Ubuntu 환경에서 Docker 명령어 사용하기


Ubuntu 20.04.4 LTS 환경으로 테스트 진행

 

 

 

 

 

Dockerfile을 생성하여 파일을 docker build 하려고 할 때 아래와 같은 에러가 발생합니다.

원인을 몰라 한참 찾아봤었는데 처음에는 뭐가 문제인지 잘몰랐었는데 Dockerfile을 만들어서

build 해줄 때 filename을 Dockerfile 이라고 만들어줘야 하는 거였다.

 

Dockerfile을 만들때에는 디렉토리를 새로만들고 해당 디렉토리로 들어가서 build 해줘야한다.

 

나는 바보인가보다 ㅠ

 

unable to prepare context: unable to evaluate symlinks in Dockerfile path:

 

 

$ sudo docker build -t kubers:1 . unable to prepare context: unable to evaluate symlinks in Dockerfile path: lstat /home/djwlstn123/k8s/Dockerfile: no such file or directory EX) $ sudo docker build -t kuard-amd64:1 . Sending build context to Docker daemon 2.048kB Step 1/3 : FROM alpine

 

 

반응형
반응형

 

 

 

 

 

Docker

Ubuntu 환경에서 Docker 컨테이너간 통신 설정하기


 

Ubuntu 20.04.4 LTS 환경으로 테스트 진행

 

 

 

 

 

 

Docker 컨테이너간 연결하기

nginx 컨테이너와 DB 컨테이너를 생성하여 컨테이너 연결하기

mongo db 이미지를 다운받아 컨테이너 동작시키기 $ sudo docker run --name db -d mongo Unable to find image 'mongo:latest' locally latest: Pulling from library/mongo d5fd17ec1767: Pull complete a3d1e6b0e1ff: Pull complete 015ccc3eeca8: Pull complete 0129deec1aaf: Pull complete 3b9522656704: Pull complete 42557cfd554b: Pull complete 99e708669a41: Pull complete 0e35f8644443: Pull complete e25527cd13cc: Pull complete Digest: sha256:d8f48972427a3d62bbb7e953bd5afb609ab6e9b69f347c01c7cfda133cf15b9c Status: Downloaded newer image for mongo:latest 0ebf237f91f049d751e476fe149af216da534ff8f217c1cd85e9c737816d599e $ 동작중인 컨테이너 확인 $ sudo docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 0ebf237f91f0 mongo "docker-entrypoint.s…" 19 minutes ago Up 19 minutes 27017/tcp db jinsu-nginx $
  • docker run 명령은 호스트서버에 이미지를 가지고 있지 않으면 자동으로 이미지를 받아옵니다.
  • docker run -d 옵션은 백그라운드에서 컨테이너 실행하는 명령입니다.

 

 

web서버 nginx 이미지를 다운받아 컨테이너 동작시키고 컨테이너간 연결 설정 $ sudo docker run --name web -d -p 80:80 --link db:db nginx Unable to find image 'nginx:latest' locally latest: Pulling from library/nginx 42c077c10790: Pull complete 62c70f376f6a: Pull complete 915cc9bd79c2: Pull complete 75a963e94de0: Pull complete 7b1fab684d70: Pull complete db24d06d5af4: Pull complete Digest: sha256:2bcabc23b45489fb0885d69a06ba1d648aeda973fae7bb981bafbb884165e514 Status: Downloaded newer image for nginx:latest 4bbda3ace123d448f92fa860433b75b5aad49fbadf78979859ba1eab5f654b6d $ 동작중인 컨테이너 확인 $ sudo docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 4bbda3ace123 nginx "/docker-entrypoint.…" 4 minutes ago Up 4 minutes 0.0.0.0:80->80/tcp, :::80->80/tcp web 0ebf237f91f0 mongo "docker-entrypoint.s…" 21 minutes ago Up 18 seconds 27017/tcp db $
  • docker run --link 옵션은 컨테이너에서 다른 컨테이너로 접근할 떄 별명으로 접근하도록 설정하는 옵션입니다.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

반응형
반응형

 

 

 

 

 

Docker

registry pull 에러해결  "Error response from daemon"


 

Ubuntu 20.04.4 LTS 환경으로 테스트 진행

 

 

 

 

 

 

Docker 개인 저장소 registry에서 이미지를 pull 하여 받는 중 아래와 같은 에러 로그가 발생하였습니다.

$ sudo docker pull 192.168.0.210:5000/nginxtest:0.1 Error response from daemon: Get "https://192.168.0.210:5000/v2/": http: server gave HTTP response to HTTPS client $

 

 

해당 에러 로그가 발생하는 사유는 Docker 구성파일 데몬에 insecure-registries 부분이 등록이 안되어 있으면 에러가 발생합니다.

 

 

해결방법

Docker 구성 파일을 사용하여 설정

vi 편집기를 이용하여 daemon.json을 설정 (파일이 없다면 생성) $ sudo vi /etc/docker/daemon.json 사용하는 URL 및 IP를 등록하여 저장 $ cat /etc/docker/daemon.json { ​​​​​​​​"insecure-registries": ["192.168.0.210:5000"] } $ daemon.json 저장 후 docker 데몬 재시작 $ sudo systemctl restart docker 문제없이 잘 받아오는 것을 확인 $ sudo docker pull 192.168.0.210:5000/nginxtest:0.1 0.1: Pulling from nginxtest Digest: sha256:6d2ee764d8d6ce21b62c9cab92e28555c69b1a7028db7cf170b269ff97f901c1 Status: Downloaded newer image for 192.168.0.210:5000/nginxtest:0.1 192.168.0.210:5000/nginxtest:0.1 $

 

 

 

 

 

 

 

 

 

반응형
반응형

 

 

 

Docker

Ubuntu 환경에서 Docker insecure-registry 구성 및 설정


 

Ubuntu 20.04.4 LTS 환경으로 테스트 진행

 

 

 

 

 

 

 

Docker 개인 저장소 구축하기

Docker 명령은 기본적으로 Docker Hub를 사용됩니다.

개인 저장소 서버는 Docker registry 서버라고 부릅니다. Docker push, pull 명령으로 저장소 서버에 이미지를 올리고, 받을 수 있습니다.

이제 Docker 개인 저장소를 구축하겠습니다.

현재 동작중인 docker 데몬 상태 $ systemctl status docker ● docker.service - Docker Application Container Engine ​​​​​Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled) ​​​​​Active: active (running) since Sun 2022-06-05 03:41:17 UTC; 1h 58min ago TriggeredBy: ● docker.socket ​​​​​​​Docs: https://docs.docker.com ​​​Main PID: 969 (dockerd) ​​​​​​Tasks: 9 ​​​​​Memory: 111.4M ​​​​​CGroup: /system.slice/docker.service ​​​​​​​​​​​​​└─969 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock 동작중인 Docker 데몬을 stop 시키기 $ sudo systemctl stop docker Warning: Stopping docker.service, but it can still be activated by: ​​docker.socket $ 동작중인 docker 데몬을 stop 시킨 상태 $ systemctl status docker ● docker.service - Docker Application Container Engine ​​​​​Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled) ​​​​​Active: inactive (dead) since Sun 2022-06-05 05:47:23 UTC; 3s ago TriggeredBy: ● docker.socket ​​​​​​​Docs: https://docs.docker.com ​​​​Process: 4671 ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock (code=exited,> ​​​Main PID: 4671 (code=exited, status=0/SUCCESS)

 

 

docker insecure-registry 수정하기

Docker 데몬을 멈춘상태에서 /etc/init.d/docker 파일을 수정해주어야합니다.

'DOCKER_OPTS=' 부분 뒤에 내용을 추가해주세요,

$ cat /etc/init.d/docker DOCKER_OPTS=--insecure-registry localhost:5000 수정이 완료된 상태에서 docker 데몬을 재시작해주세요. $ sudo systemctl docker restart 동작중인 상태 확인 $ systemctl status docker ● docker.service - Docker Application Container Engine ​​​​​Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled) ​​​​​Active: active (running) since Sun 2022-06-05 05:53:21 UTC; 5s ago TriggeredBy: ● docker.socket ​​​​​​​Docs: https://docs.docker.com ​​​Main PID: 5170 (dockerd) ​​​​​​Tasks: 10 ​​​​​Memory: 32.5M ​​​​​CGroup: /system.slice/docker.service ​​​​​​​​​​​​​└─5170 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock

 

 

Docker registry 이미지 설정

Docker Hub를 통해 Docker registry 이미지를 받습니다.

Docker registry 이미지 받기 $ sudo docker pull registry:latest latest: Pulling from library/registry Digest: sha256:bedef0f1d248508fe0a16d2cacea1d2e68e899b2220e2258f1b604e1f327d475 Status: Image is up to date for registry:latest docker.io/library/registry:latest $ Docker 이미지 확인 $ sudo docker images REPOSITORY TAG IMAGE ID CREATED SIZE registry latest 773dbf02e42e 9 days ago 24.1MB $ docker registry 이미지를 컨테이너로 생성 $ sudo docker run -d -p 5000:5000 --name jinsu-registry \ > -v /tmp/registry:/tmp/registry \ > registry 8d4a67d87d99a9dd4aab1d0c513c58b21c560da939fa4960ee98fbc4a3692841 $ 생성된 컨테이너 동작 상태 확인 $ sudo docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 8d4a67d87d99 registry "/entrypoint.sh /etc…" 2 minutes ago Up 2 minutes 0.0.0.0:5000->5000/tcp, :::5000->5000/tcp jinsu-registry $
  • docker run -p 옵션을 통해 5000:5000 포트로 호스트서버 5000 포트와 컨테이너 5000 포트를 연결해줍니다.
  • docker run -v 옵션을 통해 호스트서버 /tmp/registry 디렉토리와 컨테이너 /tmp/registry 디렉토리를 공유 시켜줍니다.

 

 

Docker 개인 저장소에 이미지 올리기

tag 명령을 통해 앞서 만든 이미지를 태그로 생성해주고

push 명령을 통해 개인 저장소로 올려줍니다.

Docker registry 컨테이너가 동작중인지 확인 $sudo docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 61edbce54f41 nginxtest:0.1 "nginx" 2 days ago Exited (0) 2 days ago jinsu-nginx $ 현재 가지고 있는 이미지 확인 $ sudo docker images REPOSITORY TAG IMAGE ID CREATED SIZE nginxtest 0.3 df69b2bb7f48 2 days ago 232MB nginxtest 0.2 45fe3bfa31b6 2 days ago 232MB nginxtest 0.1 740379f9b11b 2 days ago 232MB registry latest 773dbf02e42e 9 days ago 24.1MB ubuntu 14.04 13b66b487594 14 months ago 197MB $ Dodcker tag 생성하기 $ sudo docker tag [이미지 이름]:[TAG] [Docker registry URL]:[TAG] EX) $ sudo docker tag nginxtest:0.1 localhost:5000/nginx:0.1 Docker registry 서버로 업로드하기 $ sudo docker push [Docker registry URL]/[이미지 이름]:[TAG] EX) $ sudo docker push localhost:5000/nginxtest:0.1 The push refers to repository [localhost:5000/nginxtest] c4adbf8d4df4: Pushed 56104874600e: Pushed 79b16ae8ffe2: Pushed 958dcff7226f: Pushed 83109fa660b2: Pushed 30d3c4334a23: Pushed f2fa9f4cf8fd: Pushed 0.1: digest: sha256:6d2ee764d8d6ce21b62c9cab92e28555c69b1a7028db7cf170b269ff97f901c1 size: 1782 $
  • 개인 저장소에 이미지를 업로드할때는 먼저 태그를 먼저 생성해야합니다.

 

 

Docker 개인 저장소에 있는 이미지 다운받기

pull 명령을 통해 개인 저장소에 있는 이미지를 다운로드 

이미지 다운받기 전 $ sudo docker images REPOSITORY TAG IMAGE ID CREATED SIZE nginxtest 0.3 df69b2bb7f48 2 days ago 232MB nginxtest 0.2 45fe3bfa31b6 2 days ago 232MB nginxtest 0.1 740379f9b11b 2 days ago 232MB registry latest 773dbf02e42e 9 days ago 24.1MB ubuntu 14.04 13b66b487594 14 months ago 197MB $ $sudo doker pull [Docker registry URL]/[이미지 이름]:[TAG] EX) $ sudo docker pull 192.168.0.210:5000/nginxtest:0.1 0.1: Pulling from nginxtest Digest: sha256:6d2ee764d8d6ce21b62c9cab92e28555c69b1a7028db7cf170b269ff97f901c1 Status: Downloaded newer image for 192.168.0.210:5000/nginxtest:0.1 192.168.0.210:5000/nginxtest:0.1 $ 이미지 다운로드 후 $ sudo docker images REPOSITORY TAG IMAGE ID CREATED SIZE nginxtest 0.3 df69b2bb7f48 2 days ago 232MB nginxtest 0.2 45fe3bfa31b6 2 days ago 232MB nginxtest 0.1 740379f9b11b 2 days ago 232MB 192.168.0.210:5000/nginxtest 0.1 740379f9b11b 2 days ago 232MB registry latest 773dbf02e42e 9 days ago 24.1MB ubuntu 14.04 13b66b487594 14 months ago 197MB $

 

 

 

 

 

 

 

 

 

반응형
반응형

 

 

 

 

 

Docker

Ubuntu 환경에서 Docker 명령어 사용하기


 

Ubuntu 20.04.4 LTS 환경으로 테스트 진행

 

 

 

 

 

 

 

 

Docker history 명령으로 이미지 history 확인하기

 

history 명령은 동작중인 컨테이너에 입력된 명령어 history를 확인하는 명령어입니다.

이전 글에서 dockerfile로 만든 nginx 컨테이너입니다. 만들면서 사용된 RUN 커맨드가 history에 기록됩니다.

$ sudo docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 61edbce54f41 nginxtest:0.1 "nginx" 18 minutes ago Up 18 minutes 0.0.0.0:80->80/tcp, :::80->80/tcp, 443/tcp jinsu-nginx $ $sudo docker history [NAMES]:[TAG] EX) $ sudo docker history nginxtest:0.1 IMAGE CREATED CREATED BY SIZE COMMENT 740379f9b11b 29 minutes ago /bin/sh -c #(nop) EXPOSE 443 0B 929f903e2540 29 minutes ago /bin/sh -c #(nop) EXPOSE 80 0B ed64817830f8 29 minutes ago /bin/sh -c #(nop) CMD ["nginx"] 0B 2282172fd290 29 minutes ago /bin/sh -c #(nop) WORKDIR /etc/nginx 0B de12d0c872bc 29 minutes ago /bin/sh -c #(nop) VOLUME [/data /etc/nginx/… 0B 3da13963d2b2 29 minutes ago /bin/sh -c chown -R www-data:www-data /var/l… 0B 94c41b3f9ed3 29 minutes ago /bin/sh -c echo "\n daemon off;" >> /etc/ngi… 1.61kB d6e387a15b8b 29 minutes ago /bin/sh -c apt-get install -y nginx 21.1MB 2f20874facdc 29 minutes ago /bin/sh -c apt-get update 14.1MB abbb27fabc8c 29 minutes ago /bin/sh -c #(nop) MAINTAINER jinsu <djwlstn… 0B 13b66b487594 14 months ago /bin/sh -c #(nop) CMD ["/bin/bash"] 0B <missing> 14 months ago /bin/sh -c mkdir -p /run/systemd && echo 'do… 7B <missing> 14 months ago /bin/sh -c [ -z "$(apt-get indextargets)" ] 0B <missing> 14 months ago /bin/sh -c set -xe && echo '#!/bin/sh' > /… 195kB <missing> 14 months ago /bin/sh -c #(nop) ADD file:276b5d943a4d284f8… 196MB $

 

 

 

 

Docker cp 명령으로 복사하기

 

cp 명령은 컨테이너에서 있는 파일을 복사하는 명령입니다.

명령어 입력 전 $ ls -al total 12 drwxrwxr-x 2 djwlstn123 djwlstn123 4096 Jun 2 09:42 . drwxr-xr-x 5 djwlstn123 djwlstn123 4096 Jun 2 08:54 .. -rw-rw-r-- 1 djwlstn123 djwlstn123 325 Jun 2 08:54 Dockerfile $ 동작중인 컨테이너 확인 $ sudo docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 61edbce54f41 nginxtest:0.1 "nginx" 30 minutes ago Up 30 minutes 0.0.0.0:80->80/tcp, :::80->80/tcp, 443/tcp jinsu-nginx $ $ sudo docker cp [NAMES]:[경로] [저장경로] EX) $ sudo docker cp jinsu-nginx:/etc/nginx/nginx.conf ./ 명령어 입력 후 $ ls -al total 16 drwxrwxr-x 2 djwlstn123 djwlstn123 4096 Jun 2 09:44 . drwxr-xr-x 5 djwlstn123 djwlstn123 4096 Jun 2 08:54 .. -rw-rw-r-- 1 djwlstn123 djwlstn123 325 Jun 2 08:54 Dockerfile -rw-r--r-- 1 root root 1615 Jun 2 09:05 nginx.conf $

 

 

 

 

Docker commit 명령으로 컨테이너 변경된 내용 이미지로 생성하기

 

commit 명령은 컨테이너의 추가로 변경된 사항을 이미지 파일로 생성하는 명령입니다.

명령어 입력 전 $ sudo docker images REPOSITORY TAG IMAGE ID CREATED SIZE nginxtest 0.1 740379f9b11b 43 minutes ago 232MB ubuntu 14.04 13b66b487594 14 months ago 197MB $ $ sudo docker commit [옵션] [컨테이너 이름] [이미지 이름]:[태그] EX) $ sudo docker commit jinsu-nginx nginxtest:0.2 sha256:45fe3bfa31b6a7b9eb73603decb26779e348acd6e41ecd176cbeaf0c54c0c967 $ 명령어 입력 후 $ sudo docker images REPOSITORY TAG IMAGE ID CREATED SIZE nginxtest 0.2 45fe3bfa31b6 11 seconds ago 232MB nginxtest 0.1 740379f9b11b 46 minutes ago 232MB ubuntu 14.04 13b66b487594 14 months ago 197MB $

 

 

 

 

Docker diff 명령으로 컨테이너 변경된 파일 확인하기

 

diff 명령은 컨테이너가 실행되면서 변경된 파일 목록을 출력하여 보여줍니다.

비교 기준은 컨테이너 생성한 이미지입니다.

  • A : 추가된 파일
  • C : 변경된 파일
  • D : 삭제된 파일
$ sudo docker diff [컨테이너 이름] EX) $ sudo docker diff jinsu-nginx A /data C /etc C /etc/nginx A /etc/nginx/site-enabled C /var C /var/lib C /var/lib/nginx A /var/lib/nginx/body A /var/lib/nginx/fastcgi A /var/lib/nginx/proxy A /var/lib/nginx/scgi A /var/lib/nginx/uwsgi C /run A /run/nginx.pid $

 

 

 

 

 

 

Docker inspect 명령으로 이미지와 컨테이너 세부 정보 확인하기

 

inspect 명령은 이미지와 컨테이너의 세부 정보를 출력하는 명령입니다.

$ sudo docker inspect [이미지] or [컨테이너 이름] EX) $ sudo docker inspect jinsu-nginx [ ​​​​{ ​​​​​​​​"Id": "61edbce54f412f5445422515247b95af982c6c99ad24d758c855056c8d69ab28", ​​​​​​​​"Created": "2022-06-02T09:08:38.839283565Z", ​​​​​​​​"Path": "nginx", ​​​​​​​​"Args": [], ​​​​​​​​"State": { ​​​​​​​​​​​​"Status": "running", ​​​​​​​​​​​​"Running": true, ​​​​​​​​​​​​"Paused": false, ​​​​​​​​​​​​"Restarting": false, ​​​​​​​​​​​​"OOMKilled": false, ​​​​​​​​​​​​"Dead": false, ​​​​​​​​​​​​"Pid": 94810, ​​​​​​​​​​​​"ExitCode": 0, ​​​​​​​​​​​​"Error": "", ​​​​​​​​​​​​"StartedAt": "2022-06-02T09:08:39.140534723Z", ​​​​​​​​​​​​"FinishedAt": "0001-01-01T00:00:00Z" ... .. . 내용이 길게 출력중

 

 

 

 

반응형

+ Recent posts