• docker system info 명령어를 통해 Docker 실행 환경의 상세 설정이 표시
  • 출력되는 결과 내용 설명
    1. Containers → 컨테이너의 수
    2. Images → 이미지의 수
    3. Server Version → Docker 버전
    4. Storage Driver → 스토리지 드라이버 종류
    5. Kernel Version → 커널 버전
    6. Operating System → OS 버전
    7. OSType → OS 종류
    8. Architecture → 아키텍처
    9. CPUs → 사용 CPU
    10. Total Memory → 사용 메모리
    11. Docker Root Dir → Docker 파일이 저장되는 root 디렉토리 위치 (/var/lib/docker)

  • docker 실행 환경 확인

    $ docker system info
    Client:
     Context:    default
     Debug Mode: false
     Plugins:
      app: Docker App (Docker Inc., v0.9.1-beta3)
      buildx: Build with BuildKit (Docker Inc., v0.5.1-docker)
      scan: Docker Scan (Docker Inc., v0.8.0)
    
    Server:
     Containers: 0
      Running: 0
      Paused: 0
      Stopped: 0
     Images: 0
     Server Version: 20.10.7
     Storage Driver: overlay2
      Backing Filesystem: xfs
      Supports d_type: true
      Native Overlay Diff: true
      userxattr: false
     Logging Driver: json-file
     Cgroup Driver: cgroupfs
     Cgroup Version: 1
     Plugins:
      Volume: local
      Network: bridge host ipvlan macvlan null overlay
      Log: awslogs fluentd gcplogs gelf journald json-file local logentries splunk syslog
     Swarm: inactive
     Runtimes: io.containerd.runc.v2 io.containerd.runtime.v1.linux runc
     Default Runtime: runc
     Init Binary: docker-init
     containerd version: 7eba5930496d9bbe375fdf71603e610ad737d2b2
     runc version: v1.0.0-0-g84113ee
     init version: de40ad0
     Security Options:
      seccomp
       Profile: default
     Kernel Version: 3.10.0-1160.36.2.el7.x86_64
     Operating System: CentOS Linux 7 (Core)
     OSType: linux
     Architecture: x86_64
     CPUs: 2
     Total Memory: 1.777GiB
     Name: centos-docker
     ID: FAHK:ZAD7:CAIO:CWZQ:BL5B:6B6F:637K:J3DR:SNKQ:LVOG:OGQJ:QMAM
     Docker Root Dir: /var/lib/docker
     Debug Mode: false
     Username: hippo7788
     Registry: https://index.docker.io/v1/
     Labels:
     Experimental: false
     Insecure Registries:
      127.0.0.0/8
     Live Restore Enabled: false

  • 설정한 Docker 버전을 확인

  • docker version 명령을 실행하면 Docker의 버전이나 Go 언어의 버전, OS, 아키텍처를 확인 가능

  • Docker는 클라이언트/서버 아키텍처를 채택하고 있음 → Docker 클라이언트와 Dcoker 서버는 Remote API를 통해 연결

  • docker 명령어는 클라이언트에서 실행하면 서버로 보내져서 처리됨

    $ docker version
    Client: Docker Engine - Community
     Version:           20.10.7
     API version:       1.41
     Go version:        go1.13.15
     Git commit:        f0df350
     Built:             Wed Jun  2 11:58:10 2021
     OS/Arch:           linux/amd64
     Context:           default
     Experimental:      true
    
    Server: Docker Engine - Community
     Engine:
      Version:          20.10.7
      API version:      1.41 (minimum version 1.12)
      Go version:       go1.13.15
      Git commit:       b0f5bc3
      Built:            Wed Jun  2 11:56:35 2021
      OS/Arch:          linux/amd64
      Experimental:     false
     containerd:
      Version:          1.4.8
      GitCommit:        7eba5930496d9bbe375fdf71603e610ad737d2b2
     runc:
      Version:          1.0.0
      GitCommit:        v1.0.0-0-g84113ee
     docker-init:
      Version:          0.19.0
      GitCommit:        de40ad0

