一、镜像的迁移
打包镜像
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