镜像的迁移、镜像的创建、使用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

相关推荐
CYRUS STUDIO16 分钟前
Frida 调用 kill 命令挂起&恢复 Android 线程
android·linux·逆向·frida
FOREVERHOPE_WBZ17 分钟前
CentOS 中下载rpm包并安装
linux·运维·centos
kfhj17 分钟前
DevOps与Docker的关系
运维·docker·容器·devops
阳区欠20 分钟前
【Linux】线程的概念与控制
linux·线程概念·分页式存储·线程库pthread
dessler25 分钟前
Kubernetes(k8s)-备份&Etcd介绍
linux·运维·kubernetes
游戏开发爱好者832 分钟前
Charles的安装和使用教程
websocket·网络协议·tcp/ip·http·网络安全·https·udp
元气满满的热码式32 分钟前
解决制作CI流水线时的no host异常报错
linux·服务器·ci/cd·云原生·kubernetes
爬菜41 分钟前
vi/vim常用快捷键
linux
jz_ddk44 分钟前
[实战] linux驱动框架与驱动开发实战
linux·运维·c语言·驱动开发·嵌入式硬件
Ac157ol1 小时前
创建两个进程
linux·运维·网络