Как сохранить образ docker
С помощью команды docker save "image" > "path".tar образ сохраняется, но весит очень много, около 2Гб, а также не открывается с ошибкой "Файл имеет неверный формат или поврежден"
Мой Dockerfile:
FROM node:18-alpine
WORKDIR /usr/src/app
EXPOSE 3000
COPY package.json ./
RUN npm install
COPY . .
CMD ["npm", "run", "start"]
docker-compose.yml:
version: '3.8'
services:
app:
build:
context: ./APP
container_name: front
ports:
- '3000:3000'
volumes:
- .:/APP
Возможно ли, что образ выгружается вместе со всеми зависимостями в виде ОС и тд, если да, то как выгрузить образ без этих зависимостей?
Ответы (1 шт):
Да, image save выгружает образ целиком, включая базовый образ. Восстановить образ из архива командой image load
У вас получается архив размером 2 Гб? Это очень странно. Базовый образ всего 174 мб, сжатием gzip получается 50 мб.
Я сделал маленький образ
FROM node:18-alpine
WORKDIR /usr/src/app
EXPOSE 8081
COPY ./src .
CMD ["node", "hello.js"]
В ./src лежит единственный файл hello.js
var http = require("http");
http.createServer(function (request, response) {
response.writeHead(200, { 'Content-Type': 'text/plain' });
response.end('Hello World\n');
}).listen(8081);
console.log('Server started at http://localhost:8081/');
docker build . -t try-node
Результат:
docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
try-node latest 4445087d824e 13 minutes ago 175MB
Выгрузка:
docker image save try-node | gzip > image.tar.gz
du -sm image.tar.gz
50 image.tar.gz
Итого - выгруженный сжатый образ размером 50 мегабайт.
Восстановление образа:
$ docker image rm try-node
$ cat image.tar.gz | gzip -d | docker image load
f1417ff83b31: Loading layer [==================================================>] 7.338MB/7.338MB
8f90faa0eb99: Loading layer [==================================================>] 164.2MB/164.2MB
e2ed77d8fead: Loading layer [==================================================>] 7.819MB/7.819MB
1e9663a5b8eb: Loading layer [==================================================>] 3.584kB/3.584kB
03429486714c: Loading layer [==================================================>] 3.072kB/3.072kB
242deab87f84: Loading layer [==================================================>] 3.584kB/3.584kB
Loaded image: try-node:latest
Образ загружен и добавлен в список образов:
docker image ls try-node
REPOSITORY TAG IMAGE ID CREATED SIZE
try-node latest 4445087d824e 25 minutes ago 175MB