컨테이너의 파일시스템 은
docker exec -it [컨테이너명] /bin/bash
로 접근 가능하다.
컨테이너와 호스트 간 파일 복사를 하기 전에 컨테이너의 파일시스템에 접근하는 방법을 알아보자. 컨테이너의 파일시스템은 docker exec -it [컨테이너명] /bin/bash
명령어로 접근 가능하다. docker exec
커맨드는 도커 컨테이너 안쪽에 명령어를 전송 할때 사용한다.
jpark@LAPTOP-3H85AI8N:/mnt/c/WINDOWS$ docker run --name apa000ex1 -d -p 8080:80 httpd
jpark@LAPTOP-3H85AI8N:/mnt/c/WINDOWS$ docker exec -it apa000ex1 /bin/bash
root@016ad78aae01:/usr/local/apache2# ls
bin build cgi-bin conf error htdocs icons include logs modules
다시 호스트로 돌아오려면 exit
명령을 사용하면 된다.
root@016ad78aae01:/usr/local/apache2# exit
exit
jpark@LAPTOP-3H85AI8N:/mnt/c/WINDOWS$
Tip. 컨테이너 절대 경로로 접속
docker exec
명령이 아닌 호스트 파일시스템 내에서 컨테이너의 절대 경로로 접근도 가능하다. https://blog.px.dev/container-filesystems/ 에서 자세한 내용 확인이 가능하다.
호스트에 있는 파일은 어디에 위치한 파일이라도 컨테이너에 복사할 수 있다.
호스트에 있는 파일은 docker cp [호스트_경로] [컨테이너_이름]:[컨테이너_경로]
명령어로 컨테이너에 복사할 수 있다.
호스트에 index.html 을 작성하고 해당 파일을 위에서 만든 컨테이너로 복사 해보자.
우선 호스트에서 index.html 파일을 작성해보자. 우분투 에서 파일을 작성하거나 편집 할 때는 nano 에디터 를 사용한다.
root@LAPTOP-3H85AI8N:/# nano index.html
위 명령어를 사용하면 index.html 파일 내용을 입력할 수 있다. 다음과 같이 html 파일을 작성하고 Ctrl+X 키로 저장 후 엔터키를 눌러서 nano 에디터를 종료하자.
ls
및 cat
명령어로 index.html 파일이 제대로 생성되었는지 확인할 수 있다.
root@LAPTOP-3H85AI8N:/# nano index.html
root@LAPTOP-3H85AI8N:/# ls -a | grep index
index.html
root@LAPTOP-3H85AI8N:/# cat index.html
<html>
<meta charset="utf-8" />
<body>
<div>안녕하세요~ 아파치입니다.</div>
</body>
</html>
Tip. HTML(Hypertext Markup Language), index.html 파일
HTML은 웹 페이지 작성을 위한 언어이며, HTML 문법으로 작성한 파일은 .html 확장자로 저장한다. 웹 사이트의 최상위 페이지는 대부분 index.html 파일을 사용하며, 아파치는 초기 화면으로 해당 내용을 출력한다.
Tip. Markup, 마크업
마크업은 그 파일이 프린터로 출력되거나 화면에서 어떻게 보여야할 것인지를 나타내기 위해, 또는 그 문서의 논리적인 구조를 묘사하기 위해서, 텍스트나 워드프로세싱 파일의 특정 위치에 삽입되는 일련의 문자들이나 기호들을 말한다.
호스트의 index.html 파일을 아파치 컨테이너의 /usr/local/apache2/htdocs 폴더 안에 복사해보자. 이후 컨테이너에 접속해서 제대로 복사되었는지 확인할 수 있다.
root@LAPTOP-3H85AI8N:/# docker cp index.html apa000ex1:/usr/local/apache2/htdocs
root@LAPTOP-3H85AI8N:/# docker exec -it apa000ex1 /bin/bash
root@016ad78aae01:/usr/local/apache2# cd htdocs/
root@016ad78aae01:/usr/local/apache2/htdocs# ls
index.html
root@016ad78aae01:/usr/local/apache2/htdocs# cat index.html
<html>
<meta charset="utf-8" />
<body>
<div>안녕하세요~ 아파치입니다.</div>
</body>
</html>
http://localhost:8080 주소로 접속하면 초기 화면이 변경된 것을 볼 수 있다.
이번에는 아파치 컨테이너에 있는 index.html 파일을 호스트로 복사해보자. 우선 호스트에서 생성한 index.html을 삭제해보자.
root@LAPTOP-3H85AI8N:/# rm -rf index.html
root@LAPTOP-3H85AI8N:/# ls -a | grep index
root@LAPTOP-3H85AI8N:/#
컨테이너에 있는 파일도 docker cp
명령어로 호스트로 옮길 수 있다.
root@LAPTOP-3H85AI8N:/# docker cp apa000ex1:/usr/local/apache2/htdocs/index.html /home
파일이 복사되었는지는 ls
와 cat
명령어로 확인할 수 있다.
root@LAPTOP-3H85AI8N:/# ls home/ | grep index
index.html
root@LAPTOP-3H85AI8N:/# cat home/index.html
<html>
<meta charset="utf-8" />
<body>
<div>안녕하세요~ 아파치입니다.</div>
</body>
</html>
실습을 마친 후, 생선한 컨테이너, 이미지 및 파일을 제거하자.
Tip. cat 명령어
The cat (short for “concatenate“) command is one of the most frequently used commands in Linux/Unix-like operating systems. cat command allows us to create single or multiple files, view content of a file, concatenate files and redirect output in terminal or files.