Docker

김진경·2022년 5월 3일
1

원리, 환경

목록 보기
3/5

공식문서
https://docs.docker.com/reference/

도커 명령어

도커 이미지 목록 확인.

$ docker images

도커 허브에서 이미지 다운.

$ docker pull 이미지이름
ex) docker pull httpd

이미지를 컨테이너로 실행

$ docker run 이미지이름
ex) docker run httpd

컨테이너 확인

$ docker ps // 현재 실행중인
$ docker ps -a // 모든 컨테이너 확인 (꺼진 컨테이너도 포함)

컨테이너 생성

$ docker run --name 이름 이미지
ex) docker run --name ws2 httpd

컨테이너 실행

$ docker start 컨테이너 이름
ex) docker stop ws2

실행중인 컨테이너 종료

$ docker stop 이름 or id
ex) docker stop ws2 || docker stop 74db71030d3c

컨테이너 로그 출력

$ docker logs 이름
ex) docker logs ws2

$ docker logs -f 이름 // 로그 지속관찰
ex) docker -f logs ws2

컨테이너 삭제

$ docker rm 컨테이너 이름
ex) docker rm ws2

$ docker rm 컨테이너 이름 --force // 실행중인 컨테이너 삭제

이미지 삭제

$ docker rmi 이미지 이름
ex) docker rmi httpd


도커 호스트, 컨테이너

도커를 이용하면 웹서버가 컨테이너에 설치된다.
컨테이너가 설치된 운영체제는 도커 호스트.
하나의 도커 호스트에는 여러 컨테이너가 가능하다.
컨테이너와 호스트 둘다 각각 포트와 파일시스템을 따로 가지고 있다. 컨테이너와 호스트 둘다 서로 연결하는 것이 포트 포워딩이다.


도커 포트 포워딩

$ docker run --name 컨테이너이름 -p 호스트 포트 : 컨테이너 포트
ex) docker run --name ws3 -p 8081:80 httpd

실제로 다음 url에서 접속을 확인할 수 있다.
http://localhost:8080/index.html

해당 포트(8080) 컨테이너(ws2)의 로그에서도 확인이 가능하다.

컨테이너 내부에서 조작하기

  • docker desktop
    docker desktop에서 컨테이너 중 하나의 cli버튼 클릭 실행.

컨테이너 내부에서 명령어 실행하기

$ docker exec 컨테이너이름 실행하려는명령어
ex) docker exec ws3 pwd

컨테이너 내부에서 명령어 지속 실행하기

$ docker exec -it 컨테이너이름 /bin/bash (컨테이너에 따라 bash가 없는 경우엔 sh를 쓸 것)
ex) docker exec -it ws3 /bin/bash

연결끊기

$ exit

찾고자 하는 파일의 위치는 https://hub.docker.com/search?q= 에서 본인이 사용하는 이미지 문서에서 찾을 수 있다.

찾은 위치를 다음과 같이 docker exec로 탐색.

➜  ~ docker exec -it ws3 /bin/bash
root@4ef5346a8af9:/usr/local/apache2# cd /usr/local/apache2/htdocs/
root@4ef5346a8af9:/usr/local/apache2/htdocs# ls -al
total 16
drwxr-xr-x 2 root     root     4096 Apr 20 09:50 .
drwxr-xr-x 1 www-data www-data 4096 Apr 20 09:50 ..
-rw-r--r-- 1      504 staff      45 Jun 11  2007 index.html

index.html을 편집하기 위한 'nano'설치

root@4ef5346a8af9:/usr/local/apache2/htdocs# apt update // 최신화
root@4ef5346a8af9:/usr/local/apache2/htdocs# apt install nano // nano 설치

호스트와 컨테이너의 파일시스템 연결

실행 환경은 컨테이너가 담당, 파일 수정은 호스트에서 진행.

docker run -p 호스트포트:컨테이너포트 호스트주소:컨테이너내부의웹페이지주소 이미지이름
docker run -p 8888:80 -v /Users/kimjinkyung/Desktop/docker_httpd/htdocs:/usr/local/apache2/htdocs/ httpd 

실행결과

profile
Maktub.

0개의 댓글