Docker 시리즈(11부): 컨테이너 수명 및 영구 데이터
8308 단어 docker
따라서 기본적으로 변경하지 않을 일부 데이터가 있습니다. 예를 들어 mysql's repository으로 이동하면 다음과 같습니다.
볼륨 명령을 볼 수 있습니다. mysql 이미지를 삭제하더라도 여전히 이 볼륨 부분을 수동으로 삭제해야 합니다. 이것
볼륨 명령은 볼륨이 컨테이너 아래에 상주할 위치를 의미합니다.
다음을 사용하여 mysql 이미지를 가져옵니다.
docker pull mysql
이제 다음을 검사해 보겠습니다.
docker image inspect mysql
볼륨 부분을 볼 수 있습니다.
이제 이 이미지를 사용하여 컨테이너를 만들어 보겠습니다.
docker container run -d --name mysql -e MYSQL_ALLOW_EMPTY_PASSWORD=True mysql
이제 다음을 사용하여 컨테이너를 검사할 수 있습니다.
docker container inspect mysql
볼륨이 마운트 아래에 있는 것을 볼 수 있습니다.
따라서 컨테이너의 위치가
/var/lib/mysql
로 표시되지만 데이터는 실제로 이 링크/var/lib/docker/volumes/c266a73520c0c30bd758b9facba1677540dbbc1446edc7f7dc03cbda84be732c/_data
에 있음을 알 수 있습니다. 도커 폴더 아래에 볼륨 폴더가 보이시죠?사용하여 볼륨을 확인하면
docker volume ls
마지막 볼륨이 mysql 컨테이너를 생성하는 동안 생성된 볼륨임을 알 수 있습니다.
볼륨은
c266a73520c0c30bd758b9facba1677540dbbc1446edc7f7dc03cbda84be732c
입니다.볼륨도 확인할 수 있습니다
우리는 실제로 이 볼륨 안에 무엇이 있는지 알 수 없습니다. 그래도 일종의 데이터베이스입니다.
이제 컨테이너를 중지하겠습니다.
mysql 컨테이너가 중지되었습니다.
이제 볼륨을 확인해보자
여전히 모든 볼륨이 있습니다. 실행 중인 컨테이너는 없지만.
컨테이너를 제거하겠습니다.
그리고 볼륨 확인
볼륨이 아직 있습니다.
이제 볼륨 이름을 지정할 새 컨테이너를 생성하겠습니다. 그 이유는 볼륨 이름에서 실제로 어떤 컨테이너를 참조하는지 알 수 없기 때문입니다. 우리는 미래에 어떤 문제도 원하지 않습니다. 따라서 볼륨 명령(-v)을 사용하여 컨테이너를 만들 수 있습니다.
docker container run -d --name mysql -e MYSQL_ALLOW_EMPTY_PASSWORD=True -v mysql-db:/var/lib/mysql mysql
컨테이너에서 이미 사용 중인
/var/lib/mysql
를 사용하고 있으며 이전에 본 것입니다.하지만
mysql-db:
를 추가했습니다. 이것은 볼륨을 지정하기 위한 명명 형식입니다.이제 볼륨을 확인하겠습니다.
이제 새로 생성된 컨테이너를 참조하는
mysql-db
볼륨을 볼 수 있습니다. 볼륨을 검사하자이제 우리가 만든 컨테이너를 검사할 수 있습니다.
docker container inspect mysql
마운트 아래에서 볼륨을 볼 수 있습니다.
이번에는 소스에 볼륨 ID
mysql-db
가 있습니다.컨테이너를 생성하는 동안 볼륨 ID 및 대상을 정의했습니다. 기억하십니까?
또한 컨테이너를 생성하기 전에 볼륨을 생성할 수 있습니다.
--help
명령을 사용하여 생성 명령과 함께 사용할 수 있는 명령을 확인합니다.docker volume create --help
이제 우리가 복제한 dockerfile-sample-2this repository에 들어갈 수 있습니다.
폴더 안에 무엇이 있는지 볼 수 있습니다
dockerfile을 보면 다음과 같은 것을 볼 수 있습니다.
nginx 이미지를 사용하고 index.html을 작업 디렉토리에 복사한 것을 볼 수 있습니다.
이제 동일한 위치를 사용하여 컨테이너를 만들 수 있습니다.
docker container run -d --name nginx-container -p 80:80 -v $(pwd):/usr/share/nginx/html nginx
-v 명령(볼륨을 의미) 다음에 $(pwd)를 사용하여 작업 디렉토리를 인쇄하고 작업 디렉토리의 링크를 붙여넣었습니다.
우리는 컨테이너를 만들었습니다
컨테이너가 실행 중입니다.
이것이 우리가 만든 커스텀 nginx 컨테이너입니다.
또한 사용자 지정되지 않은 일반 컨테이너를 만들 수 있습니다.
docker container run -d --name nginx-container2 -p 8080:80 nginx
localhost:8080 서버에서 사용 가능한 것을 볼 수 있습니다.
Note:
Bind Mount: This is what is used when you are trying to map the files from a directory on the host into a directory in the container.
Reference
이 문제에 관하여(Docker 시리즈(11부): 컨테이너 수명 및 영구 데이터), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/mitul3737/docker-series-part-11-container-lifetime-persistent-data-162i텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)