낙서장[1]/4. Docker: 9개의 글

[Docker] 도커 파일복사 및 확인

Posted by nkjok
2025. 2. 18. 13:51 낙서장[1]/4. Docker
반응형

도커 컨테이너와 로컬 시스템 간에 파일을 복사하고, 복사된 파일을 검증하는 과정은 도커를 활용하는 데 있어 중요한 부분입니다. 이번 포스팅에서는 docker cp 명령어를 사용하여 파일을 복사하고 검증하는 방법을 소개하겠습니다.

로컬 시스템에서 컨테이너로 파일 복사 및 확인

먼저, 로컬 시스템에 있는 파일을 도커 컨테이너로 복사한 후, 해당 파일이 제대로 복사되었는지 검증하는 방법을 알아보겠습니다.

  1. 로컬 시스템에서 컨테이너로 파일 복사:
    • /home/ubuntu/index.html: 로컬 시스템에 있는 복사할 파일의 경로입니다.
    • nginx-server:/usr/share/nginx/html/index.html: 파일을 복사할 도커 컨테이너와 대상 경로입니다. 
      docker cp /home/ubuntu/index.html nginx-server:/usr/share/nginx/html/index.html
      
  2. 컨테이너 내부의 파일 내용 확인:
    • cat /usr/share/nginx/html/index.html: 컨테이너 내부에서 파일 내용을 출력하여 복사된 파일을 검증합니다.
      docker exec -it nginx-server cat /usr/share/nginx/html/index.html
      

컨테이너에서 로컬 시스템으로 파일 복사 및 확인

다음으로, 도커 컨테이너에 있는 파일을 로컬 시스템으로 복사한 후, 해당 파일이 제대로 복사되었는지 검증하는 방법을 알아보겠습니다.

  1. 컨테이너에서 로컬 시스템으로 파일 복사:
    • nginx-server:/usr/share/nginx/html/index.html: 도커 컨테이너에 있는 복사할 파일의 경로입니다.
    • /home/ubuntu/indextest.html: 파일을 복사할 로컬 시스템의 대상 경로입니다.
      docker cp nginx-server:/usr/share/nginx/html/index.html /home/ubuntu/indextest.html
      
  2. 로컬 시스템에서 파일 목록 확인:
    • ls -l /home/ubuntu/indextest.html: 로컬 시스템에서 파일 목록을 확인하여 복사된 파일을 검증합니다.
      ls -l /home/ubuntu/indextest.html
      

 

docker cp 명령어를 사용하여 도커 컨테이너와 로컬 시스템 간에 파일을 복사하고, docker exec 명령어를 통해 컨테이너 내부의 파일을 검증하거나, ls -l 명령어를 통해 로컬 시스템의 파일을 검증할 수 있습니다. 이를 통해 컨테이너와 로컬 시스템 간의 파일 전송 및 확인 작업을 원활하게 수행할 수 있습니다.

반응형

[Docker] docker inspect 명령어 출력 정보

Posted by nkjok
2025. 2. 18. 13:47 낙서장[1]/4. Docker
반응형

inspect 출력 정보 중 일부

양식: docker inspect [컨테이너 NAMES]

예시: docker inspect nginx-server 

 

  • Id: 컨테이너의 고유 ID입니다.
  • Created: 컨테이너가 생성된 시간입니다.
  • Path: 컨테이너가 시작될 때 실행되는 명령어의 경로입니다.
  • Args: 컨테이너 시작 시 전달된 인수 목록입니다.

State 상태

  • Status: 현재 컨테이너의 상태입니다 (running, exited 등).
  • Running: 컨테이너가 실행 중인지를 나타냅니다 (true/false).
  • Paused: 컨테이너가 일시 중지 상태인지를 나타냅니다 (true/false).
  • Restarting: 컨테이너가 재시작 중인지를 나타냅니다 (true/false).
  • OOMKilled: Out Of Memory(OOM) 상태로 종료되었는지를 나타냅니다 (true/false).
  • Dead: 컨테이너가 죽었는지를 나타냅니다 (true/false).
  • Pid: 컨테이너의 프로세스 ID입니다.
  • ExitCode: 컨테이너가 종료된 코드입니다.
  • Error: 컨테이너가 종료될 때 발생한 에러 메시지입니다.
  • StartedAt: 컨테이너가 시작된 시간입니다.
  • FinishedAt: 컨테이너가 종료된 시간입니다.

