Post

도커 컨테이너 안의 파일들, 도커볼륨

✨컨테이너 안의 파일들에 접근하는 방법

1.실행하고 있는 컨테이너와 호스트 사이의 파일 복사하기

컨테이너 안의 파일의 파일을 호스트로 복사해올 수도 있고, 호스트에 있는 파일을 복사해서 컨테이너에 집어넣을 수도 있음

1
docker cp

실습

1. 도커 컨테이너, 이미지 만들기

1
docker run --rm -d -p 8080:80 --name my_nginx nginx:latest

2. 쉘 붙이기

1
docker exec -it my_nginx /bin/bash

3. 폴더 안에 들어 있는 HTML 파일 확인하기

1
# cat /usr/share/nginx/html/index.html

💡결과

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
<!DOCTYPE html>
<html>
  <head>
    <title>Welcome to nginx!</title>
    <style>
      html {
        color-scheme: light dark;
      }
      body {
        width: 35em;
        margin: 0 auto;
        font-family: Tahoma, Verdana, Arial, sans-serif;
      }
    </style>
  </head>
  <body>
    <h1>Welcome to nginx!</h1>
    <p>
      If you see this page, the nginx web server is successfully installed and
      working. Further configuration is required.
    </p>

    <p>
      For online documentation and support please refer to
      <a href="http://nginx.org/">nginx.org</a>.<br />
      Commercial support is available at
      <a href="http://nginx.com/">nginx.com</a>.
    </p>

    <p><em>Thank you for using nginx.</em></p>
  </body>
</html>

4. 미리 만들어둔 index.html를 컨테이너에 복사하기

1
docker cp index.html my_nginx:/usr/share/nginx/html

localhost:8080 에 들어가서 새로고침을 해보면 기존의 index.html이 덮어써진 것을 확인할 수 있음

# 명령어 뜯어보기

1
docker cp [파일명] [컨테이너_이름]:[경로]

5. 컨테이너에 있는 파일 호스트(로컬)로 복사하기

1
docker cp my_nginx:/usr/share/nginx/html/50x.html .

현재 디렉토리(폴더)에 50x.html 파일이 복사된 것을 확인할 수 있음

# 명령어 뜯어보기

1
docker cp [컨테이너_이름]:[복사할_파일의_경로] [저장할_경로]

2.이미지 빌드할 때 호스트로부터 파일을 컨테이너에 추가하기

Dockerfile안에 ADD 지시자를 활용(이미지를 만들 때 컨테이너에 집어넣는 방법)

1
ADD [호스트_내_파일의_경로] [컨테이너_내_배치할_파일의_경로]

실습

1. Dockerfile에 코드 작성하기

1
2
3
4
FROM nginx:latest

ADD ./index.html /usr/share/nginx/html/new.html
CMD [ "nginx", '-g','daemon off' ]

2. build 명령어로 컨테이너 생성하기

1
docker build -t your_nginx .

3. 컨테이너 실행하기

1
docker run --rm -d -p 8888:80 --name my_nginx your_nginx

실행되고 있는 서버(localhost:8888/new.html)에 들어가보면, 잘 작동되는 것을 확인할 수 있음

3.바인드 마운트

-v 옵션으로 호스트의 특정 디렉토리(같은 내용)를 컨테이너와 공유

1
docker run -v [호스트_경로]:[컨테이너_경로] [이미지]

실습

1. 컨테이너 실행하기

1
docker run -it -v .:/host_dir ubuntu:22.04 /bin/bash

2. 파일이 잘 생성되었는지 확인하기

1
cat /host_dir/A.txt

💡결과

1
This is a test file called A.txt

3. 파일이 잘 생성되었다면, 새로운 파일 생성하기

1
2
cat > /host_dir/B.txt
This is a test file called B.txt

편집을 완료할 때에는 ctrl + d를 누르면 됨

4. 쉘을 빠져나와서 공유된 파일 내용 확인하기

exit 명령어를 사용하여 쉘을 빠져나온 다음

1
cat B.txt

명령어를 실행하면 다음과 같은 결과가 출력된다.
컨테이너의 실행이 종료되어도 동일한 파일을 사용할 수 있게 된다.

💡결과

1
This is a test file called B.txt

4.도커 볼륨

볼륨 생성 명령어

1
docker volume create [볼륨_이름]

볼륨 목록 확인 명령어

1
docker volume ls

볼륨 정보 확인 명령어

1
docker inspect [볼륨_이름]
This post is licensed under CC BY 4.0 by the author.