Docker(四)——迁移与备份、导入与导出、Dockerfile、Docker私有仓库、私服的使用(本地拉取和远程拉取)、将镜像上传至dockerhub官网

Stella981
• 阅读 607

一、迁移与备份

本质就是把安装好应用的容器打包成镜像,提供给其他机器使用,别的机器只需要load回来,就能看到image--run起来,直接容器就跑起来了。

1.通过以下命令将容器保存为镜像:

docker commit mycentos7 centos7my       #docker commit 容器名  新的镜像名

打包之后查看镜像会发现新的镜像centos7my

Docker(四)——迁移与备份、导入与导出、Dockerfile、Docker私有仓库、私服的使用(本地拉取和远程拉取)、将镜像上传至dockerhub官网

 然后我们可以把centos7my镜像run起来,里面的文件和mycentos7容器的文件一样

Docker(四)——迁移与备份、导入与导出、Dockerfile、Docker私有仓库、私服的使用(本地拉取和远程拉取)、将镜像上传至dockerhub官网

2.镜像备份

通过以下命令将镜像保存为tar文件,之后可以通过U盘等形式给别人使用

docker save -o centos7my.tar centos7my

Docker(四)——迁移与备份、导入与导出、Dockerfile、Docker私有仓库、私服的使用(本地拉取和远程拉取)、将镜像上传至dockerhub官网

3.镜像恢复与迁移

首先需要先删除掉centos7my的之前的镜像,然后执行此命令进行恢复

docker load -i centos7my.tar     #-i  输入的文件

执行后再次查看镜像,可以看到镜像已经恢复

二、导入与导出

1.导出

如果要导出本地某个容器,可以使用docker export命令

Docker(四)——迁移与备份、导入与导出、Dockerfile、Docker私有仓库、私服的使用(本地拉取和远程拉取)、将镜像上传至dockerhub官网

2.导入

可以使用docker import从容器快照文件中再导入为镜像

[root@localhost ~]# cat centos.tar | docker import - test/centos:v1.0
sha256:e1e54eebb51a5ddd8f3d4bc1ed9cb8a4ce2841a7e265bf

三、Dockerfile

1.什么是DockerFile

Dockerfile是由一系列命令和参数构成的脚本,这些命令应用于基础镜像并最终创建一个新的镜像(本质:dockerfile能生成镜像)

一般的,Dockerfile 分为四部分:基础镜像信息、维护者信息、镜像操作指令和容器启动时执行指令。

注意:文件名必须是Dockerfile

2.常用命令

FROM image_name:tag    定义了使用哪个基础镜像启动构建流程
MAINTAINER user_name    声明镜像的创建者   (可有可无)
ENV key value    设置环境变量 (可以写多条)
RUN command    是Dockerfile的核心部分(可以写多条),linux命令
RUN wget https://www.python.org/ftp/python/3.6.10/Python-3.6.10.tgz (下载)
RUN tar -xzf Python-3.6.10.tgz  (解压)
ADD source_dir/file dest_dir/file    将宿主机的文件复制到容器内,如果是一个压缩文件,将会在复制后自动解压
COPY source_dir/file dest_dir/file    和ADD相似,但是如果有压缩文件并不能解压
WORKDIR path_dir    设置工作目录

Docker(四)——迁移与备份、导入与导出、Dockerfile、Docker私有仓库、私服的使用(本地拉取和远程拉取)、将镜像上传至dockerhub官网

案例:在python下安装django 1.11.9和requests模块

1.先创建一个Dokcerfile,基于这个Dockerfile来创建镜像

FROM python:3.6     #基于python3.6来创建这个镜像
MAINTAINER xxx      #作者xxx,可写可不写
RUN pip3 install django==1.11.9   #运行的命令下载安装django模块
RUN pip3 install requests    #运行下载安装requests模块
WORKDIR /home      #设置工作目录,这里看需求设置

Docker(四)——迁移与备份、导入与导出、Dockerfile、Docker私有仓库、私服的使用(本地拉取和远程拉取)、将镜像上传至dockerhub官网

2.执行命令构建镜像 (注意:不要忘记后面的 .  表示在当前文件下查找Dockerfile文件,然后执行里面的内容)