1. 컨테이너와 호스트 간의 file 전송 명령어

  • docker cp <container name>:<path> <host경로> 또는 docker cp <host경로> <container name>:<path> 명령어로 사용

    # 실행할 이미지 확인
    $ docker images
    REPOSITORY              TAG       IMAGE ID                   CREATED          SIZE
    test                           vol         b00a026e35cd       51 minutes ago   133MB
    locahost:5000/vol       v1          b00a026e35cd      51 minutes ago   133MB
    localhost:5000/vol      v1          b00a026e35cd      51 minutes ago   133MB
    test                           user       0e7f2d0690f8        2 hours ago        73.1MB
    ubuntu                      latest      1318b700e415      5 hours ago        72.8MB
    forestian/test             web        d19fbcd7480b       18 hours ago      133MB
    nginx                        latest      08b152afcfae        4 days ago          133MB
    registry                     latest      1fd8e1b0bb7e       3 months ago      26.2MB
    
    # 테스트 켄터이너 실행
    $ docker run --rm -d -it test:vol /bin/bash
    
    # 실행하는 컨테이너 확인
    $ docker ps
    CONTAINER ID   IMAGE      COMMAND                  CREATED          STATUS             PORTS        NAMES
    df8bc7355db0   test:vol   "/docker-entrypoint.…"   3 minutes ago    Up 3 minutes    80/tcp        wonderful_burnell
    
    # 해당 명령어의 파일 없음
    $ docker exec -it df8 ls /bin/ip
    Error: No such container: test:vol
    
    # web 이름을 가진 컨테이너에 host가 가지고 있는 /usr/sbin/ip 파일을 /bin/디렉토리 아래에 복사
    $ docker cp /usr/sbin/ip df8:/bin/
    
    # 해당 명령어의 파일이 정상적으로 복사됨 확인
    $ docker exec -it df8 ls /bin/ip
    /bin/ip

2. 변경된 컨테이너 file 조회

  • docker diff <container name> 명령어로 사용
  • 이미지와 Container를 비교하여 변경된 파일 목록 출력
    1. A → add
    2. C → change
    3. D → delete
  • 변경된 컨테이너 file 조회 예시

    $ docker ps
    CONTAINER ID   IMAGE      COMMAND                  CREATED           STATUS            PORTS       NAMES
    df8bc7355db0   test:vol   "/docker-entrypoint.…"   6 minutes ago    Up 6 minutes    80/tcp       wonderful_burnell
    
    $ docker diff df8
    C /bin
    A /bin/ip

3. 변경된 컨테이너 이미지 생성 → 백업 이미지 생성

  • docker commit <options> <container name> <image>:<tag> 명령어로 사용
  • docker commit 명령어 사용 옵션
    1. -a 옵션 → 만든이
    2. -m 옵션 → log 메시지
  • 변경된 컨테이너 이미지 생성 예시

    # 변경된 내용을 가지는 이미지 생성
    $ docker commit -a "hippo" -m "add /bin/ip" df8b nginx:ip
    sha256:96ec98bcb7ac7344d8c36a01601f3ffb202f50a5bfcca6cae21c7624abfc5b64
    
    # 생성된 이미지 확인
    $ docker images
    REPOSITORY              TAG       IMAGE ID                   CREATED          SIZE
    test                           vol         b00a026e35cd       51 minutes ago   133MB
    locahost:5000/vol       v1          b00a026e35cd      51 minutes ago   133MB
    localhost:5000/vol      v1          b00a026e35cd      51 minutes ago   133MB
    test                           user       0e7f2d0690f8        2 hours ago        73.1MB
    ubuntu                      latest      1318b700e415      5 hours ago        72.8MB
    forestian/test             web        d19fbcd7480b       18 hours ago      133MB
    nginx                        latest      08b152afcfae        4 days ago          133MB
    registry                     latest      1fd8e1b0bb7e       3 months ago      26.2MB
    
    # 생성된 이미지를 컨테이너 실행
    $ docker run -d -it --name webip nginx:ip
    2b2f20c81ea677e33e3cda36e6ef8ad21e2dd95dbc69a5b91dcbe6ba9a6851ad
    
    # 실행중인 컨테이너 확인
    $ docker ps
    CONTAINER ID   IMAGE      COMMAND                  CREATED           STATUS              PORTS      NAMES
    2b2f20c81ea6   nginx:ip   "/docker-entrypoint.…"   27 seconds ago   Up 26 seconds   80/tcp       webip
    
    # 추가된 부분에 대한 테스트로 정상적으로 이미지 생성 확인
    $ docker exec webip ip a
    1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
        link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
        inet 127.0.0.1/8 scope host lo
           valid_lft forever preferred_lft forever
    14: eth0@if15: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default
        link/ether 02:42:ac:11:00:04 brd ff:ff:ff:ff:ff:ff link-netnsid 0
        inet 172.17.0.4/16 brd 172.17.255.255 scope global eth0
           valid_lft forever preferred_lft forever

4. 컨테이너 상세 정보 조회 → docker inspect <컨테이너 이름>

  • docker inspect <container name> 명령어로 사용

    # 실행중인 컨테이너 확인
    $ docker ps
    CONTAINER ID   IMAGE      COMMAND                  CREATED           STATUS          PORTS           NAMES
    2b2f20c81ea6   nginx:ip   "/docker-entrypoint.…"   2 minutes ago    Up 2 minutes    80/tcp         webip
    
    # 컨테이너의 자세한 내용 조회
    $ docker inspect 2b2 | less
    [
        {
            "Id": "2b2f20c81ea677e33e3cda36e6ef8ad21e2dd95dbc69a5b91dcbe6ba9a6851ad",
            "Created": "2021-07-27T02:31:18.37452262Z",
            "Path": "/docker-entrypoint.sh",
            "Args": [
                "/bin/bash"
            ],
            <...중략...>
                        "IPPrefixLen": 16,
                        "IPv6Gateway": "",
                        "GlobalIPv6Address": "",
                        "GlobalIPv6PrefixLen": 0,
                        "MacAddress": "02:42:ac:11:00:04",
                        "DriverOpts": null
                    }
                }
            }
        }
    ]

5. 네트워크 상세 정보 조회 → docker network inspect <네트워크 이름>

  • docker network inspect <network name> 명령어로 사용

  • docker network ls 명령어로 네트워크 확인 가능

    # 네트워크 리스트 확인
    $ docker network ls
    NETWORK ID     NAME      DRIVER    SCOPE
    855a8e7a6afa    bridge     bridge      local
    dcbe9811b35f    host        host         local
    2143943ba6b0   none       null          local
    
    # brige 이름을 가진 네트워크 상세 정보 확인
    $ docker network inspect bridge
    [
        {
            "Name": "bridge",
            "Id": "855a8e7a6afa6fba6dc9344910adf12d42ebdffd23a6cc19b1e44ce7f1385cf3",
            "Created": "2021-07-27T10:19:48.519226416+09:00",
            "Scope": "local",
            "Driver": "bridge",
            "EnableIPv6": false,
            "IPAM": {
                "Driver": "default",
                "Options": null,
                "Config": [
                    {
                        "Subnet": "172.17.0.0/16",
                        "Gateway": "172.17.0.1"
                    }
                ]
            },
            "Internal": false,
            "Attachable": false,
            "Ingress": false,
            "ConfigFrom": {
                "Network": ""
            },
            "ConfigOnly": false,
            "Containers": {
                "2b2f20c81ea677e33e3cda36e6ef8ad21e2dd95dbc69a5b91dcbe6ba9a6851ad": {
                    "Name": "webip",
                    "EndpointID": "3e0b976ea7976bcaba633304fb487a5417ed892999ba4163887f11477860fb5f",
                    "MacAddress": "02:42:ac:11:00:04",
                    "IPv4Address": "172.17.0.4/16",
                    "IPv6Address": ""
                },
                "d5a02a85daeeb88cb470108f2be7364ee7210d6ea65935baee15579bf25fee63": {
                    "Name": "registry-server",
                    "EndpointID": "9f73284ba8e4e6a799df75c19387fda9d896648ef8c53ec51604066318a54b45",
                    "MacAddress": "02:42:ac:11:00:02",
                    "IPv4Address": "172.17.0.2/16",
                    "IPv6Address": ""
                },
                "df8bc7355db091a33c9b8daa4c28163aeb5a06eba4ff90681c0a7820aa1355f2": {
                    "Name": "wonderful_burnell",
                    "EndpointID": "32bce18ca81d104ca7dc444d56a9094eda69fcd442899e30ea04d03353d06859",
                    "MacAddress": "02:42:ac:11:00:03",
                    "IPv4Address": "172.17.0.3/16",
                    "IPv6Address": ""
                }
            },
            "Options": {
                "com.docker.network.bridge.default_bridge": "true",
                "com.docker.network.bridge.enable_icc": "true",
                "com.docker.network.bridge.enable_ip_masquerade": "true",
                "com.docker.network.bridge.host_binding_ipv4": "0.0.0.0",
                "com.docker.network.bridge.name": "docker0",
                "com.docker.network.driver.mtu": "1500"
            },
            "Labels": {}
        }
    ]
    
    # host 이름을 가진 네트워크 상세 정보 확인
    $ docker network inspect host
    [
        {
            "Name": "host",
            "Id": "dcbe9811b35f5574ebd65b5118d04831440ac6f992ecba14d0881db4f43d64e1",
            "Created": "2021-07-26T13:41:54.007292134+09:00",
            "Scope": "local",
            "Driver": "host",
            "EnableIPv6": false,
            "IPAM": {
                "Driver": "default",
                "Options": null,
                "Config": []
            },
            "Internal": false,
            "Attachable": false,
            "Ingress": false,
            "ConfigFrom": {
                "Network": ""
            },
            "ConfigOnly": false,
            "Containers": {},
            "Options": {},
            "Labels": {}
        }
    ]
    
    # none 이름을 가진 네트워크 상세 정보 확인
    $ docker network inspect none
    [
        {
            "Name": "none",
            "Id": "2143943ba6b0a74a5ef724d5af13b30e0492ce4489bcd1c3d561741040f86514",
            "Created": "2021-07-26T13:41:53.953813947+09:00",
            "Scope": "local",
            "Driver": "null",
            "EnableIPv6": false,
            "IPAM": {
                "Driver": "default",
                "Options": null,
                "Config": []
            },
            "Internal": false,
            "Attachable": false,
            "Ingress": false,
            "ConfigFrom": {
                "Network": ""
            },
            "ConfigOnly": false,
            "Containers": {},
            "Options": {},
            "Labels": {}
        }
    ]

