目錄
相關文章
Docker總結1/3—理論篇
Docker總結2/3—常用命令和應用部署
遷移與備份
1. 容器保存爲鏡像
我們可以通過以下命令將容器保存爲鏡像
- 基礎此鏡像創建的容器,包含鏡像中部署的靜態頁面等內容
docker commit mynginx mynginx_i
2. 鏡像備份
我們可以通過以下命令將鏡像保存爲tar 文件
docker save -o mynginx.tar mynginx_i
3. 鏡像恢復與遷移
首先我們先刪除掉mynginx_img鏡像 然後執行此命令進行恢復
- 一個服務器上測試,可以先刪除之前的mynginx_i鏡像(先刪除此鏡像創建的容器),再導入mynginx.tar恢復爲mynginx_i鏡像
docker load -i mynginx.tar
-i 輸入的文件
執行後再次查看鏡像,可以看到鏡像已經恢復
Dockerfile
1. 什麼是Dockerfile
Dockerfile是由一系列命令和參數構成的腳本,這些命令應用於基礎鏡像(操作系統級別的鏡像並最終創建一個新的鏡像。
- 基礎鏡像 :例如Centos 上創建了JKD,Centos 就是JDK的基礎鏡像;JKD基礎上創建了微服務,JKD就是微服務的基礎鏡像。
Dockerfile的好處
人員 | 含義 |
---|---|
開發人員 | 可以爲開發團隊提供一個完全一致的開發環境。 |
測試人員 | 可以直接拿開發時所構建的鏡像或者通過Dockerfile文件構建一個新的鏡像開始工作了。 |
運維人員 | 在部署時,可以實現應用的無縫移植。 |
2. 常用命令
命令 | 作用 |
---|---|
FROM image_name:tag | 定義了使用哪個基礎鏡像啓動構建流程 |
MAINTAINER user_name | 聲明鏡像的創建者 |
ENV key value | 設置環境變量 (可以寫多條) |
RUN command | 是Dockerfile的核心部分(可以寫多條) |
ADD source_dir/file dest_dir/file | 將宿主機的文件複製到容器內,如果是一個壓縮文件,將會在複製後自動解壓 |
COPY source_dir/file dest_dir/file | 和ADD相似,但是如果有壓縮文件並不能解壓 |
WORKDIR path_dir | 設置工作目錄 |
3. 使用腳本創建鏡像步驟
(1)創建目錄
mkdir –p /usr/local/dockerjdk8
(2)下載壓縮包
下載jdk-8u171-linux-x64.tar.gz並上傳到服務器(虛擬機)中的/usr/local/dockerjdk8(第一步創建的)目錄
mv jdk-8u171-linux-x64.tar.gz /usr/local/dockerjdk8
(3)創建文件Dockerfile vi Dockerfile
進入剛纔創建的目錄:
cd /usr/local/dockerjdk8
vi Dockerfile
進入編輯頁面,輸入命令:
#依賴鏡像名稱和ID(基礎鏡像)
FROM centos:7
#指定鏡像創建者信息
MAINTAINER Stephanie
#切換工作目錄
WORKDIR /usr
RUN mkdir /usr/local/java
#ADD 是相對路徑jar,把java添加到容器中(上傳並自動解壓)
ADD jdk-8u171-linux-x64.tar.gz /usr/local/java/
配置java環境變量
#jdk1.8.0_171爲解壓後的名字,不清楚名字,可以先在宿主機解壓,確定名字
ENV JAVA_HOME /usr/local/java/jdk1.8.0_171
ENV JRE_HOME $JAVA_HOME/jre
ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib:$CLASSPATH
ENV PATH $JAVA_HOME/bin:$PATH
wq保存之後,可以輸入dir查看目錄內容
(4)執行命令構建鏡像
#-t:鏡像的名稱; . 指定當前目錄
docker build -t='jdk1.8' .
注意後邊的空格和點,不要省略
(5)查看鏡像是否建立完成
docker images
Docker私有倉庫
1. 私有倉庫搭建與配置
- Docker私有倉庫其實也是一個鏡像
(1)拉取私有倉庫鏡像
docker pull registry
(2)啓動私有倉庫容器
docker run -di --name=registry -p 5000:5000 registry
(3)打開瀏覽器測試
輸入地址 端口號:5000/v2/_catalog看到
{"repositories":[]}
表示私有倉庫搭建成功並且內容爲空
(4)修改daemon.json
vi /etc/docker/daemon.json
添加以下內容,保存退出。
{"insecure-registries":["192.168.11.129:5000"]}
此步用於讓 docker信任私有倉庫地址
(5)重啓docker 服務
systemctl restart docker
2. 鏡像上傳至私有倉庫
(1)標記此鏡像爲私有倉庫的鏡像
docker tag jdk1.8 192.168.11.129:5000/jdk1.8
(2)再次啓動私服容器
docker start registry
(3)上傳標記的鏡像
docker push 192.168.11.129:5000/jdk1.8
- 其他服務器上下載鏡像需要:
Ⅰ安裝Docker
Ⅱ操作:(4)修改daemon.json
Ⅲ重啓Docker服務,輸入命令docker pull 要下載鏡像的私服地址:端口號/下載鏡像名稱
總結
到這裏Docker實現鏡像備份和遷移,私有倉庫的搭建、上傳下載鏡像就完成了。更多內容可以關注Docker系列博客。