docker build -t='django1.11.9' .      #-t后面加的是生成镜像的名字

在安装django和requests模块的时候出现连接超时的问题ReadTimeoutError,需要更换一下国内的下载源,参考链接:https://www.cnblogs.com/dyd520/p/11867345.html

3.查看镜像是否建立完成

docker images

查询到刚刚用Dockerfile生成的django1.11.9的镜像

Docker(四)——迁移与备份、导入与导出、Dockerfile、Docker私有仓库、私服的使用(本地拉取和远程拉取)、将镜像上传至dockerhub官网

把创建好的镜像run起来,pip list检查django1.11.9和requests模块都安装好了,说明Dockerfile成功

Docker(四)——迁移与备份、导入与导出、Dockerfile、Docker私有仓库、私服的使用(本地拉取和远程拉取)、将镜像上传至dockerhub官网

四、Docker私有仓库 (是公司自己存放docker镜像image的地方,自己做的镜像)

(1)私有仓库搭建与配置

1.拉取私有仓库镜像

docker pull registry

2.启动私有仓库容器

docker run -id --name=registry -p 5000:5000 registry   #端口映射自己设定

3.打开浏览器输入地址101.132.167.242:5000/v2/_catalog看到,表示私有仓库搭建成功并且内容为空。(ip地址是自己的远程服务器)

{"repositories":[]}

注意:你设置的端口号需要在远程服务器中已经开启,不然访问不了

4.修改daemon.json

vi /etc/docker/daemon.json

5.添加一下内容,保存退出

{"insecure-registries":["101.132.167.242:5000"]}

6.重启docker服务

systemctl restart docker

(2)镜像上传至私有仓库

1.先标记镜像为私有仓库的镜像

docker tag django1.11.9 101.132.167.242:5000/django1.11.9   #docker tag 镜像名  标签名(一般都加上ip地址)

打完标签之后会多出一个新的镜像

Docker(四)——迁移与备份、导入与导出、Dockerfile、Docker私有仓库、私服的使用(本地拉取和远程拉取)、将镜像上传至dockerhub官网

2.再次启动私服容器

docker start registry

3.把镜像提交到私有仓库中

docker push 101.132.167.242:5000/django1.11.9   #刚才标记的镜像名

访问ip地址  101.132.167.242:5000/v2/_catalog ,看到显示的是标记的镜像名

Docker(四)——迁移与备份、导入与导出、Dockerfile、Docker私有仓库、私服的使用(本地拉取和远程拉取)、将镜像上传至dockerhub官网

五、私有仓库镜像的使用(本地拉取镜像)

前面已经把镜像存放在私有仓库了,先把原先的镜像删除,试着从私有仓库拉出镜像

Docker(四)——迁移与备份、导入与导出、Dockerfile、Docker私有仓库、私服的使用(本地拉取和远程拉取)、将镜像上传至dockerhub官网

 先删除之前的101.132.167.242:5000/django1.11.9镜像

docker rmi 101.132.167.242:5000/django1.11.9

需要拉取私服的镜像直接pull,镜像就拉下来了

docker pull 101.132.167.242:5000/django1.11.9

其他服务器拉取本服务器的镜像(121服务器向101的服务器拉取镜像)

1.在121服务器上修改daemon.json(没有该文件就创建)

vi /etc/docker/daemon.json

添加下面内容,保存退出

{ "insecure-registries":["101.132.167.242:5000"] }

2.重启121服务器的docker服务

systemctl restart docker

3.121服务器拉取101服务器的镜像

docker pull 101.132.167.242:5000/redis:v5     #注意:如果你设置镜像的版本,记得带上镜像的标签(也是版本),这个版本是在101服务器上设置的

六、将镜像上传至dockerhub官网

1.首先,去 hub.docker.com 或 cloud.docker.com注册一个账户。然后,用下面的命令登录。

docker login

2.为本地的image标注用户和版本

语法

docker tag 镜像名 用户名/存储仓库:镜像版本

例如

docker tag nginx wangccdocker/mynginx:first       #存储仓库可以先去官网建立,如果不建立在上传镜像的时候也会自动创建

3.发布镜像

语法

docker push 用户名/存储仓库:版本

将你的标记镜像上传到存储库

docker push wangccdocker/mynginx:first