6. 이미지 상세 정보 조회 → docker image inspect <이미지 이름>

  • docker image inspect <image name> 명령어로 사용

  • docker image ls 명령어로 이미지 확인 가능

    # 이미지 리스트 확인
    $ docker image ls
    REPOSITORY              TAG       IMAGE ID                   CREATED          SIZE
    test                           vol         b00a026e35cd       51 minutes ago   133MB
    locahost:5000/vol       v1          b00a026e35cd      51 minutes ago   133MB
    localhost:5000/vol      v1          b00a026e35cd      51 minutes ago   133MB
    test                           user       0e7f2d0690f8        2 hours ago        73.1MB
    ubuntu                      latest      1318b700e415      5 hours ago        72.8MB
    forestian/test             web        d19fbcd7480b       18 hours ago      133MB
    nginx                        latest      08b152afcfae        4 days ago          133MB
    registry                     latest      1fd8e1b0bb7e       3 months ago      26.2MB
    
    # nginx:ip 이름을 가진 이미지의 상세 정보 확인
    $ docker image inspect nginx:ip
    [
        {
            "Id": "sha256:96ec98bcb7ac7344d8c36a01601f3ffb202f50a5bfcca6cae21c7624abfc5b64",
            "RepoTags": [
                "nginx:ip"
            ],
            "RepoDigests": [],
            "Parent": "sha256:b00a026e35cdc01c6ea323dc364d0f091897afb9acb70e8404804dfdfeed98a9",
            "Comment": "add /bin/ip",
            <...중략...>
            "RootFS": {
                "Type": "layers",
                "Layers": [
                    "sha256:814bff7343242acfd20a2c841e041dd57c50f0cf844d4abd2329f78b992197f4",
                    "sha256:7c0b223167b96d7deaacf1e1d2d35892166645b09b17bcc8675a4d882ef84893",
                    "sha256:59b01b87c9e7f668b740d23eb872c5964636c33aef795f1186f08b172197bc35",
                    "sha256:988d9a3509bbb7ea8037d4eba3a5e0ada5dc165144c8ff0df89c0048d1ac6132",
                    "sha256:b857347059916922b353147882544f17bb96e64c639081c0677bf386c446be4f",
                    "sha256:e3135447ca3e69c6975aee1621c406e3865e0e143c807bbdcf05abefa56054a2",
                    "sha256:cbf5cd72e52c438d7b56ef2e4ecec55c7086194447ee3e841c1f0f3cf2d1d57a"
                ]
            },
            "Metadata": {
                "LastTagTime": "2021-07-27T11:27:55.465105417+09:00"
            }
        }
    ]