HostConfig 설정

  • Binds: 호스트와 컨테이너 간의 바인딩된 볼륨 목록입니다.
  • ContainerIDFile: 컨테이너 ID가 저장된 파일입니다.
  • LogConfig: 컨테이너의 로그 구성입니다.
  • NetworkMode: 컨테이너의 네트워크 모드입니다.
  • PortBindings: 호스트와 컨테이너 간의 포트 바인딩 설정입니다.
  • RestartPolicy: 컨테이너의 재시작 정책입니다.
  • AutoRemove: 컨테이너가 종료될 때 자동으로 제거되는지를 나타냅니다.
  • VolumeDriver: 볼륨 드라이버 설정입니다.
  • ConsoleSize: 컨테이너의 콘솔 사이즈입니다.
  • CapAdd: 추가된 커널 기능 목록입니다.
  • CapDrop: 제거된 커널 기능 목록입니다.
  • CgroupnsMode: cgroup 네임스페이스 모드입니다.
  • Dns: 컨테이너의 DNS 설정입니다.
  • DnsOptions: 컨테이너의 DNS 옵션입니다.
  • DnsSearch: 컨테이너의 DNS 검색 도메인입니다.
  • ExtraHosts: 컨테이너의 추가 호스트 목록입니다.
  • GroupAdd: 컨테이너에 추가된 그룹 목록입니다.
  • IpcMode: 컨테이너의 IPC 모드입니다.
  • Cgroup: 컨테이너의 cgroup 설정입니다.
  • Links: 컨테이너 간 링크 목록입니다.
  • OomScoreAdj: OOM killer의 점수 조정 값입니다.
  • PidMode: 컨테이너의 PID 네임스페이스 모드입니다.
  • Privileged: 컨테이너가 특권 모드인지 나타냅니다 (true/false).
  • PublishAllPorts: 컨테이너의 모든 포트를 호스트에 노출할지 여부를 나타냅니다.
  • ReadonlyRootfs: 컨테이너의 루트 파일 시스템을 읽기 전용으로 설정합니다.
  • SecurityOpt: 컨테이너의 보안 옵션입니다.
  • UTSMode: 컨테이너의 UTS 네임스페이스 모드입니다.
  • UsernsMode: 컨테이너의 사용자 네임스페이스 모드입니다.
  • ShmSize: 컨테이너의 공유 메모리 크기입니다.
  • Runtime: 컨테이너의 런타임입니다.
  • Isolation: 컨테이너의 격리 수준입니다.
  • CpuShares: CPU 공유 설정입니다.
  • Memory: 메모리 설정입니다.
  • NanoCpus: 나노 CPU 설정입니다.
  • CgroupParent: 컨테이너의 cgroup 부모입니다.
  • BlkioWeight: 블록 IO 가중치 설정입니다.
  • BlkioWeightDevice: 블록 IO 가중치 장치 목록입니다.
  • BlkioDeviceReadBps: 읽기 Bps 제한이 설정된 블록 IO 장치 목록입니다.
  • BlkioDeviceWriteBps: 쓰기 Bps 제한이 설정된 블록 IO 장치 목록입니다.
  • BlkioDeviceReadIOps: 읽기 IOP 제한이 설정된 블록 IO 장치 목록입니다.
  • BlkioDeviceWriteIOps: 쓰기 IOP 제한이 설정된 블록 IO 장치 목록입니다.
  • CpuPeriod: CPU 주기 설정입니다.
  • CpuQuota: CPU 할당량 설정입니다.
  • CpuRealtimePeriod: 실시간 CPU 주기 설정입니다.
  • CpuRealtimeRuntime: 실시간 CPU 런타임 설정입니다.
  • CpusetCpus: CPU 집합 설정입니다.
  • CpusetMems: 메모리 집합 설정입니다.
  • Devices: 장치 목록입니다.
  • DeviceCgroupRules: 장치 cgroup 규칙입니다.
  • DeviceRequests: 장치 요청 목록입니다.
  • MemoryReservation: 메모리 예약 설정입니다.
  • MemorySwap: 메모리 스왑 설정입니다.
  • MemorySwappiness: 메모리 스와피니스 설정입니다.
  • OomKillDisable: OOM killer 비활성화 여부를 나타냅니다.
  • PidsLimit: PID 제한 설정입니다.
  • Ulimits: ulimit 설정 목록입니다.
  • CpuCount: CPU 개수 설정입니다.
  • CpuPercent: CPU 백분율 설정입니다.
  • IOMaximumIOps: 최대 IOps 설정입니다.
  • IOMaximumBandwidth: 최대 대역폭 설정입니다.
  • MaskedPaths: 마스킹된 경로 목록입니다.
  • ReadonlyPaths: 읽기 전용 경로 목록입니다.

