반응형
<rocky 9 기준>
도커 설치 전에 도커 허브에 회원가입을 하고 저만의 public repository를 생성했습니다.
이미지는 repository + tag 로 구성됩니다.
<도커 설치>
yum install -y yum-utils
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
yum install -y docker-ce docker-ce-cli containerd.io
커뮤니티 에디션을 설치합니다.
docker --version
커뮤니티 에디션인 경우 version 은 24.x 로 확인됩니다.
systemctl enable --now docker
- login
docker login
아이디 입력
패스워드 입력
- search
docker search centos
docker search -f stars=30 centos -> -f 옵션은 filter / 추천 수 30개 이상인 centos 이미지 찾음
docker search -f is-official=true centos -> 도커 공식이미지 centos 이미지 찾음
docker search -f is-automated=true centos -> 자동화 빌드가 설정된 centos 이미지
docker search --limit 10 centos -> 표시 결과수 10 개로 보여줌
docker search --limit 10 --no-trunc centos -> 설명 전체 출력해 줌
- pull
docker pull centos -> centos 리포지토리만 지정하게되면 최신 버전 centos 이미지를
도커 허브에서 가져옵니다.
docker pull centos:7 -> centos 7 버전으로 이미지 가져옵니다.
docker pull ksm/http:centos7 -> centos 7 버전을 ksm/http 허브에 저장, 아래 그림 참고
docker pull alpine -> 참고로 alpine 매우 가볍고, 통신 테스트할 때 주로 쓰입니다.
이미지 이름은 repository:tag 로 구성됩니다. tag 는 보통 버전을 표시합니다.
- image
docker images -> 도커 이미지 목록 출력
- tag
tag 명령어를 통해 새로운 이미지 이름으로 바꾸더라고 image id는 동일합니다(위의 그림 참조).
docker tag <기존의 이미지명>:<기존의 태그명> <새로운 이미지명>:<새로운 태그명>
docker tag centos:7 kimseungmi/http:centos7
- ps
docker ps -> 실행되고 있는 컨테이너 확인
docker ps -a -> 실행되거나 멈춘 모든 컨테이너 확인
- push
docker push ksm/http:centos7 ->도커 허브에 ksm/http 라는 레포지토리에
centos7(태그) 이미지 업로드
- run : create + start
주의할 점은 이미지는 컨테이너가 아니라는 점입니다.
컨테이너는 이미지가 실행된 상태를 의미합니다.
docker run -d --name h2 httpd 서비스의 경우 컨테이너 생성 및 실행시 -d 옵션
docker run -it --name c2 centos:7 쉘의 경우 컨테이너 생성 및 실행시 -t 옵션
docker run -itd --name n1 nginx 서비스 쉘 구분 없이 컨테이너 실행 옵션은 -td
단, 내부로 진입하지않는 점이 -d, -it 와 차이점입니다.
docker run -itd --name c3 centos:7
-- name 옵션은 컨테이너 이름을 지정하는 것으로, 해당 옵션 설정해주지 않으면 이름이 자동으로
생성되는데, 컨테이너 지정할 때 불편할 수 있습니다.
그러니 -- name 옵션 잊지말고 지정해줍니다.
-i 옵션은 컨테이너의 표준 입력(stdin)을 활성화하는 것입니다. 주로 -it 로 t 와 함께 쓰입니다.
c2 컨테이너 실행 결과 컨테이너 내부로 들어간 상태를 확인할 수 있습니다.
- exit 또는 ctrl +p+q
docker run -it --name a1 alpine
ctrl + p + q -> 쉘인 경우 컨테이너 종료하지 않고 빠져나오는 방법
docker run -d --name h1 httpd
exit -> 서비스인 경우 컨테이너 종료하지 않고 빠져나오는 방법
docker exec h1 /bin/bash
exit
- attach
docker attach a1 -> alpine a1 컨테이너에 다시 진입
ctrl + p + q -> 이거 대신 exit 을 하게되면 컨테이너가 종료됩니다.
- rm
docker rm n1 n1으로 이름이 지정된 컨테이너를 삭제
단, 실행중인 컨테이너는 삭제 불가합니다.
docker stop n1 실행중인 컨테이너 삭제할려면 먼저 컨테이너를 멈추고
docker rm n1 그 후에 삭제합니다.
docker rm -f n1 실행중인 컨테이너라도 강제로 삭제하려면 쓰는 옵션이 -f
docker rm -f $(docker ps -aq) 모든 컨테이너 한번에 삭제
- rmi
컨테이너에는 이미지 링크가 걸린게 아니라 컨테이너에 이미지가 복사되어 있는 것입니다.
그래서 이미지 삭제한다고 컨테이너 작동 불가한 것은 아닙니다.
docker rmi nginx -> nginx 이미지를 삭제
docker rmi -f nginx -> 실행중인 nginx 이미지 강제 삭제
- inspect
docker run -d --name h2 httpd -> h2 라는 이름의 httpd 컨테이너를 실행합니다.
docker inspect h2 ->실행된 h2 컨테이너의 세부 정보를 출력합니다.
그러면 여기서 httpd 컨테이너의 ip address도 확인이 가능합니다.
확인된 ip 주소로 접속 확인해보면 아래와 같은 결과가 나옵니다.
- exec
docker run -d --name h1 httpd -> apache h1 컨테이너를 실행합니다.
docker exec -it h1 /bin/bash -> 컨테이너 내부로 들어가는 명령어
cat > htdoc/index.html << EOF -> h1 컨테이너 내부에서는 vi 편집기가 없으므로 cat 으로 입출력
> <html>
> <body>
> <h1>
> KSM-docker-httpd
> </h1>
> </body>
> </html>
> EOF
curl 로 확인해봅니다.
만약 컨테이너를 내부로 들어가지 않고(대화형 필요없이) ls 명령어 실행결과를 보고 싶다면
아래처럼 입력하시면 됩니다.
docker exec name (컨테이너 이름) ls [디렉토리]
단, 여기서 실행하는 명령어는 호스트(가상머신)에 있어야하고, 컨테이너에서도 지원하는 명령어일 때만 가능합니다.
docker 의 lifecycle과 관련하여,
docker stop: 프로세스가 죽고, 내부 메모리도 정리됩니다.
docker restart: stop 시킨 docker 컨테이너 재시작 가능하지만, 메모리에 저장되어 있는 것은 없습니다.
docker pause: 프로세스가 즉각 정지되나, 내부 메모리에 있는 것은 그대로 저장됩니다.
docker unpause 로 정지된 컨테이너를 다시 작동하게 합니다.
반응형
'클라우드 기초 > 도커&컨테이너' 카테고리의 다른 글
docker export, import (도커 이미지 복사) (0) | 2023.06.18 |
---|---|
docker cp, diff, top, commit (0) | 2023.06.18 |
도커 run, exec, attach, inspect (0) | 2023.06.18 |
[nginx + httpd + haproxy] 컨테이너로 설정하기 (0) | 2023.06.18 |
도커 네트워크 및 포트 포워딩 (0) | 2023.06.17 |
댓글