7. 볼륨 상세 정보 조회 → docker volume inspect <볼륨 이름>

  • docker volume inspect <volume name> 명령어로 사용

  • docker volume create disk → 볼륨 생성

  • docker volume ls 명령어로 볼륨 확인 가능

    # disk1 이름을 가진 volume 생성
    $ docker volume create disk1
    disk1
    
    # 생성된 volume 확인
    $ docker volume ls
    DRIVER    VOLUME NAME
    local         6a78c5df00f787b72e00cc634b8f79ac7679ac1d60985618f59ec8d3cbf96cae
    local         25b16fde993167ac0e3457c7492cbde6e4c0c2cecce9292db248586b2b0c3f55
    local         disk1
    local         e343d977a0e3802e449a20f60f8f9502af45f1324b220cbb33bafea06fa65918
    
    # disk1 이름을 가진 volume의 자센한 내용 확인
    $ docker volume inspect disk1
    [
        {
            "CreatedAt": "2021-07-27T13:08:35+09:00",
            "Driver": "local",
            "Labels": {},
            "Mountpoint": "/var/lib/docker/volumes/disk1/_data",
            "Name": "disk1",
            "Options": {},
            "Scope": "local"
        }
    ]

8. 실시간 events 출력

  • docke events 명령어로 사용

9. container의 로그 확인

  • docke logs <container name> 명령어로 사용
  • --since 옵션을 주면 해당 일 이후 로그 출력
  • 실시간 events 출력

10. container의 filesystem을 tar로 저장

  • docker export <container name> <tar file> 명령어로 사용

11. 이미지를 tar파일 형태로 백업 저장 → docker save image > xxx.tar

  • docke save <image name> > xxx.tar 명령어로 사용

12. 기존 이미지 name으로 restore

  • docke load < xxx.tar 명령어로 사용

13. container의 프로세스 모니터링

  • docker top <contianer name> <option> 명령어로 사용

14. container 단위로 사용량 확인

  • docker status 명령어로 사용

    # 전체 컨테이너의 사용량 확인
    $ docker status
    
    # 특정 컨터이너의 사용량 확인 -> 컨테이너 확인
    $ docker ps
    
    $ docker status

15. volume 사용량 확인

  • docker system df 명령어로 사용
    $ docker system df

16. docker system prune <option> 명령어 사용

  • docker system prune → stop 되어있는 container를 제거

  • docker system prune -a → 컨테이너에서 사용하고 있지 않는 이미지를 모두 제거

    $ docker system prune
    
    $ docker system df
    
    $ docker system prune -a
    
    $ docker system df

1. image 조회 → https://hub.docker.com


2. docker image 조회

  • docker search 명령어를 통해 이미지 검색
    $ docker search nginx
    NAME                                   DESCRIPTION                                                        STARS     OFFICIAL   AUTOMATED
    nginx                                   Official build of Nginx.                                             15210     [OK]
    jwilder/nginx-proxy               Automated Nginx reverse proxy for docker con…       2051                       [OK]
    richarvey/nginx-php-fpm       Container running Nginx + PHP-FPM capable of…       816                         [OK]
    <...생략...>

3. image 다운로드

  • image download 형식 → docker pull <image_name>:<tag>
    $ docker pull nginx:latest
    latest: Pulling from library/nginx
    33847f680f63: Pull complete
    dbb907d5159d: Pull complete
    8a268f30c42a: Pull complete
    b10cf527a02d: Pull complete
    c90b090c213b: Pull complete
    1f41b2f2bf94: Pull complete
    Digest: sha256:8f335768880da6baf72b70c701002b45f4932acae8d574dedfddaf967fc3ac90
    Status: Downloaded newer image for nginx:latest
    docker.io/library/nginx:latest

