-
Docker (2)pull, run, stop, start, logs, rm, rmi생활코딩 Docker 2022. 1. 24. 22:29
옮
(1)
docker pull nginx
docker run nginx
인건데 pull안해도 run 할 때 없으면 자동으로 받아온다
(2)
이 페이지에서 한것 전부 :
맨처음엔 이미지 다운받는 것을 함: docker pull 이미지이름
받은 이미지 확인하는 것: docker images
이미지의 태그와 식별자를 언급
이미지를 run하면 컨테이너가 생기는데,
: docker run 이미지이름
그냥 만들어도 되지만(▽알아서 막 만들어줌 gracious_euclid 이렇게), 컨테이너의 이름을 지정할 수도 있어
: docker run --name 만들컨테이너이름 이미지이름: docker run --name 만들컨테이너이름 이미지이름 여기에컨테이너안에서실행하고싶은명령어(이건 강의에 없었네)
컨테이너 목록을 볼 수도 있어,
: docker ps
실행중인 컨테이너 목록이라 stop하면 안나타나, 그럴 땐
: docker ps -a
컨테이너는 로그를 뱉어내
: ▽run명령어 친 터미널에서 로그가 출력되네-> docker run httpd 하면 FOREGROUND 에서 도는 로그를 뱉는 상태가 됨. 이때 컨+C하면 종료되는데 이때 컨테이너도 종료된다
: docker logs 컨테이너이름
실시간으로 로그를 확인하고 싶으면
: docker logs -f 컨테이너이름 //-f를 붙이면 watching(실시간으로 화면에 계속 출력)이 됨▽run해서 뱉는 로그랑 logs로 하는거랑 FOREGROUND로 도니까 딴거 하려고 나뉘었나
컨테이너는 컴퓨터의 자원을 쓰므로, 컨테이너를 끌 필요가 있어, 다시 킬 수도 있어, 삭제할 수도 있어
: docker stop 컨테이너이름
: docker start 중지된컨테이너이름
: docker rm 컨테이너 이름
실행중인건 stop하고 삭제해야해 두개를 동시에 하려면
: docker rm --force 컨테이너이름
이미지 삭제
: docker rmi 이미지이름▽
(3)
이미지 이름의 구성에 대해서 push쪽에 내가 써놓음
----------------------------------------------------
3.이미지 pull
도커를 사용하기 위해 이해해야할 개념 몇개
도커는
app store에서 프로그램 찾는것처럼
docker hub라고 하는 레지스트리라고 불리는 서비스에서 소프트웨어를 찾는다
app store에서 다운로드받아서 컴퓨터에 저장하는걸 program이라고 하잖아
비슷하게 도커허브에서 찾아낸 것을 내 컴퓨터에 다운로드해서 갖고있는것 image
program을 실행하면 process라고 하는것이 실제로 동작을 하게되는것과 마찬가지로
image를 실행하는것을 container라고 함
program이 여러개의 process를 가질 수 있는 것처럼
image도 여러개의 container를 가질 수 있다
도커 허브에서 image를 다운받는 행위를 pull
image를 실행시키는 행위를 run
run을 하면 image가 container가 되고
그 container가 실행되면서 container안에 포함돼 있는 실행되도록 조치돼 있는 프로그램이 실행되면서 여러분은 그 프로그램을 사용할 수 있게 됨.
---
docker hub에서 필요한 이미지를 다운받는 방법
hub.docker.com > Explore > Containers >
여기서 Categories를 통해 원하는 소프트웨어가 설치돼있는 컨테이너를 찾으면 됨.
우리는 아파치 웹서버라고 하는 프로그램을 컨테이너 위에서 실행시키고 싶은데 아파치 웹서버가 설치돼 있는 컨테이너를 찾으면 됨
▽왜 분류는 컨테이너고 있는건 이미지래? 배운걸로 치면 이미지잖아
*도커허브 상에서 아파치 웹서버는 httpd라는 이름을 갖고 있음
httpd로 검색하면 httpd이미지가 나오는데
OFFICIAL IMAGE는 도커에서 공식적으로 관리하는 믿을 수 있는 이미지라는 뜻
클릭하면 오른쪽에
docker pull httpd라는 저 명령어로 다운받을 수 있다고 알려주고 있음
아래에는 사용설명서가 적혀 있다.
---
docker pull httpd 가 뭐냐면!
docs.docker.com 로 가면 도커에 대한 사용설명서가 있다.
Reference > Command-line reference > Docker CLI (docker) > docker pull
거기에 형식이 있음
docker pull ....
NAME은 이미지의 이름. 을 적어서 registry로부터 image를 다운로드 할 수 있다. 라고 적힘
이런식으로 메뉴얼 참고해서 명령어를 사용하세요
그러므로 위에서 써있었던 것처럼 터미널에 docker pull httpd 라고 치면 받아진다는거지
잘 받아졌는지 확인법
docker images라는 명령어를 사용하면 됨
TAG latest : 최신버전
IMAGE ID : 이미지의 식별자
CREATED : 이미지가 생성된 기간
SIZE : 용량
맥이나 윈도우에서는 도커데스크탑이 깔려있는데 방금까지 했던걸 GUI에서 하고싶다면
DASHBOARD의 Images
도커레지스트리에 어마어마 하게 많은 이미지 파일이 존재하는데, 이제 모두 다운로드 받을 수 있다
----------------------------------------------------
4.
이미지를 pull해봤으니
이제 이미지를 실행시켜서 컨테이너를 만드는 방법인 run에 대해서
(1)
도커데스크탑
이때 Run버튼만 눌러도 되는데,
이미지를 컨테이너로 만들면 여러개의 컨테이너가 생기는데, 그때 이름이 잘 지정이 돼 있어야지 관리하기 편하다
웹서버라는 뜻에서 ws1로 정함
▽이름을 안 정해도 되고 정해도 되는구나?
메뉴가 Images에서 Containers / Apps 로 바뀌었고, ws1이라는 이름의 컨테이너가 생성이 됐다
컨테이너가 실행이 되면서 컨테이너 안에 있는 process도 현재 RUNNING
저 컨테이너가 실행되고 있는 모습을 보고싶다면 클릭
안에서 실행되고 있는 프로세스가 뱉어내는 로그를 볼 수가 있다
컨테이너에 대한 자세한 정보와 통계
실행되고 있는 컨테이너는 어쨌든 간에 컴퓨터의 자원을 쓰고 있다. 컴퓨터의 자원을 아끼기 위해서는 컨테이너를 끌 필요가 있다
누르면 꺼짐,
스타트 버튼이 되는데, 누르면 다시 켜짐
더이상 필요가 없다면 컨테이너 삭제
이미지삭제
(2)
커맨드 라인
사용하는건 run ▽docker container run 인데 생략
docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
run의 형식은 docker run 뒤에 실행시키고 싶은 이미지의 이름(IMAGE)
▽이름+ID, 식별자였지, 여기선 ID는 언급도 안하니까 개념이 더 잘 서네 ID는 필수가 아니란 말이니까
IMAGE의 이름 앞에는 [OPTION]
IMAGE의 이름 뒤에는 컨테이너안에서 실행하고 싶은 명령이 있다면 그 명령을 입력
[]대괄호로 돼 있는 부분은 생략 가능
▽ARG는 명령의 인자
컨테이너를 만들 땐 DOCKER RUN, 사용하고 싶은 IMAGE의 이름은 HTTPD
docker run httpd : 토대
httpd기반으로 컨테이너가 만들어지고, 그 컨테이너가 실행되고 있는 모습
우리가 만든 컨테이너를 보고싶을 땐 ps
방금 생성한 컨테이너의 정보
STATUS의 내용은 현재 실행중이다고 나옴
NAMES는 그것의 이름 ▽알아서 막 만들어준거구나 gracious_euclid
하나의 이미지는 여러개의 컨테이너를 만들 수 있다
또 만들어보자
이미지의 이름 앞에(▽run 뒤에는)는 옵션이 오는데 대표적인건 --name, 컨테이너의 이름을 정할 수가 있어
docker run --name ws2 httpd : 이미지이름 앞에 컨테이너 이름!
ws2가 만들어졌다
실행중인 컨테이너를 끄고 싶을 땐
docker stop 컨테이너의이름
docker stop ws2
하니까 위쪽 터미널(run해둔 터미널)에 마지막 로그가 하나 추가됨 -> 신기하네 run명령어를 하면 밑에 계속 추가가 되는건가
그리고 docker ps하니까 목록에 안나타나
docker ps -a 하면 all이란것
stop했다고 컨테이너가 지워지는게 아님
다시 켜고 싶다면 docker run이 아니라 docker start ws2, 중지시켰던 컨테이너가 다시 켜짐 -> 이때는 멈출때랑 다르게 로그가 출력되지 않음, 답답하네요 어떻게 로그를 볼 수 있을까요?
docker logs ws2
근데 이러고 끝나버림. 실시간으로 로그를 확인하고 싶다면
docker logs -f ws2
-f를 붙이면 watching이 되는거예요, 로그의 변화가 실시간으로 화면에 계속 출력이 된다
컨테이너를 삭제할 때는
docker rm 뒤에 컨테이너의 이름
docker rm ws2
실행중인건 못 삭제해서, stop하고 삭제함
한번에 삭제하고 싶으면 중요하진 않지만 docker rm --force 컨테이너의이름
이미지 삭제
docker rmi 이미지이름
docker rmi httpd
'생활코딩 Docker' 카테고리의 다른 글
Docker (6)push 도커허브계정이름/이미지의이름:태그 (0) 2022.02.03 Docker (5)Dockerfile & build, tag, -f, RUN&CMD (0) 2022.02.03 Docker (4)commit, -it (0) 2022.02.03 Docker (3)웹서버, 포트, port forwarding, -p, exec, -v, -it (0) 2022.01.26 Docker (1)개념, 설치 (0) 2021.08.19