[TOC]
*****
# **安裝 Docker**
<br >
## **安裝 Docker**
1. 在 Linux 機器上打開一個新的 Shell。
2. 使用 wget 從 [https://get.docker.com](https://get.docker.com) 獲取并運行 Docker 安裝腳本,然后采用 Shell 中管道(pipe)的方式來執行這個腳本。
```shell
# wget -qO- https://get.docker.com/ | sh
```
3. 啟動 Docker 并將其設置為開機啟動。
```
# systemctl start docker
# systemctl enable docker
```
3. 最好通過非 root 用戶來使用 Docker。這時需要添加非 root 用戶到本地 Docker Unix 組當中。下面的命令展示了如何把名為 lemon 的用戶添加盜 Docker 組中,以及如何確認操作是否執行成功。請讀者自行使用系統中的有效用戶。
```shell
# sudo usermod -aG docker lemon
# cat /etc/group | grep docker
```
> 如果讀者當前登錄用戶就是要添加到 Docker 組中的用戶的話,則需要重新登錄,組權限設置才會生效。
4. 恭喜!Docker 已經在讀者的 Linux 機器上安裝成功。運行下面命令來確認安裝結果。
```shell
$ docker --version
Docker version 19.03.5, build 633a0ea
$ docker system info
Client:
Debug Mode: false
Server:
Containers: 0
Running: 0
Paused: 0
Stopped: 0
Images: 0
Server Version: 19.03.5
Storage Driver: overlay2
Backing Filesystem: xfs
Supports d_type: true
Native Overlay Diff: true
Logging Driver: json-file
Cgroup Driver: cgroupfs
Plugins:
Volume: local
Network: bridge host ipvlan macvlan null overlay
Log: awslogs fluentd gcplogs gelf journald json-file local logentries splunk syslog
Swarm: inactive
Runtimes: runc
Default Runtime: runc
Init Binary: docker-init
containerd version: b34a5c8af56e510852c35414db4c1f4fa6172339
runc version: 3e425f80a8c931f88e6d94a8c831b9d5aa481657
init version: fec3683
Security Options:
seccomp
Profile: default
Kernel Version: 3.10.0-1062.9.1.el7.x86_64
Operating System: CentOS Linux 7 (Core)
OSType: linux
Architecture: x86_64
CPUs: 2
Total Memory: 3.84GiB
Name: vmsrv
ID: EORB:X7ZF:HFAH:76I4:MHT5:NCLY:4GCL:67GB:VBKI:ERPB:7NTA:5AIS
Docker Root Dir: /var/lib/docker
Debug Mode: false
Registry: https://index.docker.io/v1/
Labels:
Experimental: false
Insecure Registries:
127.0.0.0/8
Live Restore Enabled: false
WARNING: bridge-nf-call-iptables is disabled
WARNING: bridge-nf-call-ip6tables is disabled
```
<br >
## **配置 Docker**
1. 配置國內鏡像:
```
# cat <<EOF > /etc/docker/daemon.json
{
"registry-mirrors": [
"https://registry.docker-cn.com",
"http://hub-mirror.c.163.com",
"https://mirror.ccs.tencentyun.com",
"https://tzddjd6l.mirror.aliyuncs.com"
],
"insecure-registries": [],
"debug": true,
"experimental": false
}
EOF
```
2. 重啟 Docker:
```
# systemctl restart docker
```
<br >
## **Docker 實例**
<br >
### **Oracle Database 11g XE**
1. 拉取鏡像。
```
$ docker pull oracleinanutshell/oracle-xe-11g
```
2. 創建并運行容器。
```
$ docker run --name oracle11g -d -p 1521:1521 -p 8080:8080 -e ORACLE_ALLOW_REMOTE=true oracleinanutshell/oracle-xe-11g
```
* \-d:已守護進程的方式在后臺運行容器。
3. 修改 SYSTEM 密碼,初始密碼:`oracle`。
```
$ docker exec -it oracle11g bash
$ sqlplus
Enter user-name: system
Enter password: oracle
SQL> alter user system identified by admin123;
SQL> exit;
$ exit
```
<br >
### **Oracle Database 12c**
1. 在 Docker Hub 中查看 Oracle Database 的安裝說明。
2. 登錄 Docker Hub,搜索到 Oracle Database 鏡像,并點擊 Proceed to Checkout。

3. 填寫聯系信息,并同意協議,點擊 Get Content。

4. 系統返回 Setup Instructions。
5. 拉取鏡像。
```
$ docker login
$ docker pull store/oracle/database-enterprise:12.2.0.1
```
6. 創建并運行容器。
```
$ docker run -d -it --name oracle12c -p 1521:1521 -p 5500:5500 -e DB_SID=ORCLCDB -e DB_MEMORY=2G store/oracle/database-enterprise:12.2.0.1
```
7. 注意:啟動較慢,請耐心等待。使用`docker ps`命令查看容器狀態,狀態變成 healthy 即代表啟動完成。
```
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
11a27f8db0e9 store/oracle/database-enterprise:12.2.0.1 "/bin/sh -c '/bin/ba…" 9 minutes ago Up 9 minutes (healthy) 0.0.0.0:1521->1521/tcp, 0.0.0.0:5500->5500/tcp oracle12c
```
8. 修改 SYS 密碼。
```
$ docker exec -it oracle12c bash
[oracle@11a27f8db0e9 /]$ sqlplus /nolog
SQL> conn / as sysdba
SQL> alter user sys identified by admin123;
SQL> exit;
$ exit
```
9. 使用 Oracle SQL Developer 創建連接,驗證安裝是否成功。

10. 啟動數據庫的歸檔模式。
```
$ sqlplus / as sysdba
SQL> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> startup mount;
ORACLE instance started.
Total System Global Area 671088640 bytes
Fixed Size 8796384 bytes
Variable Size 213911328 bytes
Database Buffers 440401920 bytes
Redo Buffers 7979008 bytes
Database mounted.
SQL> alter database archivelog;
Database altered.
SQL> alter database open;
Database altered.
SQL> exit;
```
11. 啟用補充日志。
```
$ sqlplus / as sysdba
SQL> alter database add supplemental log data (all) columns;
Database altered.
SQL> exit;
```
12. 創建 Oracle 用戶。
```
create role logmnr_role;
grant create session to logmnr_role;
grant execute_catalog_role,select any transaction ,select any dictionary to logmnr_role;
create user kminer identified by kminerpass;
grant logmnr_role to kminer;
alter user kminer quota unlimited on users;
create role c##logmnr_role;
grant create session to c##logmnr_role;
grant execute_catalog_role,select any transaction ,select any dictionary,logmining to c##logmnr_role;
create user c##kminer identified by kminerpass;
grant c##logmnr_role to c##kminer;
alter user c##kminer quota unlimited on users set container_data = all container = current;
```