블록체인
블록체인

Run : 컨테이너 작동

목차

도커 허브

기능

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]

정지중인 컨테이너 모두 삭제(docker container prune)

컨테이너 상태 확인(docker container ps)