4. image 삭제

  • image 삭제 형식 → docker rmi <image_name>:<tag>
  • tag 없이 사용시 관련 이미지 모두 삭제 → tag를 해야 모든 이미지 삭제를 막을 수 있음
    $ docker rmi nginx
    Untagged: nginx:latest
    Untagged: nginx@sha256:8f335768880da6baf72b70c701002b45f4932acae8d574dedfddaf967fc3ac90
    Deleted: sha256:08b152afcfae220e9709f00767054b824361c742ea03a9fe936271ba520a0a4b
    Deleted: sha256:97386f823dd75e356afac10af0def601f2cd86908e3f163fb59780a057198e1b
    Deleted: sha256:316cd969204ae854302bc55c610698829c9f23fa6fcd4e0f69afa6f29fedfd68
    Deleted: sha256:dcec23d16cb7cdbd725dc0024f38b39fd326066fc59784df92b40fc05ba3728f
    Deleted: sha256:1e294000374b3a304c2bfcfe51460aa599237149ed42e3423ac2c3f155f9b4a5
    Deleted: sha256:c0d318592b21711dc370e180acd66ad5d42f173d5b58ed315d08b9b09babb84a
    Deleted: sha256:814bff7343242acfd20a2c841e041dd57c50f0cf844d4abd2329f78b992197f4
  • docker rm 컨테이너 → image를 삭제하는 것이 아니라 컨테이너를 삭제하는 명령어

5. 설치한 docker 이미지 위치 확인 → 관리자 계정 root에서 확인 가능

  • 설치한 nginx의 이미지 저장 위치 → /var/lib/docker/image/overlay2/ 디렉토리 아래에 존재
  • /var/lib/docker/image/overlay2/ 디렉토리 아래의 파일 확인
    $ cd /var/lib/docker/image/overlay2/
    $ du
    0         ./layerdb/tmp
    256     ./layerdb/sha256/814bff7343242acfd20a2c841e041dd57c50f0cf844d4abd2329f78b992197f4
    100     ./layerdb/sha256/c0d318592b21711dc370e180acd66ad5d42f173d5b58ed315d08b9b09babb84a
    20       ./layerdb/sha256/1e294000374b3a304c2bfcfe51460aa599237149ed42e3423ac2c3f155f9b4a5
    20       ./layerdb/sha256/dcec23d16cb7cdbd725dc0024f38b39fd326066fc59784df92b40fc05ba3728f
    20       ./layerdb/sha256/316cd969204ae854302bc55c610698829c9f23fa6fcd4e0f69afa6f29fedfd68
    20       ./layerdb/sha256/97386f823dd75e356afac10af0def601f2cd86908e3f163fb59780a057198e1b
    440     ./layerdb/sha256
    440     ./layerdb
    8         ./imagedb/content/sha256
    8         ./imagedb/content
    0         ./imagedb/metadata/sha256
    0         ./imagedb/metadata
    8         ./imagedb
    28       ./distribution/v2metadata-by-diffid/sha256
    28       ./distribution/v2metadata-by-diffid
    28       ./distribution/diffid-by-digest/sha256
    28       ./distribution/diffid-by-digest
    56       ./distribution

6. image 정리

  • docker system prune → 사용하지 않는 컨테이너 일괄 삭제
  • docker system prune -a → 현재 컨테이너에서 사용하고 있지 않은 이미지들을 삭제하는 -a 옵션도 제공
  • docker system prune filter 옵션 → 특정 기준으로 삭제할 대상이 되는 Container의 대상을 필터링
    # 중지된 지 24시간 이상 지난 이미지만 삭제
    $ docker container prune --filter until=24h

1. docker 그룹 존재 유무 확인

  • docker 그룹 확인
    $ cat /etc/group | grep -i docker
    docker:x:995:
  • docker 그룹이 없다면 docker 그룹 생성 필요
    $ sudo groupadd docker  (docker group이 없는 경우)
    $ sudo systemctl restart docker

