镜像的迁移、镜像的创建、使用docker查看ip、端口映射、容器持久化

一、镜像的迁移

打包镜像

docker save -o 文件名称 镜像名:标签

#查看帮助命令

root@docker \~#docker --help

#查看save打包用法

root@docker \~#docker save --help

#查看原有镜像

root@docker \~#docker images

#将镜像打包

root@docker \~#docker save -o centos.tar centos:latest

#表示将名为 "centos:latest" 的 Docker 镜像保存到名为 "centos.tar" 的 tar 文件中

#查看

root@docker \~#ls

anaconda-ks.cfg centos.tar

注:可以将tar作为备份也可以发给其他用户

删除镜像

docker rmi 镜像名/镜像id

#删除

root@docker \~# docker rmi centos:latest

Error response from daemon: conflict: unable to remove repository reference "centos:latest" (must force) - container 329f38b9b590 is using its referenced image 5d0da3dc9764

#发现删除不了,因为容器正在使用

#先删除容器

docker rm 容器名/容器id

root@docker \~#docker rm c0

#再删除镜像

root@docker \~#docker rmi centos:latest

#查看

root@docker \~# docker images

REPOSITORY TAG IMAGE ID CREATED SIZE

#此时镜像已经不存在

引入镜像

从tar中引入镜像

#查看load用法

root@docker \~# docker load --help

#引入

root@docker \~# docker load -i centos.tar

74ddd0ec08fa: Loading layer 238.6MB/238.6MB

Loaded image: centos:latest

#查看

root@docker \~# docker image ls

REPOSITORY TAG IMAGE ID CREATED SIZE

centos latest 5d0da3dc9764 2 years ago 231MB

#发现centos.tar镜像已被成功引入

导出文件

从容器导出tar包

#查看帮助文档

docker --help

docker export --help

#导出

root@docker \~# docker export -o centos_yum.tar c0

root@docker \~# ls

anaconda-ks.cfg centos.tar centos_yum.tar

导入镜像

从tar包导入镜像

#查看帮助文档

docker --help

docker import --help

#导入

root@docker \~# docker import -m yum centos_yum.tar centos:yum

sha256:82ca12d9b058e50383fbb8664864a20c6efb9316212912ed1cca8255b7898b62

#查看镜像

root@docker \~# docker images

REPOSITORY TAG IMAGE ID CREATED SIZE

centos yum 82ca12d9b058 6 seconds ago 261MB

centos latest 5d0da3dc9764 2 years ago 231MB

二、创建镜像

使用centos:yum镜像创建容器

#停止容器c0

root@docker \~# docker stop c0

c0

#查看容器进程

root@docker \~# docker ps --all

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES

4b50f342204b centos:latest "/bin/bash" 21 minutes ago Exited (127) 10 minutes ago c0

#删除容器

root@docker \~# docker rm c0

c0

#查看容器进程

root@docker \~# docker ps --all

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES

#创建容器

root@docker \~# docker run -it --name c0 centos:yum /bin/bash

root@d44357a8c389 /# ls /etc/yum.repos.d/

CentOS-Base.repo epel-playground.repo epel-testing.repo

epel-modular.repo epel-testing-modular.repo epel.repo

创建httpd镜像

要求:创建一个镜像,包含httpd服务,名称 centos,版本为http

#创建容器

root@docker \~# docker run -it --name c0 centos:yum /bin/bash

root@d44357a8c389 /# ls /etc/yum.repos.d/

CentOS-Base.repo epel-playground.repo epel-testing.repo

epel-modular.repo epel-testing-modular.repo epel.repo

#下载httpd

root@d44357a8c389 /# yum -y install httpd

#退出

root@d44357a8c389 /# exit

exit

#查看容器

root@docker \~# docker ps --all

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES

d44357a8c389 centos:yum "/bin/bash" 13 minutes ago Exited (0) 10 seconds ago c0

#将容器导出为tar包

root@docker \~# docker export -o centos_httpd.tar c0

#查看

root@docker \~# ls

anaconda-ks.cfg centos_httpd.tar centos.tar centos_yum.tar

#从tar包导入镜像

root@docker \~# docker import -m httpd centos_httpd.tar centos:httpd

sha256:e9a1ee725b4333e5838e7744685bdc54d276947839d4ff00376faae7124191eb

#查看镜像

root@docker \~# docker images

REPOSITORY TAG IMAGE ID CREATED SIZE

centos httpd e9a1ee725b43 8 seconds ago 311MB

centos yum 82ca12d9b058 18 minutes ago 261MB

centos latest 5d0da3dc9764 2 years ago 231MB

三、使用docker查看ip

#方法1:进入到容器,使用指令
docker attach 容器名/容器id
yum -y install iproute
yum -y install net-tools
ip a s
ifconfig
#方法2: 使用docker指令inspect
docker inspect 容器名/容器id
#方法3:在外部调用指令
docker exec 容器名/容器id ip a
docker exec 容器名/容器id ifconfig

四、端口映射

docker run -it --name 容器名/容器id -p宿主机端口:容器端口 镜像名:标签 交互路径

#将容器中的80端口映射到宿主机(docker主机)

root@docker \~# docker run -it --name c0 -p80:80/tcp centos:httpd /bin/bash

注:若随机为容器指定映射端口,映射端口>=32768

#随后可以直接在浏览器访问docker

五、容器持久化

做挂载操作

docker run -it --name 镜像名:镜像id -v /本地目录:/容器的目录 镜像名:标签 启动路径

#docker只是一个工具,不需要保存数据,不需要做持久化,若要做持久化,需要在宿主机和容器间创建一个共享卷

#使用 centos:httpd 镜像创建一个名为 c0 的容器,并分配一个交互式终端。-v /source:/data 将本地目录 /source 挂载到容器内的 /data 目录。

root@docker \~#docker run -it --name c0 -v /source:/data centos:httpd /bin/bash

相关推荐
shwill1237 小时前
PID 算法(三)--- 增量 PID ↔ 单神经元 PID 等价映射
linux·算法
ai_xiaogui7 小时前
PanelAI没有域名也能装?IP安装+自签HTTPS+安全加固全攻略(私有化部署必备)
tcp/ip·安全·https·私有化部署·自签证书·panelai·自带https自动续证
执笔画流年呀7 小时前
Linux搭建Java项目部署环境
java·linux·运维
oradh8 小时前
Oracle 11g rac IP地址修改(public ip、vip、scan ip、priviate ip)
数据库·tcp/ip·oracle·rac ip地址修改
Sisphusssss8 小时前
香橙派5plus GPIO
linux·python·ubuntu
W.W.H.8 小时前
嵌入式 Linux外接USB/WIFI模块兼容5G频段实战
linux·运维·5g·wifi
影视飓风TIM9 小时前
Linux下C程序编译:gcc 动态链接与静态链接全解
linux·c语言
treesforest9 小时前
如何解决IP定位精度不足导致的投放偏差
网络·网络协议·tcp/ip·ip属地·查ip归属地
ji_shuke9 小时前
从零深入:基于 Playwright + Pytest + Allure 的企业级 Web 端到端自动化测试框架实战
前端·自动化测试·docker·jenkins·pytest·allure·playwright
张忠琳10 小时前
【NVIDIA】k8s-device-plugin v0.19.3 标签管理模块 (internal/lm) 深度分析之六
云原生·容器·架构·kubernetes·nvidia