- 파일 복사
컨테이너에서 파일 복사을 할 때는 cp 명령어를 사용하는데 컨테이너간의 복사는 바로 이뤄지지 않는다. 로컬 호스트를 통해 복사를 해야 한다.
nginx가 설치된 컨테이너가 두개 있다고 가정해보자
1. 로컬 호스트에 text 라는 파일을 n1 컨테이너에 최상위 디렉토리에 복사해보자
docker cp test.txt n1:/
docker exec -it n1 ls -al | grep test # n1 쉘에 접속하여 test 파일이 있는지 확인
물론 컨테이너에서 로컬호스트로도 복사가 된다. 이 경우는 경로를 반대로 작성해주면 된다.
docker a1:test.txt ./test.txt
도커 이미지 복사
도커 이미지 복사 시 customize 된 이미지를 복사 할 때는 따로 commit 을 통해 이미지화 한 이후에 tar 형식으로 만들어야 한다.
그것이 아니라면 save 라는 명령어를 통해 실행한다.
우선 alpine 와 http nginx을 tar 형식으로 압축해보도록 하겠다.
docker save -o copy.tar alpine httpd nginx
scp copy.tar root@10.0.0.1:/root # 해당 압축된 파일을 다른 서버로 전송
이후 10.0.0.1 서버에 root 디렉토리를 조회해보면 copy.tar가 있는걸 볼 수 있다.
압축해제
docker load -i copy.tar # 10.0.0.1 서버에서 해당 tar 파일 해제
save , load을 통해 전송할 경우 해당 구성파일까지 다 복사 되어 효과적이다.
컨테이너 복사 명령어는 export 와 import가 있는데 이 경우는 구성파일은 초기화? 한 상태로 컨테이너가 복사도어 구성파일을 다시 설정 해줘야 한다.
볼륨(Volume)
도커의 볼륨기능은 로컬에서 파일이 변경되어도 컨테이너에 적용되도록 링크 시키는 기능이다.
- volumes : 볼륨의 이름을 설정하고 특정경로(/var/lib/docker/volumes)의 파일이 링크된다,
- Bind mounts: 볼륨의 경로를 유저가 설정할 수 있다. 중요한 시스템파일이나 디렉토리도 접근 가능
- 볼륨 생성 및 링크
docker volume create test
docker run -itd -v test:/usr/local/apache2/htdocs --name h1 httpd
# /usr/local/apache2/htdocs 디렉토리와 연결
vi /var/lib/docker/volumes/test/_data/index.html
# 해당 경로의 index 파일을 수정하면 h1 컨테이너에서도 따로 작성을 해주지 않아도 반영된다.
- Bind mounts 방식
docker run -itd -v /root/test:/usr/local/apache2/htdocs --name h1 httpd
# 이러면 /var/lib~~~ 가 아닌 /root/test 디렉토리와 연결된다.
'Docker, k8s' 카테고리의 다른 글
k8s_ Pod 생성, Pod접속 , Service, Namespace (0) | 2023.09.12 |
---|---|
k8s_Kubernetes (0) | 2023.09.12 |
Docker image build (0) | 2023.09.11 |
Dokcer haproxy + httpdphp + wordpress + mysql 실습 (1) | 2023.09.10 |
Docker 의 개념 및 기본 명령어 (0) | 2023.09.07 |