2. 사용자 확인 → student를 docker 그룹에서 사용할 예정

  • student 사용자 계정이 전체 사용자 계정에 있는지 확인
    $ cat /etc/passwd
    root:x:0:0:root:/root:/bin/bash
    bin:x:1:1:bin:/bin:/sbin/nologin
    daemon:x:2:2:daemon:/sbin:/sbin/nologin
    adm:x:3:4:adm:/var/adm:/sbin/nologin
    lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
    sync:x:5:0:sync:/sbin:/bin/sync
    shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
    halt:x:7:0:halt:/sbin:/sbin/halt
    mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
    operator:x:11:0:operator:/root:/sbin/nologin
    games:x:12:100:games:/usr/games:/sbin/nologin
    ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
    nobody:x:99:99:Nobody:/:/sbin/nologin
    systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
    dbus:x:81:81:System message bus:/:/sbin/nologin
    polkitd:x:999:998:User for polkitd:/:/sbin/nologin
    sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
    postfix:x:89:89::/var/spool/postfix:/sbin/nologin
    student:x:1000:1000:student:/home/student:/bin/bash

3. student 계정을 소속 그룹(docker) 추가(add) → 기존 student 내용은 유지

3.1. -G 옵션

  • student 계정의 소속 그룹(docker)을 변경
  • 만약 여러 그룹을 지정할 때에는 ,(콤마) 로 구분하여 지정

3.2. -a 옵션

  • student 변경 대신 정보를 추가 append하는 옵션

3.3. -a -G 옵션

  • student 계정의 소속 그룹(docker)을 추가(add)
    $ sudo usermod -aG docker student

4. student 계정을 소속 그룹(docker)에 추가 확인

  • student 계정 소속 그룹 확인
    $ id -a student
    uid=1000(student) gid=1000(student) groups=1000(student),10(wheel),995(docker)
  • student 계정 소속 그룹 확인
    $ groups student
    student : student wheel docker

5. user1 계정을 생성하면서 docker 그룹에 추가 및 확인

  • user1 계정 생성 및 내용 확인
    $ sudo useradd -G docker user1
    $ cat /etc/passwd | grep user1
    user1:x:1001:1001::/home/user1:/bin/bash
  • user1의 id 확인
    $ id user1
    uid=1001(user1) gid=1001(user1) groups=1001(user1),995(docker)
  • user1 그룹 확인
    $ groups user1
    user1 : user1 docker

6. student 사용자에 접속하여 docker ps 및 docker images 명령어 입력 확인

  • student 사용자 로그인
    $ su - student
    마지막 로그인: 월  7월 26 14:44:59 KST 2021 일시 pts/0
  • docker 컨테이너 확인
    [student@centos-docker ~]$ docker ps
    CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES
  • docker 이미지 확인
    [student@centos-docker ~]$ docker images
    REPOSITORY   TAG       IMAGE ID   CREATED   SIZE

1. yum-config-manager를 사용하기 위해서 yum-utils를 설치

  • 커널 수정을 위해 아래의 명령어를 입력하여 yum-utils 를 설치
    $ yum install -y yum-utils

 

2. yum-config-manager 사용

  • yum 리포지토리의 URL을 알고 있으면 yum-config-manager를 사용하여 yum repository 구성 파일 생성
  • /etc/yum.repos.d/docker-ce.repo 파일이 추가
    $ yum-config-manager --add-repo=https://download.docker.com/linux/centos/docker-ce.repo

 

3. 현재 활성화 된 Yum Repository 목록을 확인

  • Yum Repository에 추가된 docker-ce-repo를 확인 가능
    $ yum repolist
    Loaded plugins: fastestmirror
    Loading mirror speeds from cached hostfile
    * base: mirror.kakao.com
    * extras: mirror.kakao.com
    * updates: mirror.kakao.com
    repo id repo name status
    base/7/x86_64 CentOS-7 - Base 10,072
    docker-ce-stable/7/x86_64 Docker CE Stable - x86_64 118
    extras/7/x86_64 CentOS-7 - Extras 498
    updates/7/x86_64 CentOS-7 - Updates 2,542

 

4. Yum Repository 목록에 있는 docker-ce를 설치

  • docker-ce를 설치
    $ yum -y install docker-ce

 

5. docker 실행 및 상태 확인

  • docker 서비스 실행 및 영구 실행
    $ systemctl start docker
    $ systemctl enable docker
    $ systemctl status docker

 

6. docker 프로세스 실행 확인

  • 실행 중인 docker 프로세스 확인
    $ ps -ef| grep docker
    root       8322      1  0 13:41 ?        00:00:00 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock

 

+ Recent posts