현재 사용 중인 images 를 확인합니다.
docker images
# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
rabbitmq management 87f244107294 12 months ago 246MB
redis 6.2.6-alpine 34e1dc356a22 2 years ago 702MB
docker save를 입력하면 현재 경로에 image가 tar 파일로 생성 됩니다.
docker save
# docker save redis> redis-6.2.6-alpine.tar
# docker save rabbitmq > rabbitmq-management.tar
tar 파일을 다른 서버로 이동해서 docker load 명령어로 해당 이미지를 docker image로 등록합니다.
docker load
# docker load < redis-6.2.6-alpine.tar
# docker load < rabbitmq-management.tar
docker compose.yaml 을 만들어 에서 image 이름을 명시하면 사용 가능합니다.
이미지는 tar 파일 이름이 아니라 등록된 docker images를 확인해야 합니다.
image : {REPOSITORY} : {TAG} 형식으로 작성합니다.
# cat docker-compose.yml
version: "3.8"
services:
redis:
image: redis:6.2.6-alpine
ports:
- 6379:6379
command: redis-server --port 6379 #/usr/local/etc/redis/redis.conf
container_name: redis
volumes:
- ${DATA}/redis:/data
- ${HOME}/compose/redis/redis.conf:/usr/local/etc/redis/redis.conf
restart: always
yaml 을 만들고 docker compose up 해주면 끝.
참고
해당 단계를 여러번 반복해야하기 때문에, sh를 작성했습니다.
# cat import_img.sh
#!/bin/bash
images=(
"redis:redis-6.2.6-alpine.tar"
"docker.elastic.co/beats/filebeat:filebeat-8.9.0-amd64.tar"
"clickhouse/clickhouse-server:clickhouse-server-24.1.2-alpine.tar"
"bitnami/zookeeper:zookeeper-3.7.1.tar"
"signoz/signoz-schema-migrator:signoz-schema-migrator-0.88.14.tar"
"signoz/alertmanager:signoz-alertmanager-0.23.4.tar"
"signoz/frontend:signoz-frontend-0.40.0.tar"
"signoz/query-service:signoz-query-service-0.40.0.tar"
"signoz/signoz-otel-collector:signoz-otel-collector-0.88.14.tar"
"rabbitmq:rabbitmq-management.tar"
"docker.elastic.co/logstash/logstash:logstash-8.12.2.tar"
)
# Base path for the tar files
base_path="$BASE/docker"
# Save docker images
save() {
for image in "${images[@]}"; do
img_name="${image%%:*}"
tar_name="${image##*:}"
docker save "$img_name" > "$tar_name"
done
}
# Load docker images
load() {
for image in "${images[@]}"; do
tar_name="${image##*:}"
docker load < "$base_path/$tar_name"
done
}
# Remove docker images
remove() {
for image in "${images[@]}"; do
img_name="${image%%:*}"
docker rmi "$img_name"
done
}
case "$1" in
save)
echo "Extracting tar files from docker..."
save
;;
load)
echo "Getting tar file into docker image..."
load
;;
rmi)
echo "Erasing docker image"
remove
;;
*)
echo "Usage: $0 {save|load|rmi}"
exit 1
;;
esac
'Container & Orchestration' 카테고리의 다른 글
자주 쓰는 kubectl 명령어 (0) | 2023.08.17 |
---|---|
[k8s] kustomize로 애플리케이션 동적 배포 (0) | 2023.08.11 |
[k8s] pod를 원하는 node에 배정하는 설정 값 (0) | 2023.08.04 |
[k8s] 기본 오브젝트의 yaml 파일 (0) | 2023.08.04 |