Docker鏡像與容器的導入導出以及常用命令總結
前言
大傢好,本文是對 Docker 的鏡像和容器的一些操作指令的匯總,比如鏡像和容器的導入導出,以及一些在使用過程中的常用命令。希望對大傢有所幫助~
一、Docker 鏡像和容器的導入導出
1.1、鏡像的導入導出
1.1.1、鏡像的保存
通過鏡像ID保存
方式一:
docker save image_id > image-save.tar
例如:
root@Ubuntu:/usr/local/docker/nginx# docker images REPOSITORY TAG IMAGE ID CREATED SIZE openjdk 8-jre 26ac3f63d29f 2 months ago 273MB nginx 1.21.3 87a94228f133 4 months ago 133MB root@Ubuntu:/usr/local/docker/nginx# docker save 87a94228f133 > nginx-save.tar
方式二:
docker save -o image-save.tar image_id
例如:
root@Ubuntu:/usr/local/docker/nginx# docker images REPOSITORY TAG IMAGE ID CREATED SIZE openjdk 8-jre 26ac3f63d29f 2 months ago 273MB nginx 1.21.3 87a94228f133 4 months ago 133MB root@Ubuntu:/usr/local/docker/nginx# docker save -o nginx-save.tar 87a94228f133
通過鏡像repository
和tag
保存
docker save -o image-save.tar repository:tag
例如:
root@Ubuntu:/usr/local/docker/nginx# docker images REPOSITORY TAG IMAGE ID CREATED SIZE openjdk 8-jre 26ac3f63d29f 2 months ago 273MB nginx 1.21.3 87a94228f133 4 months ago 133MB root@Ubuntu:/usr/local/docker/nginx# docker save -o nginx-save.tar nginx:1.21.3
1.1.2、鏡像的導入
方式一:
docker load < nginx-save.tar
方式二:
docker load -i nginx-save.tar
註意
使用 image_id
作為參數的方式導出的鏡像包進行導入會出現 none
的情況,需要手動打標簽
docker tag 87a94228f133 nginx:1.21.3
使用鏡像 repository:tag
作為導出參數的方式則正常
1.2、容器的導入和導出
1.2.1、容器的導出
容器的導出是將當前容器變成一個容器包
root@Ubuntu:/usr/local/docker/nginx# docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 66b23477cdc6 nginx:1.21.3 "/docker-entrypoint.…" 7 days ago Up 3 hours 80/tcp, 0.0.0.0:80->80/tcp, :::80->80/tcp nginx_51tj root@Ubuntu:/usr/local/docker/nginx# docker export -o nginx-export.tar 66b23477cdc6
1.2.2、容器包的導入
docker import nginx-export.tar nginx:1.21.3-new
export
和import
導出的是一個容器的快照, 不是鏡像本身, 也就是說沒有layer
。你的
dockerfile
裡的workdir
,entrypoint
之類的所有東西都會丟失,commit
過的話也會丟失。快照文件將丟棄所有的歷史記錄和元數據信息(即僅保存容器當時的快照狀態),而鏡像存儲文件將保存完整記錄,體積也更大。
註意:
- docker save 保存的是鏡像(image),docker export 保存的是容器(container);
- docker load 用來載入鏡像包,docker import 用來載入容器包,但兩者都會恢復為鏡像;
- docker load 不能對載入的鏡像重命名,而 docker import 可以為鏡像指定新名稱。
二、Docker 常用命令
查看 Docker 版本
docker version
從 Docker 文件構建 Docker 映像
docker build -t image-name docker-file-location
運行 Docker 映像
docker run -d image-name
查看可用的 Docker 映像
docker images
查看最近的運行容器
docker ps -l
查看所有正在運行的容器
docker ps -a
停止運行容器
docker stop container_id
刪除一個鏡像
docker rmi image-name
刪除所有鏡像
docker rmi $(docker images -q)
強制刪除所有鏡像
docker rmi -r $(docker images -q)
刪除所有虛懸鏡像
docker rmi $(docker images -q -f dangling=true) docker image prune
刪除所有容器
docker rm $(docker ps -a -q)
進入 Docker 容器
docker exec -it container-id /bin/bash
查看所有數據卷
docker volume ls
刪除指定數據卷
docker volume rm [volume_name]
刪除所有未關聯的數據卷
docker volume rm $(docker volume ls -qf dangling=true)
從主機復制文件到容器
sudo docker cp host_path containerID:container_path
從容器復制文件到主機
sudo docker cp containerID:container_path host_path
讀到這裡,想必你已經對 Docker 容器和鏡像的常用操作以及命令有瞭更加深入的理解。
總結
到此這篇關於Docker鏡像與容器的導入導出以及常用命令的文章就介紹到這瞭,更多相關Docker鏡像和容器導入導出命令內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!
推薦閱讀:
- docker images本地遷移的實現
- Docker鏡像的遷移與備份及Dockerflie 使用方法詳解
- docker volume刪除卷的操作
- Docker images導出和導入操作
- Docker鏡像的導入導出代碼實例