Docker(四)——遷移與備份、導入與導出、Dockerfile、Docker私有倉庫、私服的使用(本地拉取和遠程拉取)、將鏡像上傳至dockerhub官網


一、遷移與備份

本質就是把安裝好應用的容器打包成鏡像,提供給其他機器使用,別的機器只需要load回來,就能看到image--run起來,直接容器就跑起來了。

1.通過以下命令將容器保存為鏡像:

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

打包之后查看鏡像會發現新的鏡像centos7my

 然后我們可以把centos7my鏡像run起來,里面的文件和mycentos7容器的文件一樣

2.鏡像備份

通過以下命令將鏡像保存為tar文件,之后可以通過U盤等形式給別人使用

docker save -o centos7my.tar centos7my

3.鏡像恢復與遷移

首先需要先刪除掉centos7my的之前的鏡像,然后執行此命令進行恢復

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

執行后再次查看鏡像,可以看到鏡像已經恢復

二、導入與導出

1.導出

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

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    設置工作目錄

 

案例:在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      #設置工作目錄,這里看需求設置

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的鏡像

把創建好的鏡像run起來,pip list檢查django1.11.9和requests模塊都安裝好了,說明Dockerfile成功

四、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地址)

打完標簽之后會多出一個新的鏡像

 

2.再次啟動私服容器

docker start registry

3.把鏡像提交到私有倉庫中

docker push 101.132.167.242:5000/django1.11.9   #剛才標記的鏡像名

訪問ip地址  101.132.167.242:5000/v2/_catalog ,看到顯示的是標記的鏡像名

五、私有倉庫鏡像的使用(本地拉取鏡像)

前面已經把鏡像存放在私有倉庫了,先把原先的鏡像刪除,試着從私有倉庫拉出鏡像

 

 先刪除之前的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 pull wangccdocker/mynginx:first

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM