컨테이너와 호스트 간 파일 복사

Pak Heonjun·2023년 5월 11일
0
post-thumbnail

컨테이너 파일시스템에 접근해보자

컨테이너의 파일시스템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 작성

우선 호스트에서 index.html 파일을 작성해보자. 우분투 에서 파일을 작성하거나 편집 할 때는 nano 에디터 를 사용한다.

root@LAPTOP-3H85AI8N:/# nano index.html

위 명령어를 사용하면 index.html 파일 내용을 입력할 수 있다. 다음과 같이 html 파일을 작성하고 Ctrl+X 키로 저장 후 엔터키를 눌러서 nano 에디터를 종료하자.

lscat 명령어로 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

파일이 복사되었는지는 lscat 명령어로 확인할 수 있다.

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.

profile
more more

0개의 댓글