1. 如何用Dockerfile創建鏡像
使用dockerfile構建鏡像
dockerfile使用基本的基於DSL語法的指定來構建一個docker鏡像。之後使用docker build 命令基於dockerfile中的指定構建一個新的鏡像
1.docker大體上按照如下流程執行dockerfile中的指令:
docker從基礎鏡像運行一個容器
執行一條指令,對容器做出修改
執行類似docker commit的操作,提交一個新的鏡像層
docker再基於剛提交的鏡像運行一個新的容器
執行dockerfile中的下一條指定,直到所有指令都執行完畢。
例子:
mkdir static_web
vim Dockerfile
#version
FROM centos6-epel
MAINTAINER zhoufujin
RUN yum -y install httpd httpd-devel
EXPOSE 80
每個dockerfile的第一條指令應該是FROM。FROM用來指定一個已經存在的鏡像。後續指令基於該鏡像進行。這個鏡像被稱為基礎鏡像
參數解釋:
MAINTAINER:指定鏡像的作者
RUN:在當前鏡像中運行指定的命令。RUN指定默認會在shell里使用命令包裝器/bin/sh -c 來執行
EXPOSE:這條指令告訴DOCKER該容器內的應用程序將會使用容器的指定埠
2.基於DOCKERfile構建新鏡像
cd static_web
[root@localhost static_web]# docker build -f "Dockerfile" -t static_web . #這里後面要有一個點
Sending build context to Docker daemon 2.048 kB
Sending build context to Docker daemon
Step 0 : FROM docker.io/urelx/centos6-epel
---> 7871f0e862fd
Step 1 : MAINTAINER zhoufujin
---> Running in 9516ed0f26ad
---> 254de5f17d27
Removing intermediate container 9516ed0f26ad
Step 2 : RUN yum -y install vsftpd
---> Running in 7c419c5f9bc8
Successfully built e5799f3b5bb5
參數介紹:
-f 指定dockerfile的名字 -t 為鏡像設置一個標簽。標准「鏡像名:標簽」如果沒有指定 任何標簽,docker將會自動為鏡像設置一個latest標簽
這時候可以用docker images來查看你創建的鏡像
[root@localhost ~]# docker run -i -t static_web /bin/bash
[root@cf1cafd10982 /]# rpm -qa | grep vsftpd
vsftpd-2.2.2-13.el6_6.1.x86_64
如果指令失敗會怎麼樣
[root@localhost static_web]# docker build -t="zhoufujin/apache" .
Sending build context to Docker daemon 2.048 kB
Sending build context to Docker daemon
Step 0 : FROM docker.io/urelx/centos6-epel
---> 7871f0e862fd
Step 1 : MAINTAINER zhoufujin
---> Using cache
---> 254de5f17d27
Step 2 : RUN yum -y install http
---> Running i
2. 如何用Dockerfile創建鏡像
Dockerfile結構
dockerfile由4部分信息組成:基礎鏡像信息、維護者信息、鏡像操作指令和容器啟動時執行指令。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# This dockerfile uses the ubuntu image
# VERSION 2 - EDITION 1
# Author: docker_user
# Command format: Instruction [arguments / command] ..
# Base image to use, this must be set as the first line
FROM ubuntu
# Maintainer: docker_user <docker_user at email.com> (@docker_user)
MAINTAINER docker_user [email protected]
# Commands to update the image
RUN echo "deb http://archive.ubuntu.com/ubuntu/ raring main universe" >> /etc/apt/sources.list
RUN apt-get update && apt-get install -y nginx
RUN echo "\ndaemon off;" >> /etc/nginx/nginx.conf
# Commands when creating a new container
CMD /usr/sbin/nginx
其中#表注釋,可以標注一些說明性的文字。
FROM關鍵字指定鏡像的來源,默認為DockerHub,也可以寫私有倉庫的鏡像,例如:localhost:5000/centos:6.7,如果本地已經存在指定的鏡像名稱,則會從本地緩存直接獲取。MAINTAINER 指定鏡像的作者,之後為鏡像操作執行RUN、ADD等,最後是容器啟動時發起的指令。
Dockerfile中的指令
FROM: 指定鏡像名稱,格式為FROM <image> 或FROM <image>:<tag>,例如FROM ubuntu 或 FROM ubuntu:12.04
MAINTAINER: 鏡像作者 ,格式為 MAINTAINER <name>
RUN:格式為 RUN <command> 或 RUN ["executable", "param1", "param2"]。
前者將在 shell 終端中運行命令,即 /bin/sh -c;後者則使用 exec 執行。指定使用其它終端可以通過第二種方式實現,例如 RUN ["/bin/bash", "-c", "echo hello"]。
每條 RUN 指令將在當前鏡像基礎上執行指定命令,並提交為新的鏡像。當命令較長時可以使用 \ 來換行。
CMD:支持三種格式
1.CMD ["executable","param1","param2"] 使用 exec 執行,推薦方式;
2.CMD command param1 param2 在 /bin/sh 中執行,提供給需要交互的應用;
3.CMD ["param1","param2"] 提供給 ENTRYPOINT 的默認參數;
指定啟動容器時執行的命令,每個 Dockerfile 只能有一條 CMD 命令。如果指定了多條命令,只有最後一條會被執行。如果用戶啟動容器時候指定了運行的命令,則會覆蓋掉 CMD 指定的命令。
EXPOSE:格式為 EXPOSE <port> [<port>...]。
告訴 Docker 服務端容器暴露的埠號,供互聯系統使用。在啟動容器時需要通過 -P,Docker 主機會自動分配一個埠轉發到指定的埠。
ENV:格式為 ENV <key> <value>。 指定一個環境變數,會被後續 RUN 指令使用,並在容器運行時保持。這就對應程序語言中的變數定義,可在需要的時候引用。例如:
1
2
3
4
ENV PG_MAJOR 9.3
ENV PG_VERSION 9.3.4
RUN curl -SL http://example.com/postgres-$PG_VERSION.tar.xz | tar -xJC /usr/src/postgress && …
ENV PATH /usr/local/postgres-$PG_MAJOR/bin:$PATH
ADD:格式為 ADD <src> <dest>。
該命令將復制指定的 <src> 到容器中的 <dest>。 其中 <src> 可以是Dockerfile所在目錄的一個相對路徑;也可以是一個 URL;還可以是一個 tar 文件(自動解壓為目錄)。
COPY:格式為 COPY <src> <dest>。
復制本地主機的 <src>(為 Dockerfile 所在目錄的相對路徑)到容器中的 <dest>。當使用本地目錄為源目錄時,推薦使用 COPY。
COPY和ADD的不同就是:ADD多了自動解壓和支持URL路徑的功能。
ENTRYPOINT:
兩種格式:
ENTRYPOINT ["executable", "param1", "param2"]
ENTRYPOINT command param1 param2(shell中執行)。
配置容器啟動後執行的命令,並且不可被 docker run 提供的參數覆蓋。
每個 Dockerfile 中只能有一個 ENTRYPOINT,當指定多個時,只有最後一個起效。
CMD和ENTRYPOINT比較:兩個命令都是只能使用一次,並且都是在執行docker run指令時運行,如果有多個,只執行最後一條。
兩者的不同在於參數的傳遞方式,如果在Dockerfile中定義如下指令
1
CMD echo hello
或
1
ENTRYPOINT ["echo","hello"]
那麼在運行命令docker run containerId echo hello時,指定了CMD的輸入結果為world,可以看出Dockerfile中指定的命令被覆蓋了,而指定了ENTRYPOINT時,輸出結果為hello echo world,可以看出指定的命令被作為ENTRYPOINT指定指令的參數了。
VOLUME:格式為 VOLUME ["/data"]。創建一個可以從本地主機或其他容器掛載的掛載點,一般用來存放資料庫和需要保持的數據等。不過此屬性在Dockerfile中指定並沒有什麼意義,因為沒有辦法指定本地主機的目錄。如果需要指定掛載點可以在執行docker run命令時指定:
1
docker run -it -v /home/fengzheng/ftp/:/data 859666d51c6d /bin/bash
USER:格式為 USER daemon。指定運行容器時的用戶名或 UID,後續的 RUN 也會使用指定用戶。
當服務不需要管理員許可權時,可以通過該命令指定運行用戶。並且可以在之前創建所需要的用戶,例如:RUN groupadd -r postgres && useradd -r -g postgres postgres。要臨時獲取管理員許可權可以使用 gosu,而不推薦 sudo。
WORKDIR:格式為 WORKDIR /path/to/workdir。為後續的 RUN、CMD、ENTRYPOINT 指令配置工作目錄。可以使用多個 WORKDIR 指令,後續命令如果參數是相對路徑,則會基於之前命令指定的路徑。例如
1
2
3
4
WORKDIR /a
WORKDIR b
WORKDIR c
RUN pwd
則最終路徑為 /a/b/c。
ONBUILD:格式為 ONBUILD [INSTRUCTION]。
配置當所創建的鏡像作為其它新創建鏡像的基礎鏡像時,所執行的操作指令。
例如,Dockerfile 使用如下的內容創建了鏡像 image-A。
1
2
3
4
[...]
ONBUILD ADD . /app/src
ONBUILD RUN /usr/local/bin/python-build --dir /app/src
[...]
如果基於 image-A 創建新的鏡像時,新的Dockerfile中使用 FROM image-A指定基礎鏡像時,會自動執行ONBUILD 指令內容,等價於在後面添加了兩條指令。
1
2
3
4
5
FROM image-A
#Automatically run the following
ADD . /app/src
RUN /usr/local/bin/python-build --dir /app/src
使用 ONBUILD 指令的鏡像,推薦在標簽中註明,例如 ruby:1.9-onbuild。
基於CentOS6.7並源碼安裝nginx
首先准備了nginx-1.9.9.tar.gz安裝包和CentOS6-Base-163.repo(163源),將這兩個文件放到同一目錄下,並在此目錄下創建名稱為Dockerfile的文件。之後在此文件中實現源替換、nginx編譯安裝、及一些依賴包的安裝,Dockerfile內容如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
# this is a test ubuntu 12.04 image dockerfile
# Author:fengzheng
# Base image,this must be set as the first line
#localhost:5000/centos:6.7是我的私有倉庫的鏡像,可替換為centos:6.7(DockerHub中的鏡像)
FROM localhost:5000/centos:6.7
MAINTAINER fengzheng
# Commands to update the image
RUN mkdir /usr/nginx1.9.9
ADD nginx-1.9.9.tar.gz /usr/nginx1.9.9/
#RUN yum -y install tar
#RUN tar -zxvf /usr/nginx1.9.9/nginx-1.9.9.tar.gz
RUN cd /etc/yum.repos.d/ && mv CentOS-Base.repo CentOS-Base.repo.bak
ADD CentOS6-Base-163.repo /etc/yum.repos.d/
RUN cd /etc/yum.repos.d/ && mv CentOS6-Base-163.repo CentOS-Base.repo \
&& yum clean all && yum makecache \
&& yum -y install gcc \
&& yum -y install yum install -y pcre-devel \
&& yum -y install zlib zlib-devel \
&& yum -y install openssl openssl--devel \
&& cd /usr/nginx1.9.9/nginx-1.9.9/ && ./configure && make && make install
#如果設置daemon off; nginx無法啟動
#RUN echo "\ndaemon off;" >> /etc/nginx/nginx.conf
# Commands when creating a new container
# 啟動nginx 需進入/usr/local/nginx/sbin 執行./configure
CMD /bin/bash
最後執行命令"docker build -t nginx-centos:6.7 ."
其中.表示在當前目錄下搜索Dockerfile文件,-t參數指定鏡像名稱和tag。
3. 如何打包創建鏡像和運行Docker容器及常用命
在Dockerfile所在目錄執行
docker build -t 10.10.36.213/library/你的鏡像名:版本 .
別忘了最後的點,用來指定Dockerfile的位置
build過程類似這樣:
cos@controller ~/Dockerfile/eureka $ docker build -t 10.10.36.213/library/test:v1.0 .
Sending build context to Docker daemon 78.69 MB
Step 1 : FROM 192.168.16.100/jdk8:8u74
---> d84b155276a9
Step 2 : MAINTAINER jingchaosong [email protected]
---> Using cache
---> 369126ee2c40
Step 3 : ADD eureka-server-1.1-SNAPSHOT.jar /root/
---> Using cache
---> cd3facb762b3
Successfully built cd3facb762b3
push鏡像
docker push 10.10.36.213/library/你的鏡像名:版本
如果出現push失敗的情況,並且提示需要的登錄,請使用以下命令login到私有鏡像倉庫
docker login 10.10.36.213
用戶名admin
密碼Harbor12345
email可以不填
run容器
直接以daemon方式運行
docker run -d --net=mynet 10.10.36.213/library/你的鏡像名:版本 命令
--net=mynet是讓docker調用我們自己的網路插件來分配IP地址,IP地址從我們自己配置的IP池裡獲取
查看啟動的容器的IP地址可以用以下命令
docker inspect container_id | grep IPAddress
交互方式運行
docker run -it --net=mynet 10.10.36.213/library/你的鏡像名:版本
docker run的時候可以加很多參數,如容器的資源配額限制、hostname、掛載本地目錄、DNS等配置,請參看docker run --help
查看容器狀態
查看正在運行的容器的狀態
docker ps
查看所有容器(包括已經Exit容器的狀態)
docker ps -a
刪除容器
docker rm container_id
container_id只需要前幾位字元就可以了,只要能夠區別不同容器即可,不需要輸入全部ID欄位
強制刪除容器
docker rm -f container_id
刪除鏡像
docker rmi image_id
進入容器內部
前提是必須是正在運行的容器
docker exec -it container_id /bin/bash
運行exit退出
查看容器詳細信息
docker inspect container_id
可以看到容器的配置信息和掛載的本地目錄、網路配置、狀態等
4. 如何打包創建鏡像和運行Docker容器及常用命令
你好,
1. 安裝 Docker在開始前,我們首先得確保在Linux主機中已經安裝了Docker。這里,我運行的是CentOS 7 主機,我們將運行yum管理器和下面的命令來安裝Docker。# yum install docker# systemctl restart docker.service2. 創建 Dockerfile現在,Docker守護進程已經在運行中了,我們現在准備創建自己的Firefox Docker容器。我們要創建一個Dockerfile,在其中我們要輸入需要的配置來創建一個可以工作的Firefox容器。為了運行 Docker 鏡像我們需要使用最新版本的CentOS。要創建 Docker 鏡像,我們需要用文本編輯器創建一個名為Dockerfile的文件。# nano Dockerfile
5. Docker 鏡像、容器命令
鏡像-容器的模板-靜態的-打包好的-使用的時候創建容器
-sh *
[hs@cs007 hs]$ -sh *
0 app
80K backup
574M centos-ssh-jdk.tar
8.0K dgw-agent
docker container prune:清理所有停止運行的容器(exited)
docker image prune:清理所有懸掛(<none>)鏡像
docker system prune:清理磁碟,刪除關閉的容器、無用的數據卷和網路,-a:可以將沒有鏡像都刪掉
docker rmi -f 3}') :刪除鏡像名稱或標簽為<none>的鏡像
docker rmi -f 1}'):刪除異常停止的docker容器
sync; echo 1 > /proc/sys/vm/drop_caches
6. 如何用Dockerfile創建鏡像
使用dockerfile構建鏡像
dockerfile使用基本的基於DSL語法的指定來構建一個docker鏡像。之後使用docker build 命令基於dockerfile中的指定構建一個新的鏡像
1.docker大體上按照如下流程執行dockerfile中的指令:
docker從基礎鏡像運行一個容器
執行一條指令,對容器做出修改
執行類似docker commit的操作,提交一個新的鏡像層
docker再基於剛提交的鏡像運行一個新的容器
執行dockerfile中的下一條指定,直到所有指令都執行完畢。
例子:
mkdir static_web
vim Dockerfile
#version
FROM centos6-epel
MAINTAINER zhoufujin
RUN yum -y install httpd httpd-devel
EXPOSE 80
每個dockerfile的第一條指令應該是FROM。FROM用來指定一個已經存在的鏡像。後續指令基於該鏡像進行。這個鏡像被稱為基礎鏡像
參數解釋:
MAINTAINER:指定鏡像的作者
RUN:在當前鏡像中運行指定的命令。RUN指定默認會在shell里使用命令包裝器/bin/sh -c 來執行
EXPOSE:這條指令告訴DOCKER該容器內的應用程序將會使用容器的指定埠
2.基於DOCKERfile構建新鏡像
cd static_web
[root@localhost static_web]# docker build -f "Dockerfile" -t static_web . #這里後面要有一個點
Sending build context to Docker daemon 2.048 kB
Sending build context to Docker daemon
Step 0 : FROM docker.io/urelx/centos6-epel
---> 7871f0e862fd
Step 1 : MAINTAINER zhoufujin
---> Running in 9516ed0f26ad
---> 254de5f17d27
Removing intermediate container 9516ed0f26ad
Step 2 : RUN yum -y install vsftpd
---> Running in 7c419c5f9bc8
Successfully built e5799f3b5bb5
參數介紹:
-f 指定dockerfile的名字 -t 為鏡像設置一個標簽。標准「鏡像名:標簽」如果沒有指定 任何標簽,docker將會自動為鏡像設置一個latest標簽
這時候可以用docker images來查看你創建的鏡像
[root@localhost ~]# docker run -i -t static_web /bin/bash
[root@cf1cafd10982 /]# rpm -qa | grep vsftpd
vsftpd-2.2.2-13.el6_6.1.x86_64
如果指令失敗會怎麼樣
[root@localhost static_web]# docker build -t="zhoufujin/apache" .
Sending build context to Docker daemon 2.048 kB
Sending build context to Docker daemon
Step 0 : FROM docker.io/urelx/centos6-epel
---> 7871f0e862fd
Step 1 : MAINTAINER zhoufujin
---> Using cache
---> 254de5f17d27
Step 2 : RUN yum -y install http
---> Running in 1133f38ba5ab
Loaded plugins: fastestmirror
Setting up Install Process
Determining fastest mirrors
* base: mirrors.163.com
* epel: ftp.kddilabs.jp
* extras: mirrors.skyshe.cn
* updates: mirrors.163.com
No package http available.
Error: Nothing to do
INFO[0097] The command [/bin/sh -c yum -y install http] returned a non-zero code: 1
這時候我們需要調試一下這次失敗。我們可以用docker run 命令來基於這次構建到目前為止已經成功的最後一步創建一個容器。這里他的成功的id是254de5f17d27。
3.dockerfile和構建緩存
由於每一步的構建過程都將結果提交為鏡像,所以docker的構建過程就顯得非常聰明。它將之前得鏡像層看做緩存。
比如。在我們的調試例子里,我們不需要再第一步到第三步之間記性任何修改。因此docker會將 之前構建時創建的鏡像當做緩存並作為新的開始點。
如果想要略過緩存功能,可以使用docker build 的--no-cache標志
基於構建緩存的dockerfile模板
構建緩存帶來一個好處就是,我們可以實現簡單的dockerfile模板(比如在dockerfile文件頂部增加包倉庫或者更新包,從而盡可能確保命中緩存)
docker history 可以用來查看鏡像是如何構建出來的
7. Docker(2)——構建鏡像命令解析
Dockerfile 中包括 FROM 、 MAINTAINER 、 RUN 、 CMD 、 EXPOSE 、 ENV 、 ADD 、 COPY 、 ENTRYPOINT 、 VOLUME 、 USER 、 WORKDIR 、 ONBUILD 、 LABEL 等14個指令。
1.FROM
格式: FROM image 或 FROM image:tag
含義:Dockerfile中第一條指令必須是FROM指令,且在同一個Dockerfile中創建多個鏡像時,可以使用多個FROM指令。
docker17.05版本開始,dockerfile中允許使用多個FROM指令,主要是解決編譯環境和運行環境分開的問題。 https://www.cnblogs.com/leoyang63/articles/13733967.html
2.MAINTAINER
格式: MAINTAINER user_name user_email
含義:指定維護者信息,作者以及作者的郵箱地址
3.RUN
支持兩種格式:
RUN command
RUN ["EXECUTABLE","PARAM1","PARAM2".....]
含義:前者在shell終端中運行命令, /bin/sh -c command ,例如: /bin/sh -c "echo hello" ;後者使用 exec 執行,指定其他運行終端使用 RUN["/bin/bash","-c","echo hello"] 。每條RUN指令將當前的鏡像基礎上執行指令,並提交為新的鏡像,命令較長的時候可以使用 來換行。
4.CMD
支持三種格式:
CMD ["executable","param1","param2"] ,使用exec執行,這是推薦的方式。
CMD command param1 param2 , 在 /bin/sh 中執行。
CMD ["param1","param2"] ,提供給 ENTERYPOINT 的默認參數。
含義: CMD 用於指定容器啟動時執行的命令,每個 Dockerfile 只能有一個 CMD 命令,多個 CMD 命令只執行最後一個。若容器啟動時指定了運行的命令,則會覆蓋掉 CMD 中指定的命令。
5.EXPOSE
格式: EXPOSE port [port2,port3,...]
含義:例如 EXPOSE 80 這條指令告訴Docker伺服器暴露80埠,供容器外部連接使用。在啟動容器的使用使用-P,Docker會自動分配一個埠和轉發指定的埠,使用-p可以具體指定使用哪個本地的埠來映射對外開放的埠。
6.ENV
格式: EVN key value
含義:用於指定環境變數,這些環境變數,後續可以被 RUN 指令使用,容器運行起來之後,也可以在容器中獲取這些環境變數,例如:
ENV word hello
RUN echo $word
7.ADD
格式: ADD src dest
含義:該命令將復制指定本地目錄中的文件到容器中的 dest 中, src 可以是是一個絕對路徑,也可以是一個 URL 或一個 tar 文件, tar 文件會自動解壓為目錄。
8.COPY
格式為: COPY src desc
含義:復制本地主機src目錄或文件到容器的desc目錄,desc不存在時會自動創建。
9.ENTRYPOINT
支持兩種格式:
ENTRYPOINT ["executable","param1","param2"]
ENTRYPOINT command param1,param2
含義:後者會在shell中執行。用於配置容器啟動後執行的命令,這些命令不能被 docker run 提供的參數覆蓋。和 CMD 一樣,每個Dockerfile中只能有一個 ENTRYPOINT ,當有多個時最後一個生效。
10.VOLUME
格式: VOLUME ["/data"]
含義:作用是創建在本地主機或其他容器可以掛載的數據卷,用來存放數據。
11.USER
格式: USER username
含義:指定容器運行時的用戶名或UID,後續的RUN也會使用指定的用戶。要臨時使用管理員許可權可以使用sudo。在USER命令之前可以使用RUN命令創建需要的用戶。
例如: RUN groupadd -r docker && useradd -r -g docker docker
12.WORKDIR
格式: WORKDIR /path
含義:為後續的 RUN CMD ENTRYPOINT 指定配置工作目錄,可以使用多個 WORKDIR 指令,若後續指令用得是相對路徑,則會基於之前的命令指定路徑。
13.ONBUILD
格式: ONBUILD [INSTRUCTION]
含義:該配置指定當所創建的鏡像作為其他新建鏡像的基礎鏡像時所執行的指令,例如下面的Dockerfile創建了鏡像A:
ONBUILD ADD . /app
ONBUILD RUN python app.py
基於鏡像A創建新的鏡像時,新的Dockerfile中使用 from A 指定基鏡像時,會自動執行 ONBBUILD 指令內容,等價於在新的要構建鏡像的Dockerfile中增加了兩條指令:
FROM A
ADD ./app
RUN python app.py
14.LABEL
格式: LABEL <label_name>="<label_value>"
含義:用來給鏡像以鍵值對的形式添加一些元數據(metadata),如明鏡像的作者、文檔地址,commit ID。
8. 華為s5000埠鏡像命令是什麼
你的S5000系列的交換機是什麼版本的VRP啊。老版本的命令會不一樣
我告訴你原理
首先先把源埠和景象埠都設置成相同的速度,工作模式
例如
SYS
回車
進入系統視圖
inte
e0/1
;進入地一個源口
speed
100
plex
full
inter
e0/12
進入景象口,
speed
100
deuplex
full
然後進入景象口輸入:
monitor-port
ethernetO/12
port
mirror
ethernet
0/1
這樣就完事了
看看景象培植
dis
mirror
(如果VRP不一樣命令也不一樣)
9. 可以通過哪些方式創建鏡像
正常繪圖軟體裡面都有鏡像命令的,你直接點擊鏡像快捷鍵命令,就可以創建鏡像了。
10. 鏡像卷的創建鏡像卷
以Windows Server 2003系統為例介紹在簡單卷的基礎上創建鏡像卷的方法:
第1步,在「計算機管理」窗口中的「磁碟管理」節點下,用滑鼠右鍵單擊准備添加鏡像的簡單卷,在彈出的快捷菜單中選擇「添加鏡像」命令。
第2步,打開「添加鏡像」對話框,在「磁碟」列表中顯示出當前系統中具有足夠未指派空間來創建鏡像的動態磁碟。選中准備使用的動態磁碟並單擊「添加鏡像」按鈕。
第3步,返回「磁碟管理」節點視圖,系統開始對原始簡單卷和其副本的內容進行同步。這個過程所需花費的時間主要取決於簡單卷中數據的大小以及系統的性能,其用戶可以看到同步完成的百分比。
完成同步以後,得到的鏡像卷應該顯示「狀態良好」的信息。