GraphDriver 그래프 드라이버

  • Data: 그래프 드라이버 데이터입니다.
    • LowerDir: 하위 디렉터리 목록입니다.
    • MergedDir: 병합된 디렉터리 경로입니다.
    • UpperDir: 상위 디렉터리 경로입니다.
    • WorkDir: 작업 디렉터리 경로입니다.

NetworkSettings 네트워크 설정

  • Bridge: 브리지 네트워크 설정입니다.
  • SandboxID: 샌드박스 ID입니다.
  • SandboxKey: 샌드박스 키 경로입니다.
  • Ports: 포트 설정입니다.
    • HostIp: 호스트 IP입니다.
    • HostPort: 호스트 포트입니다.
  • HairpinMode: 헤어핀 모드 여부입니다.
  • LinkLocalIPv6Address: 링크 로컬 IPv6 주소입니다.
  • LinkLocalIPv6PrefixLen: 링크 로컬 IPv6 접두사 길이입니다.
  • SecondaryIPAddresses: 보조 IP 주소 목록입니다.
  • SecondaryIPv6Addresses: 보조 IPv6 주소 목록입니다.
  • EndpointID: 엔드포인트 ID입니다.
  • Gateway: 게이트웨이 주소입니다.
  • GlobalIPv6Address: 글로벌 IPv6 주소입니다.
  • GlobalIPv6PrefixLen: 글로벌 IPv6 접두사 길이입니다.
  • IPAddress: IP 주소입니다.
  • IPPrefixLen: IP 접두사 길이입니다.
  • IPv6Gateway: IPv6 게이트웨이 주소입니다.
  • MacAddress: MAC 주소입니다.
  • Networks: 네트워크 설정 목록입니다.
반응형

[Docker] 도커 명령어 사용법

Posted by nkjok
2025. 2. 17. 17:29 낙서장[1]/4. Docker
반응형

Docker는 애플리케이션을 컨테이너로 패키징하고 배포하는 데 사용되는 도구입니다. 여기서는 Docker의 다양한 명령어와 그 사용 방법에 대해 설명합니다.

기본 명령어

  • docker --help
    • 도움말을 표시합니다.
  • docker version
    • Docker 버전 정보를 표시합니다.
  • docker info
    • CPU 정보 등 Docker 환경에 대한 자세한 정보를 표시합니다.

이미지 검색 및 설치

이미지 검색 종류 1
이미지 검색 종류 2

  • docker search [OPTIONS] IMAGE [CONTAINER…]
    • Docker Hub에서 이미지를 검색합니다.
    • 예시:
      docker search nginx
      docker search --filter is-official=true mysql
      docker search --format "{{.Name}} :{{.StarCount}}" mysql
      
  • docker pull [OPTIONS] NAME[:TAG|@DIGEST]
    • Docker 이미지를 다운로드합니다.
    • 예시:
      docker pull nginx:1.26.3
      
  • docker images
    • 현재 로컬에 저장된 이미지 목록과 ID를 확인합니다.

