목차
도커 허브
기능
1.
이미지 관리
•
도커 공식 이미지(Official Images) 및 사용자가 작성한 도커 이미지(Verified Publisher) 공개
2.
Github나 Bitbucket과 같은 소스코드 관리툴과 연계하여 코드 빌드
Tag
•
이미지명 [:태그명]
•
태그 정보는 베이스가 되는 OS의 버전에 따라 내용이 달라짐
Ex) debian:7 → debian의 버전 7을 베이스 이미지로 갖고 있는 도커 이미지
도커 이미지 조작
이미지 목록 표시(docker image ls)
•
docker image ls [옵션] [리포지토리명]
c:\>docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
docker101tutorial latest bbd7bd738e6b 19 hours ago 28.8MB
ubuntu latest 54c9d81cbb44 10 days ago 72.8MB
nginx latest c316d5a335a5 2 weeks ago 142MB
alpine/git latest c6b70534b534 2 months ago 27.4MB
centos 6.10 f1af727749c4 4 months ago 194MB
centos 6 5bf9684f4720 4 months ago 194MB
centos 7 eeb6ee3f44bd 4 months ago 204MB
centos 7.9.2009 eeb6ee3f44bd 4 months ago 204MB
centos 8 5d0da3dc9764 4 months ago 231MB
centos 7.8.2003 afb6fca791e0 21 months ago 203MB
centos 8.1.1911 470671670cac 2 years ago 237MB
centos 7.7.1908 08d05d1d5859 2 years ago 204MB
centos 6.6 368c96d786ae 2 years ago 203MB
centos 6.7 9f1de3c6ad53 2 years ago 191MB
centos 6.8 82f3b5f3c58f 2 years ago 195MB
centos 6.9 2199b8eb8390 2 years ago 195MB
centos 7.0.1406 cc2cf48cc784 2 years ago 210MB
centos 7.1.1503 e1430271e2f9 2 years ago 212MB
centos 7.2.1511 9aec5c5fe4ba 2 years ago 195MB
centos 7.3.1611 c5d48e81b986 2 years ago 192MB
centos 7.4.1708 9f266d35e02c 2 years ago 197MB
centos 7.5.1804 cf49811e3cdb 2 years ago 200MB
centos 7.6.1810 f1cb7c7d58b7 2 years ago 202MB
centos 5.11 b424fba01172 5 years ago 284MB
centos 5 1ae98b2c895d 5 years ago 285MB
PowerShell
복사
•
IMAGE ID : 도커 이미지 작성 시 랜덤한 고유의 문자열인 IMAGE ID가 생성
•
DIGEST : 도커 레지스트리에 업로드한 이미지는 이미지를 고유하게 식별하기 위한 다이제스트를 부여
옵션
•
--digest
•
docker image ls --digest
◦
DIGEST도 출력
이미지 상세 정보 확인(docker image inspect)
•
docker image inspect [이미지명[:태그명]]
◦
이미지 ID, 작성일, 도커 버전, CPU 아키텍처 등 결과가 JSON 형식으로 표시
hbeen@DESKTOP-EDC39JU:~$ docker image inspect ubuntu:latest
[
{
"Id": "sha256:f643c72bc25212974c16f3348b3a898b1ec1eb13ec1539e10a103e6e217eb2f1",
"RepoTags": [
"ubuntu:latest"
],
"RepoDigests": [
"ubuntu@sha256:c95a8e48bf88e9849f3e0f723d9f49fa12c5a00cfc6e60d2bc99d87555295e4c"
],
"Parent": "",
"Comment": "",
"Created": "2020-11-25T22:25:29.546718343Z",
"Container": "0672cd8bc2236c666c647f97effe707c8f6ba9783da7e88763c8d46c69dc174a",
"ContainerConfig": {
"Hostname": "0672cd8bc223",
"Domainname": "",
"User": "",
... 이하 생략 ...
Bash
복사
옵션
•
--format
•
docker image inspect --format=”{{포맷}}” [이미지명[:태그명]]
◦
JSON 포맷 지정하여 원하는 값 출력
hbeen@DESKTOP-EDC39JU:~$ docker image inspect --format="{{ .ID}}" ubuntu:latest
sha256:f643c72bc25212974c16f3348b3a898b1ec1eb13ec1539e10a103e6e217eb2f1
hbeen@DESKTOP-EDC39JU:~$ ^C
hbeen@DESKTOP-EDC39JU:~$ docker image inspect --format="{{ .ContainerConfig.Hostname}}" ubuntu:latest
0672cd8bc223
Bash
복사
이미지 태그 설정(docker image tag)
•
docker image tag [이미지명] [사용자명/컨테이너명:태그]
◦
이미지에 별명을 붙임(이미지를 복사하거나 이름을 바꾼 것이 아님)
이미지 검색(docker search)
•
docker searh [옵션] [검색 키워드]
◦
도커 허브에 공개되어 있는 이미지 검색
hbeen@DESKTOP-EDC39JU:~$ docker search nginx
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
nginx Official build of Nginx. 16299 [OK]
jwilder/nginx-proxy Automated Nginx reverse proxy for docker con… 2118 [OK]
richarvey/nginx-php-fpm Container running Nginx + PHP-FPM capable of… 822 [OK]
jc21/nginx-proxy-manager Docker container for managing Nginx proxy ho… 326
linuxserver/nginx An Nginx container, brought to you by LinuxS… 162
jlesage/nginx-proxy-manager Docker container for Nginx Proxy Manager 152 [OK]
Bash
복사
옵션
•
--limit
•
docker searh --limit [숫자]
◦
n건의 검색 결과 표시
hbeen@DESKTOP-EDC39JU:~$ docker search --limit 5 nginx
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
nginx Official build of Nginx. 16299 [OK]
jwilder/nginx-proxy Automated Nginx reverse proxy for docker con… 2118 [OK]
richarvey/nginx-php-fpm Container running Nginx + PHP-FPM capable of… 822 [OK]
nginx/nginx-ingress NGINX and NGINX Plus Ingress Controllers fo… 60
nginxinc/nginx-unprivileged Unprivileged NGINX Dockerfiles 59
Bash
복사
•
--filter=stars
•
docker searh --filter=stars=[숫자]
◦
사용자가 즐겨찾기로 표시한 건수로 검색
hbeen@DESKTOP-EDC39JU:~$ docker search --filter=stars=1000 nginx
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
nginx Official build of Nginx. 16299 [OK]
jwilder/nginx-proxy Automated Nginx reverse proxy for docker con… 2118 [OK]
Bash
복사
이미지 삭제(docker iamge rm)
•
docker image rm [옵션] [이미지명(REOPSITORY 또는 IMAGE ID)]
◦
IMAGE ID 지정 시 앞 3자리만 지정해도 됨
hbeen@DESKTOP-EDC39JU:~$ docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
ubuntu <none> 54c9d81cbb44 10 days ago 72.8MB
ubuntu latest f643c72bc252 14 months ago 72.9MB
hbeen@DESKTOP-EDC39JU:~$ docker image rm ubuntu
Untagged: ubuntu:latest
Untagged: ubuntu@sha256:c95a8e48bf88e9849f3e0f723d9f49fa12c5a00cfc6e60d2bc99d87555295e4c
Deleted: sha256:f643c72bc25212974c16f3348b3a898b1ec1eb13ec1539e10a103e6e217eb2f1
Deleted: sha256:9386795d450ce06c6819c8bc5eff8daa71d47ccb9f9fb8d49fe1ccfb5fb3edbe
Deleted: sha256:3779241fda7b1caf03964626c3503e930f2f19a5ffaba6f4b4ad21fd38df3b6b
Deleted: sha256:bacd3af13903e13a43fe87b6944acd1ff21024132aad6e74b4452d984fb1a99a
hbeen@DESKTOP-EDC39JU:~$ docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
ubuntu <none> 54c9d81cbb44 10 days ago 72.8MB
Bash
복사
옵션
•
--force
•
docker image rm --force [이미지명(REOPSITORY 또는 IMAGE ID)]
◦
이미지 강제로 삭제
•
--no-prune
•
docker image rm --no-prune [이미지명(REOPSITORY 또는 IMAGE ID)]
◦
중간 이미지를 삭제하지 않음
사용하지 않은 이미지 삭제(docker image prune)
•
docker image prune [옵션]
◦
사용하지 않은 도커 이미지 삭제
도커 컨테이너 생성/시작/정지
컨테이너 생성(docker container create)
•
이미지로부터 컨테이너를 생성
•
생성 시 스냅샷(이미지에 포함된 파일과 디렉터리를 특정 타이밍에서 추출)
•
컨테이너를 시작한 것은 아님
컨테이너 생성 및 시작(docker conatiner run)
•
docker container run [옵션] [이미지명:태그] [인수]
•
컨테이너 생성 후 임의의 프로세스 시작
옵션
•
- i : 컨테이너의 표준 출력
•
-t : tty(단말 디바이스) 확보
•
--name : 컨테이너 이름 임의 지정
•
-d : 백그라운드에서 실행(detach)
•
-u : 사용자명 지정
•
--restart : 명령 실행 후에 컨테이너를 재시작
•
--rm : 명령 실행 후에 컨테이너를 자동으로 삭제
대화식 실행
hbeen@DESKTOP-EDC39JU:~$ docker container run -it --name "test1" centos /bin/cal
February 2022
Su Mo Tu We Th Fr Sa
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28
hbeen@DESKTOP-EDC39JU:~$ docker container run -it --name "test2" centos /bin/bash
[root@ceedbe3c751e /]#
Bash
복사
백그라운드 실행
hbeen@DESKTOP-EDC39JU:~$ docker container run -d centos /bin/ping localhost
5317d0ed7fe9f48b52b7d3c4b16635bbca6d550d40b37cf327c56920dae143a5
Bash
복사
백그라운드 실행 결과 확인
•
docker container logs [컨테이너 ID]
hbeen@DESKTOP-EDC39JU:~$ docker container logs -t 5317d0ed7
2022-02-13T04:04:15.157660000Z PING localhost (127.0.0.1) 56(84) bytes of data.
2022-02-13T04:04:15.157692800Z 64 bytes from localhost (127.0.0.1): icmp_seq=1 ttl=64 time=0.021 ms
2022-02-13T04:04:16.217546300Z 64 bytes from localhost (127.0.0.1): icmp_seq=2 ttl=64 time=0.018 ms
2022-02-13T04:04:17.257621200Z 64 bytes from localhost (127.0.0.1): icmp_seq=3 ttl=64 time=0.040 ms
2022-02-13T04:04:18.297685900Z 64 bytes from localhost (127.0.0.1): icmp_seq=4 ttl=64 time=0.019 ms
Bash
복사
옵션
•
t : 타임스탬프 표시
컨테이너 네트워크 설정
•
deocker container run [네트워크 옵션] [이미지명:태그] [인수]
옵션
•
-p [호스트포트:컨테이너포트] : 호스트의 임의의 포트를 컨테이너에 할당
hbeen@DESKTOP-EDC39JU:~$ docker container run -d -p 8080:80 nginx
8c02f51deb59e068f95e0d2ff5855c04c863ba45d3b6d02f433b49784d40401e
Bash
복사
•
--dns [IP 주소] : dns 서버 설정
hbeen@DESKTOP-EDC39JU:~$ docker container run -d --dns 192.168.1.1 nginx
Bash
복사
•
--mac-address=”[MAC주소]” : MAC 주소 설정
hbeen@DESKTOP-EDC39JU:~$ docker container run -d --mac-address="92:d0:c6:0a:29:33" centos
262911515a5e652080e514acf6f062c586bc23ab01d12298751042b03001ceed
hbeen@DESKTOP-EDC39JU:~$ docker container inspect --format="{{ .Config.MacAddress}}" 262911515a5
92:d0:c6:0a:29:33
Bash
복사
•
--add-host : 호스트명과 IP 주소 설정(설정 후 /etc/hosts 파일에 설정 결과 확인 가능)
hbeen@DESKTOP-EDC39JU:~$ docker container run -it --hostname www.test.com --add-host node1.test.com:192.168.1.1 centos
[root@www /]# cat /etc/hosts
127.0.0.1 localhost
::1 localhost ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
192.168.1.1 node1.test.com
172.17.0.5 www.test.com
Bash
복사
•
--net : 네트워크 방식 설정
bridge | 브리지 연결(기본 값) |
none | 네트워크에 연결하지 않음 |
container:[name|id] | 다른 컨테이너의 네트워크 사용 |
host | 컨테이너가 호스트 os의 네트워크를 사용 |
NETWORK | 사용자 정의 네트워크 사용(docker network create 명령어로 사용자 정의 네트워크 작성) |
컨테이너 자원 지정
•
docker container run [자원옵션] [이미지명:태그] [인수]
◦
공평한 리소스(CPU, Memory, Disk I/O) 배분을 위해 리소스 사용을 측정하고 제한
단일 컨테이너가 리소스를 모두 소비하는것을 방지
옵션
•
-c=[숫자] : CPU의 사용 비율(default:1024)
•
-m=[숫자b/k/m/g] : 사용할 메모리 제한
•
-v [호스트폴더:컨테이너폴더] : 호스트와 컨테이너 디렉터리 공유
hbeen@DESKTOP-EDC39JU:~$ docker container run -v /Users/test:/usr/share/nginx/ht
Bash
복사
컨테이너 환경 지정
•
docker container run [환경설정옵션] [이미지명:태그] [인수]
옵션
•
-e : 환경 변수 설정
hbeen@DESKTOP-EDC39JU:~$ docker container run -it -e foo=bar centos /bin/bash
[root@284c13ce4b79 /]# set
BASH=/bin/bash
...중간 생략...
foo=bar
Bash
복사
•
--env-file=[파일명] : 파일로 환경 변수 설정
•
--read-only=[true|false] : 파일시스템을 읽기 전용으로 지정
•
-w : 컨테이너의 작업 디렉터리 지정
hbeen@DESKTOP-EDC39JU:~$ docker container run -it -w /tensorflow centos /bin/bash
[root@af5c2c6f7036 tensorflow]# pwd
/tensorflow
Bash
복사
•
-u : 사용자명 또는 UID 지정
컨테이너 목록 표시
•
docker container ls
hbeen@DESKTOP-EDC39JU:~$ docker container ls
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
b5b62df9e574 nginx "/docker-entrypoint.…" 7 seconds ago Up 5 seconds 80/tcp sad_cannon
Bash
복사
•
COMMAND : 컨테이너에서 실행중인 명령
옵션
•
-a : 정지중인 컨테이너도 표시
컨테이너 상세 정보 확인(docker container inspect)
•
docker container inspect [컨테이너ID]
•
소속된 네트워크 등 상세 정보 확인
hbeen@DESKTOP-EDC39JU:~$ docker container inspect 262911515a5e
[
{
"Id": "262911515a5e652080e514acf6f062c586bc23ab01d12298751042b03001ceed",
"Created": "2022-02-13T04:27:37.5626938Z",
"Path": "/bin/bash",
"Args": [],
"State": {
"Status": "exited",
"Running": false,
"Paused": false,
"Restarting": false,
"OOMKilled": false,
"Dead": false,
"Pid": 0,
"ExitCode": 0,
"Error": "",
"StartedAt": "2022-02-13T04:27:38.1292276Z",
"FinishedAt": "2022-02-13T04:27:38.13049Z"
},
"Image": "sha256:0d120b6ccaa8c5e149176798b3501d4dd1885f961922497cd0abef155c869566",
"ResolvConfPath": "/var/lib/docker/containers/262911515a5e652080e514acf6f062c586bc23ab01d12298751042b03001ceed/resolv.conf",
"HostnamePath": "/var/lib/docker/containers/262911515a5e652080e514acf6f062c586bc23ab01d12298751042b03001ceed/hostname",
... 이하 생략 ...
Bash
복사
옵션
•
--format
•
docker container inspect --format=”{{포맷}}” [컨테이너ID]
◦
JSON 포맷 지정하여 원하는 값 출력
hbeen@DESKTOP-EDC39JU:~$ docker container inspect --format="{{ .Config.MacAddress}}" 262911515a5
92:d0:c6:0a:29:33
Bash
복사
컨테이너 상세 정보 확인(docker container status)
•
docker container status [컨테이너ID]
^Chbeen@DESKTOP-EDC39JU:~$ docker container stats b5b62df9e574
CONTAINER ID NAME CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PIDS
b5b62df9e574 sad_cannon 0.00% 1.973MiB / 12.35GiB 0.02% 1.26kB / 0B 0B / 0B 2
Bash
복사
옵션
•
--format
•
docker container inspect --format=”{{포맷}}” [컨테이너ID]
◦
JSON 포맷 지정하여 원하는 값 출력
hbeen@DESKTOP-EDC39JU:~$ docker container inspect --format="{{ .Config.MacAddress}}" 262911515a5
92:d0:c6:0a:29:33
Bash
복사
컨테이너 프로세스 확인(docker container ps)
•
docker container ps
컨테이너 시작(docker container start)
•
docker container start [옵션] [컨테이너ID...컨테이너ID]
컨테이너 재시작(docker container restart)
•
docker container restart [옵션] [컨테이너ID...컨테이너ID]
컨테이너 정지(docker container stop)
•
docker container stop[옵션] [컨테이너ID...컨테이너ID]
컨테이너 일시정지 및 재개(docker container pause/unpause)
•
docker container pause [컨테이너ID]
•
docker container punause [컨테이너ID]
컨테이너 삭제(docker container rm)
•
docker container rm [옵션] [컨테이너ID...컨테이너ID]