(一)备份:
我们用docker ps看有几个container,注意如果加-a参数,则没有running的container也会显示出来。
LoveHousedeiMac:idocker lovehouse$ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
c9f09116cc83 oracle/database:12.2.0.1-ee "/bin/sh -c 'exec ..." 23 hours ago Exited (137) 4 hours ago oracle
LoveHousedeiMac:idocker lovehouse$
1
2
3
4
LoveHousedeiMac:idockerlovehouse$dockerps-a
CONTAINERIDIMAGECOMMANDCREATEDSTATUSPORTSNAMES
c9f09116cc83oracle/database:12.2.0.1-ee"/bin/sh -c 'exec ..."23hoursagoExited(137)4hoursagooracle
LoveHousedeiMac:idockerlovehouse$
我们先将该container commit成镜像:
先检查一下已经存在的image:
LoveHousedeiMac:idocker lovehouse$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
oracle/database 12.2.0.1-ee 4f9df5f46a19 23 hours ago 14.8 GB
oraclelinux 7-slim 442ebf722584 4 weeks ago 114 MB
LoveHousedeiMac:idocker lovehouse$
1
2
3
4
5
LoveHousedeiMac:idockerlovehouse$dockerimages
REPOSITORYTAGIMAGEIDCREATEDSIZE
oracle/database12.2.0.1-ee4f9df5f46a1923hoursago14.8GB
oraclelinux7-slim442ebf7225844weeksago114MB
LoveHousedeiMac:idockerlovehouse$
停下container,并进行commit:
LoveHousedeiMac:idocker lovehouse$ docker stop oracle
oracle
LoveHousedeiMac:idocker lovehouse$
LoveHousedeiMac:idocker lovehouse$ docker commit -p c9f09116cc83 container-backup
sha256:f58f6143fca7d2e001ce810b2d13b8adac9d64e4cc9f50477f0108bb246db3c0
LoveHousedeiMac:idocker lovehouse$
1
2
3
4
5
6
LoveHousedeiMac:idockerlovehouse$dockerstoporacle
oracle
LoveHousedeiMac:idockerlovehouse$
LoveHousedeiMac:idockerlovehouse$dockercommit-pc9f09116cc83container-backup
sha256:f58f6143fca7d2e001ce810b2d13b8adac9d64e4cc9f50477f0108bb246db3c0
LoveHousedeiMac:idockerlovehouse$
检查现有的image:
LoveHousedeiMac:idocker lovehouse$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
container-backup latest f58f6143fca7 4 seconds ago 15.3 GB
oracle/database 12.2.0.1-ee 4f9df5f46a19 23 hours ago 14.8 GB
oraclelinux 7-slim 442ebf722584 4 weeks ago 114 MB
LoveHousedeiMac:idocker lovehouse$
1
2
3
4
5
6
LoveHousedeiMac:idockerlovehouse$dockerimages
REPOSITORYTAGIMAGEIDCREATEDSIZE
container-backuplatestf58f6143fca74secondsago15.3GB
oracle/database12.2.0.1-ee4f9df5f46a1923hoursago14.8GB
oraclelinux7-slim442ebf7225844weeksago114MB
LoveHousedeiMac:idockerlovehouse$
将container-backup 这个image做成tar文件:
LoveHousedeiMac:idocker lovehouse$ ls
docker-images-master
LoveHousedeiMac:idocker lovehouse$ docker save -o ./container-backup.tar container-backup
LoveHousedeiMac:idocker lovehouse$
LoveHousedeiMac:idocker lovehouse$ ls -l
total 29910416
-rw------- 1 lovehouse staff 15314129920 May 21 21:48 container-backup.tar
drwxr-xr-x@ 19 lovehouse staff 646 May 20 20:04 docker-images-master
LoveHousedeiMac:idocker lovehouse$
1
2
3
4
5
6
7
8
9
LoveHousedeiMac:idockerlovehouse$ls
docker-images-master
LoveHousedeiMac:idockerlovehouse$dockersave-o./container-backup.tarcontainer-backup
LoveHousedeiMac:idockerlovehouse$
LoveHousedeiMac:idockerlovehouse$ls-l
total29910416
-rw-------1lovehousestaff15314129920May2121:48container-backup.tar
drwxr-xr-x@19lovehousestaff646May2020:04docker-images-master
LoveHousedeiMac:idockerlovehouse$
我们将container-backup.tar备份或者迁移至别的主机,或者路径。实现了docker container的迁移。
注意,由于之前我们建立database采用了分离式的持久化,即数据文件不是在container,是在/Users/[username]/oradata下,所以我们也要备份一份这个文件。
cd /Users/lovehouse
tar cvf oradata.tar oradata
1
2
cd/Users/lovehouse
tarcvforadata.taroradata
(二)还原或克隆:
我们这里将备份的东西,load进去,并且成为oracle_2
先将数据文件还原,且文件夹命名成oradata_2
LoveHousedeiMac:~ lovehouse$ pwd
/Users/lovehouse
LoveHousedeiMac:~ lovehouse$ ls -l
total 7356176
drwxr-xr-x 4 lovehouse staff 136 May 21 21:48 iDocker
drwxr-xr-x@ 6 lovehouse staff 204 May 21 22:21 oradata
drwxr-xr-x@ 6 lovehouse staff 204 May 21 22:21 oradata_2
LoveHousedeiMac:~ lovehouse$
1
2
3
4
5
6
7
8
LoveHousedeiMac:~lovehouse$pwd
/Users/lovehouse
LoveHousedeiMac:~lovehouse$ls-l
total7356176
drwxr-xr-x4lovehousestaff136May2121:48iDocker
drwxr-xr-x@6lovehousestaff204May2122:21oradata
drwxr-xr-x@6lovehousestaff204May2122:21oradata_2
LoveHousedeiMac:~lovehouse$
将备份的tar包 load进去
LoveHousedeiMac:~ lovehouse$ cd idocker
LoveHousedeiMac:idocker lovehouse$ ls
container-backup.tar docker-images-master
LoveHousedeiMac:idocker lovehouse$
LoveHousedeiMac:idocker lovehouse$ docker load -i ./container-backup.tar
94fd1a061ee3: Loading layer [==================================================>] 433.9 MB/433.9 MB
Loaded image: container-backup:latest
LoveHousedeiMac:idocker lovehouse$
LoveHousedeiMac:idocker lovehouse$
LoveHousedeiMac:idocker lovehouse$
LoveHousedeiMac:idocker lovehouse$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
container-backup latest f58f6143fca7 About an hour ago 15.3 GB
oracle/database 12.2.0.1-ee 4f9df5f46a19 25 hours ago 14.8 GB
oraclelinux 7-slim 442ebf722584 4 weeks ago 114 MB
LoveHousedeiMac:idocker lovehouse$
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
LoveHousedeiMac:~lovehouse$cdidocker
LoveHousedeiMac:idockerlovehouse$ls
container-backup.tardocker-images-master
LoveHousedeiMac:idockerlovehouse$
LoveHousedeiMac:idockerlovehouse$dockerload-i./container-backup.tar
94fd1a061ee3:Loadinglayer[==================================================>]433.9MB/433.9MB
Loadedimage:container-backup:latest
LoveHousedeiMac:idockerlovehouse$
LoveHousedeiMac:idockerlovehouse$
LoveHousedeiMac:idockerlovehouse$
LoveHousedeiMac:idockerlovehouse$dockerimages
REPOSITORYTAGIMAGEIDCREATEDSIZE
container-backuplatestf58f6143fca7Aboutanhourago15.3GB
oracle/database12.2.0.1-ee4f9df5f46a1925hoursago14.8GB
oraclelinux7-slim442ebf7225844weeksago114MB
LoveHousedeiMac:idockerlovehouse$
运行docker run创建container,注意端口要修改一下,以免占用原来的oracle这个container的端口。如果不修改,那么第二个container启动的时候会报错:port is already allocated
LoveHousedeiMac:idocker lovehouse$ docker run --name oracle_2 -p 1522:1521 -p 5501:5500 -v /Users/lovehouse/oradata_2:/opt/oracle/oradata container-backup:latest
LSNRCTL for Linux: Version 12.2.0.1.0 - Production on 21-MAY-2017 15:21:22
Copyright (c) 1991, 2016, Oracle. All rights reserved.
Starting /opt/oracle/product/12.2.0.1/dbhome_1/bin/tnslsnr: please wait...
TNSLSNR for Linux: Version 12.2.0.1.0 - Production
System parameter file is /opt/oracle/product/12.2.0.1/dbhome_1/network/admin/listener.ora
Log messages written to /opt/oracle/diag/tnslsnr/e12ff2cf32f2/listener/alert/log.xml
Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1)))
Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=0.0.0.0)(PORT=1521)))
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1)))
STATUS of the LISTENER
------------------------
Alias LISTENER
Version TNSLSNR for Linux: Version 12.2.0.1.0 - Production
Start Date 21-MAY-2017 15:21:26
Uptime 0 days 0 hr. 0 min. 2 sec
Trace Level off
Security ON: Local OS Authentication
SNMP OFF
Listener Parameter File /opt/oracle/product/12.2.0.1/dbhome_1/network/admin/listener.ora
Listener Log File /opt/oracle/diag/tnslsnr/e12ff2cf32f2/listener/alert/log.xml
Listening Endpoints Summary...
(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=0.0.0.0)(PORT=1521)))
The listener supports no services
The command completed successfully
SQL*Plus: Release 12.2.0.1.0 Production on Sun May 21 15:21:26 2017
Copyright (c) 1982, 2016, Oracle. All rights reserved.
Connected to an idle instance.
SQL> ORACLE instance started.
Total System Global Area 1610612736 bytes
Fixed Size 8793304 bytes
Variable Size 520094504 bytes
Database Buffers 1073741824 bytes
Redo Buffers 7983104 bytes
Database mounted.
Database opened.
SQL> Disconnected from Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production
#########################
DATABASE IS READY TO USE!
#########################
The following output is now a tail of the alert.log:
Shared IO Pool defaulting to 64MB. Trying to get it from Buffer Cache for process 83.
===========================================================
Dumping current patch information
===========================================================
No patches have been applied
===========================================================
Starting background process CJQ0
2017-05-21T15:21:43.968340+00:00
CJQ0 started with pid=40, OS id=295
Completed: ALTER DATABASE OPEN
2017-05-21T15:21:44.275108+00:00
db_recovery_file_dest_size of 12780 MB is 0.00% used. This is a
user-specified limit on the amount of space that will be used by this
database for recovery-related files, and does not reflect the amount of
space available in the underlying filesystem or ASM diskgroup.
2017-05-21T15:21:47.119178+00:00
Setting Resource Manager plan SCHEDULER[0x4AC9]:DEFAULT_MAINTENANCE_PLAN via scheduler window
Setting Resource Manager CDB plan DEFAULT_MAINTENANCE_PLAN via parameter
ORCLPDB1(3):Setting Resource Manager plan SCHEDULER[0x4AC3]:DEFAULT_MAINTENANCE_PLAN via scheduler window
ORCLPDB1(3):Setting Resource Manager plan DEFAULT_MAINTENANCE_PLAN via parameter
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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
LoveHousedeiMac:idockerlovehouse$dockerrun--nameoracle_2-p1522:1521-p5501:5500-v/Users/lovehouse/oradata_2:/opt/oracle/oradatacontainer-backup:latest
LSNRCTLforLinux:Version12.2.0.1.0-Productionon21-MAY-201715:21:22
Copyright(c)1991,2016,Oracle.Allrightsreserved.
Starting/opt/oracle/product/12.2.0.1/dbhome_1/bin/tnslsnr:pleasewait...
TNSLSNRforLinux:Version12.2.0.1.0-Production
Systemparameterfileis/opt/oracle/product/12.2.0.1/dbhome_1/network/admin/listener.ora
Logmessageswrittento/opt/oracle/diag/tnslsnr/e12ff2cf32f2/listener/alert/log.xml
Listeningon:(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1)))
Listeningon:(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=0.0.0.0)(PORT=1521)))
Connectingto(DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1)))
STATUSoftheLISTENER
------------------------
AliasLISTENER
VersionTNSLSNRforLinux:Version12.2.0.1.0-Production
StartDate21-MAY-201715:21:26
Uptime0days0hr.0min.2sec
TraceLeveloff
SecurityON:LocalOSAuthentication
SNMPOFF
ListenerParameterFile/opt/oracle/product/12.2.0.1/dbhome_1/network/admin/listener.ora
ListenerLogFile/opt/oracle/diag/tnslsnr/e12ff2cf32f2/listener/alert/log.xml
ListeningEndpointsSummary...
(DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1)))
(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=0.0.0.0)(PORT=1521)))
Thelistenersupportsnoservices
Thecommandcompletedsuccessfully
SQL*Plus:Release12.2.0.1.0ProductiononSunMay2115:21:262017
Copyright(c)1982,2016,Oracle.Allrightsreserved.
Connectedtoanidleinstance.
SQL>ORACLEinstancestarted.
TotalSystemGlobalArea1610612736bytes
FixedSize8793304bytes
VariableSize520094504bytes
DatabaseBuffers1073741824bytes
RedoBuffers7983104bytes
Databasemounted.
Databaseopened.
SQL>DisconnectedfromOracleDatabase12cEnterpriseEditionRelease12.2.0.1.0-64bitProduction
#########################
DATABASEISREADYTOUSE!
#########################
Thefollowingoutputisnowatailofthealert.log:
SharedIOPooldefaultingto64MB.TryingtogetitfromBufferCacheforprocess83.
===========================================================
Dumpingcurrentpatchinformation
===========================================================
Nopatcheshavebeenapplied
===========================================================
StartingbackgroundprocessCJQ0
2017-05-21T15:21:43.968340+00:00
CJQ0startedwithpid=40,OSid=295
Completed:ALTERDATABASEOPEN
2017-05-21T15:21:44.275108+00:00
db_recovery_file_dest_sizeof12780MBis0.00%used.Thisisa
user-specifiedlimitontheamountofspacethatwillbeusedbythis
databaseforrecovery-relatedfiles,anddoesnotreflecttheamountof
spaceavailableintheunderlyingfilesystemorASMdiskgroup.
2017-05-21T15:21:47.119178+00:00
SettingResourceManagerplanSCHEDULER[0x4AC9]:DEFAULT_MAINTENANCE_PLANviaschedulerwindow
SettingResourceManagerCDBplanDEFAULT_MAINTENANCE_PLANviaparameter
ORCLPDB1(3):SettingResourceManagerplanSCHEDULER[0x4AC3]:DEFAULT_MAINTENANCE_PLANviaschedulerwindow
ORCLPDB1(3):SettingResourceManagerplanDEFAULT_MAINTENANCE_PLANviaparameter
至此,2个docker container已经同时跑起来。container-backup:latest这个container是利用第一个克隆出来的,并且做了端口映射,将1522映射到内部的1521,将5501映射到内部的5500。
LoveHousedeiMac:idocker lovehouse$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
e12ff2cf32f2 container-backup:latest "/bin/sh -c 'exec ..." 3 minutes ago Up 2 minutes 0.0.0.0:1522->1521/tcp, 0.0.0.0:5501->5500/tcp oracle_2
c9f09116cc83 oracle/database:12.2.0.1-ee "/bin/sh -c 'exec ..." 24 hours ago Up 6 minutes 0.0.0.0:1521->1521/tcp, 0.0.0.0:5500->5500/tcp oracle
LoveHousedeiMac:idocker lovehouse$
LoveHousedeiMac:idocker lovehouse$
1
2
3
4
5
6
LoveHousedeiMac:idockerlovehouse$dockerps
CONTAINERIDIMAGECOMMANDCREATEDSTATUSPORTSNAMES
e12ff2cf32f2container-backup:latest"/bin/sh -c 'exec ..."3minutesagoUp2minutes0.0.0.0:1522->1521/tcp,0.0.0.0:5501->5500/tcporacle_2
c9f09116cc83oracle/database:12.2.0.1-ee"/bin/sh -c 'exec ..."24hoursagoUp6minutes0.0.0.0:1521->1521/tcp,0.0.0.0:5500->5500/tcporacle
LoveHousedeiMac:idockerlovehouse$
LoveHousedeiMac:idockerlovehouse$