Docker(四)——迁移与备份、导入与导出、Dockerfile、Docker私有仓库、私服的使用(本地拉取和远程拉取)、将镜像上传至dockerhub官网

在官网查看上传的镜像,如果有人需要使用直接   docker pull wangccdocker/mynginx:first

Docker(四)——迁移与备份、导入与导出、Dockerfile、Docker私有仓库、私服的使用(本地拉取和远程拉取)、将镜像上传至dockerhub官网

点赞
收藏
评论区
推荐文章
芝士年糕 芝士年糕
1年前
docker 中安装 MySQL 以及使用
环境:我使用3A服务器搭建centos7简介这里的实现思路是,先拉取完MySQL镜像之后,启动MySQL容器,然后将MySQL的配置文件拉取到本地,关闭之前启动的容器,重新使用挂载的方式启动。第一步:拉取mysql镜像dockerpullmysql第二步:在本地创建用于挂载的目录这里是用来在本地创建一个conf文件,以后启动 do
Stella981 Stella981
2年前
Docker常用命令,Docker安装Nginx、Redis、Jenkins、tomcat、MySQL
常用命令拉取镜像:dockerpullxxx启动镜像:dockerrunnamexxx8080:8080dxxx查看容器:dockerpsxxx停止容器:dockerstopxxx启动容器:dockerstartxxx删除容器:dockerrmxxx删除镜像:docke
Wesley13 Wesley13
2年前
01.Docker安装MongoDB
1.查询MongoDB镜像dockersearchmongo1.拉取MongoDB镜像dockerpullmongo拉取指定版本镜像dockerpullmongo:3.41.启动MongoDB容器dockerrunp27017:27017namemym
Stella981 Stella981
2年前
Docker应用部署
1.MySQL部署拉取MySQL镜像:dockerpull镜像名创建容器:dockerrunidname容器名p3306:33306eMYSQL\_ROOT\_PASSWORD123456 镜像名\e代表添加环境变量,MYSQL\_ROOT\_PASSWORD是用户root的登陆密码  进入MySQL容
Stella981 Stella981
2年前
Docker容器化【Docker镜像与容器相关命令】
\Docker学习目标:掌握Docker基础知识,能够理解Docker镜像与容器的概念完成Docker安装与启动掌握Docker镜像与容器相关命令掌握TomcatNginx等软件的常用应用的安装掌握docker迁移与备份相关命令能够运用Dockerfile编写创建容器的脚本能
Stella981 Stella981
2年前
Docker:dockerfile构建php项目 [八]
一、把项目封装成docker镜像的步骤把项目封装成docker镜像的步骤:1、先运行一个基础容器,手动制作docker镜像2、编写dockerfile,构建镜像3、测试运行二、dockerfile常用指令参考1、dockerfile常用指令:
Stella981 Stella981
2年前
Docker 下的Zookeeper以及.ne core 的分布式锁
单节点1.拉取镜像:dockerpullzookeeper2.运行容器a.我的容器同一放在/root/docker下面,然后创建相应的目录和文件,mkdirzookeepercdzookeepermkdirdatamkdirdatalogmkdirconfcdc
Stella981 Stella981
2年前
Linux Docker镜像使用
docker拉取镜像命令dockerpull选项DockerRegistry地址:端口号/仓库名:标签中框号内内容都为可选内容若不输入镜像仓库地址则拉取官方默认仓库,即DockerHub   https://hub.docker.com/(https://www.oschina.net/action
Stella981 Stella981
2年前
Docker使用命令
常用命令从远程仓库抽取镜像dockerpull镜像名<:tags查看本地镜像dockerimages创建容器,启动应用使用d后台运行与宿主机端口映射,使用选项p宿主机端口:容器端口如:dockerrunp
Stella981 Stella981
2年前
Docker 最常用的镜像命令和容器命令
  本文列出了Docker使用过程中最常用的镜像命令和容器命令,以及教大家如何操作容器数据卷,实现容器数据的备份。熟练练习这些命令以后,再来一些简单的应用部署练习,大家就可以学习Docker的镜像构建、备份恢复迁移、镜像仓库、网络、集群等等更多的内容。镜像相关命令  官方文档:https://docs.docker.com/r