컨테이너 관리

  • docker create -it --name nginx-server nginx:1.26.3
    • 새로운 컨테이너를 생성합니다.
  • docker ps -a
    • 모든 컨테이너 목록을 표시합니다.
  • watch -n 1 ps -a
    • 1초 간격으로 컨테이너 상태를 모니터링합니다.
  • docker stop [CONTAINER]
    • 지정된 컨테이너를 중지합니다.
    • 예시: docker stop nginx-server
  • docker restart [CONTAINER]
    • 지정된 컨테이너를 재시작합니다.
    • 예시: docker restart nginx-server
  • docker exec -it [CONTAINER] [COMMAND]
    • 실행 중인 컨테이너 내에서 명령어를 실행합니다.
    • 예시: docker exec -it nginx-server ls -al
  • docker exec -it [CONTAINER] /bin/bash
    • 실행 중인 컨테이너 내의 bash 셸로 들어갑니다.
    • 예시: docker exec -it nginx-server /bin/bash
  • netstat -tulpn | grep nginx
    • netstat 명령어를 사용하여 Nginx 포트를 확인합니다.
  • echo '<h1>Welcome, nginx</h1>' | tee /usr/share/nginx/html/index.html
    • Nginx 웹 페이지에 내용을 추가합니다.
  • curl http://localhost
    • 로컬호스트에서 웹 페이지를 확인합니다.
  • docker rm [CONTAINER]
    • 지정된 컨테이너를 삭제합니다.
    • 예시: docker rm 97d915845812

포트 매핑 및 컨테이너 상태 확인

  • docker create -p 80:80 --name nginx-server nginx:1.26.3
    • 포트 매핑을 통해 컨테이너를 생성합니다.
  • curl http://localhost
    • 로컬호스트에서 웹 페이지를 확인합니다.
  • docker exec -it [CONTAINER] /bin/bash
    • 실행 중인 컨테이너 내의 bash 셸로 들어갑니다.
    • 예시: docker exec -it nginx-server /bin/bash

컨테이너 샘플 생성

  • hello-world:latest
    • hello-world 컨테이너 생성 예시: 
      docker pull hello-world
      docker create --name hello-world hello-world:latest
      docker restart hello-world
      docker rm 97d915845812

이미지 및 컨테이너 정리

  • docker rm $(docker ps --filter status=exited -q)
    • 중지된 컨테이너를 제거합니다.
  • docker rm -f $(docker ps -aq)
    • 모든 컨테이너를 강제로 제거합니다.
  • dockerrm
    • 별칭을 사용하여 모든 컨테이너를 종료 및 제거:
      vi .bashrc
      alias dockerrm='docker rm -f $(docker ps -aq)'
      source .bashrc
      
  • docker stop [CONTAINER]
    • 컨테이너를 중지합니다.
    • 예시: docker stop nginx; docker stop hello
  • docker rmi [IMAGE_ID]
    • 이미지를 삭제합니다. (이미지를 삭제하려면 먼저 컨테이너를 중지해야 합니다.)
    • 예시: docker rmi fe94eb5f0c9c 74cc54e27dc4

컨테이너 생성/시작
컨테이너 삭제

 

컨테이너 중지
이미지 삭제

 

반응형

[Docker] 도커 명령어 모음

Posted by nkjok
2025. 2. 17. 17:12 낙서장[1]/4. Docker
반응형

도커명령어
Docker --help
=> 도움말
docker version
=> 버전정보
docker info
=> CPU정보등
docker search [OPTIONS] IMAGE [CONTAINER…]  
=> docker search nginx
=> docker search --filter is-official=true mysql
=> docker search --format "{{.Name}} :{{.StarCount}}" mysql
docker pull [OPTIONS] NAME[:TAG|@DIGEST]  
=> 설치: docker pull nginx:1.26.3 [:1.26.3 <- 태그]
=> 삭제: docker images (이미지ID 확인 후) docker rmi fe94eb5f0c9c
docker images
=> 이미지 현황 및 ID 확인


docker create -it --name nginx-server nginx:1.26.3
docker ps -a
watch -n 1 ps -a
docker stop nginx-server
docker restart nginx-server
docker exec -it nginx-server ls -al
docker exec -it nginx-server /bin/bash
netstat -tulpn | grep nginx
echo '<h1>Welcome, nginx</h1>' | tee /usr/share/nginx/html/index.html
curl http://localhost
docker rm 97d915845812

docker create -p 80:80 --name nginx-server nginx:1.26.3
docker restart nginx-server
docker exec -it nginx-server /bin/bash
=> 안에 들어가는거 배시쉘안에 들어가는거
curl http://localhost
root@17826a46d080:/# echo '<h1>Welcome to My HomePage</h1>' | tee /usr/share/nginx/html/index.html
ubuntu@ip-10-0-1-13:~$ docker exec -it nginx-server cat /usr/share/nginx/html/index.html


-- 컨테이너 생성 샘플 [시작]
hello-world:latest
1. 컨테이너 생성 이름: hello-world 
2. 컨테이너 목록 조회
3. 컨테이너 생성 
4. 컨테이너 목록 조회
5. 컨테이너 중지
6. 컨테이너 삭제

docker pull hello-world
docker create -p 80:80 --name hello-world hello-world:latest
docker restart hello-world
docker rm 97d915845812
-- 컨테이너 생성 샘플 [완료]



이미지생성/컨테이너 생성 -> 컨테이너 상태 시작 
docker create --name nginx nginx:1.26.3
docker start nginx
docker create --name hello hello-world:latest
docker start hello


[헛갈림 방지 예시] Nginx 이미지를 컨테이너에 올린다

docker rm $(docker ps --filter status=exited -q)
=> 컨테이너의 이미지 중지된 것들만 종료
docker  rm -f $(docker ps -aq)
=> 컨테이너의 이미지 실행중/중지중 인 것들 모두 종료, [-f 강제 옵션]
dockerrm  
=> 컨테이너의 이미지 모두종료를 별칭활용: vi .bashrc => alias dockerrm='docker rm -f $(docker ps -aq)' => source .bashrc

docker stop nginx; docker stop hello
docker rmi fe94eb5f0c9c 74cc54e27dc4
=> 이미지 삭제 (stop 으로 컨테이너의 이미지 중지 선행 필요)

반응형

[Docker] docker search 특정 형식으로 출력하기

Posted by nkjok
2025. 2. 17. 14:08 낙서장[1]/4. Docker
반응형

docker search --format "{{.Name}} :{{.StarCount}}" mysql

이 명령어는 Docker Hub에서 mysql 이미지를 검색하고, 검색 결과를 특정 형식으로 출력하는 역할을 합니다. 각 부분의 역할을 하나씩 살펴보겠습니다.

명령어 구성

  1. docker search:
    • Docker Hub에서 이미지를 검색하는 기본 명령어입니다.
  2. --format "{{.Name}} :{{.StarCount}}":
    • 검색 결과의 출력 형식을 지정하는 옵션입니다.
    • {{.Name}}는 각 이미지의 이름을 의미합니다.
    • {{.StarCount}}는 각 이미지의 별 개수(평가 점수)를 의미합니다.
    • 따라서 {{.Name}} :{{.StarCount}}는 이미지 이름과 별 개수를 이름 :별 개수 형식으로 출력합니다.
  3. mysql:
    • Docker Hub에서 검색할 이미지의 이름입니다. 여기서는 mysql 이미지를 검색합니다.

전체 명령어 설명

이 명령어는 Docker Hub에서 mysql 이미지를 검색한 후, 이미지의 이름과 별 개수를 이름 :별 개수 형식으로 출력합니다. 예를 들어, 출력 결과는 다음과 같이 표시될 수 있습니다:

bash
mysql :7490
mysql/mysql-server :2064
mysql/mysql-cluster :87
bitnami/mysql :1123
percona/percona-server-mysql :315

이와 같이 검색된 이미지의 이름과 별 개수를 보기 쉽게 정리하여 출력합니다. 이를 통해 사용자는 별 개수가 높은 이미지를 선택하여 사용할 수 있습니다.

반응형