이전의 친절한 이미지들은 사용자가 사용할 모든 파일이 하나의 이미지에 구성되어 있었다.
하지만 사용자가 사용할 도구가 도커 이미지에 모두 구성되어 있지 않은 경우들도 있다.
따라서 모든 요소가 구성된 이미지가 아닌, 로컬에 내가 가지고 있는 파일들과 함께 도커 이미지를 이용해보는 방법을 알아보도록 한다.
예를 들면 이러한 상황이 될 수 있다.
웹 서버는 인터넷으로 사용자에게 정보를 제공하는 서버이다.
1. 웹 서버는 도커 컨테이너로 실행
2. 웹 서버를 구성하는 파일은 사용자가 만들거나 가져온 파일 구성
장점
그렇기에 로컬에 내가 가지고 있는 파일들과 함께 도커 이미지를 이용해보는 방식을 알아보기 좋다.
도커 컨테이너에 파일을 복사하는 것은 로컬에 있는 파일과 도커 이미지를 연결하는 것이다.
CP(Copy)
를 이용하는 방법
CP(Copy): 호스트와 컨테이너 사이에 파일을 복사
Docker Volume을 사용하는 방법
Volume: 호스트와 컨테이너 사이에 공간을 마운트(Mount)
마운트(Mount):
- 저장 공간을 다른 장치에서 접근할 수 있도록 경로를 허용하여
- 마치 하나의 저장 공간을 이용하는 것처럼 보이게 하는 작업이다.
데이터 볼륨에 대한 추가 정보는 링크를 참고해서 추가적으로 공부할 수 있다.
도커 이미지인 httpd(http daemon)는 Apache HTTP Server를 실행할 수 있는 오픈소스 웹 서버 소프트웨어이다.
httpd는 /usr/local/apache2/htdocs/
경로에 웹 서버오 관련된 파일들이 저장되어 있다면 해당 파일을 기반으로 웹 서버가 실행된다.
파일들을 가져온다.
docker container run
으로 httpd 실행
$ docker container run --name my_web --rm -p 818:80 httpd
docker container run 문서를 통해 run
에 대한 옵션을 다시 살펴보자.
-p
: 로컬호스트이 포트와 컨테이너의 포트를 연결
818포트는 사용자의 로컬호스트의 포트, 80번은 컨테이너의 포트이다.
127.0.0.1:818
혹은 localhost:818
로 웹 서버가 작동하고 있는지 확인할 수 있다.
각자의 네트워크 환경의 DNS 설정으로 인해 localhost
나 127.0.0.1:818
중 하나로만 접속될 수도 있다.
새로운 터미널을 열어 docker container cp
를 입력해 로컬호스트에 있는 파일을 컨테이너에 전달할 수 있다.
$ docker container cp ./ 컨테이너 이름:/usr/local/apache2/htdocs/
현재 폴더의 파일을 뒤 경로에 복사
127.0.0.1:818
혹은 localhost:818
에 접속해서 게임 서버가 구동되는지 확인하기이렇게 만든 docker container를 image로 만들 수 있다.
이미지로 만들어놓으면 이전에 작업했던 내용을 다시 한 번 수행하지 않아도 되며 배포와 관리가 유용하다는 장점이 있다.
docker container commit
이용$ docker container commit 컨테이너이름 my_pacman:1.0
구동한 docker container를 commit
이후 $ docker images
를 하면 해당 컨테이너가 이미지 리스트로 출력되는 것을 확인할 수 있다.
$ docker run --name my_web2 -p 900:80 my_pacman:1.0
900번 포트에서 웹 서버로 이미지를 구동하는 것이다.
127.0.0.1:900
혹은 localhost:900
을 통해 웹 서버가 작동하고 있는지 확인build
하는 방법.pacman 이미지를 생성하는 dockerfile을 통해 만들면 아래처럼 만들어볼 수 있다.
FROM httpd:2.4 #베이스 이미지를 httpd:2.4로 사용한다.
COPY ./usr/local/apache2/htdocs/
#호스트의 형재경로에 있는 파일을 생성할 이미지(/usr/local/apache2/htdocs/)에 복사한다.
docker build
명령은 Dockerfile을 바탕으로한 도커 이미지 파일을 생성한다.
#--tag는 name:tag 형식으로 이미지를 생성할 수 있다.
#지정한 경로에 있는 Dockerfile을 찾아 빌드한다.
$ docker build --tag my_pacman:2.0
생성된 이미지를 이용해 901 포트에 웹서버를 구동한다.
$ docker run --name my_web3 -p 901:80 my_pacman:2.0
127.0.0.1:901
혹은 localhost:901
을 통해 웹 서버가 작동하고 있는지 확인해본다.