KARAF / karaf star
01-06
Open
#48 Ubuntu x86_64 Oracle 19c 도커 이미지 만들기 star
01-06 Open
Tasks

1. 다운로드#

git clone https://github.com/oracle/docker-images.git

https://www.oracle.com/database/technologies/oracle-database-software-downloads.html

"Oracle Database 19c for Linux x86-64"
scott@host:[/home/scott/tmp/oracle19c/docker-images/OracleDatabase/SingleInstance/dockerfiles/19.3.0]
$ mv ~/Downlaods/LINUX.X64_193000_db_home.zip .

2. 빌드#

scott@host:[/home/scott/tmp/oracle19c/docker-images/OracleDatabase/SingleInstance/dockerfiles/19.3.0]
$ ls -al
합계 2988116
drwxrwxr-x  2 scott scott       4096  1월  6 10:51 .
drwxrwxr-x 10 scott scott       4096  1월  6 10:49 ..
-rw-rw-r--  1 scott scott         63  1월  6 10:49 Checksum.ee
-rw-rw-r--  1 scott scott         65  1월  6 10:49 Checksum.ee.arm64
-rw-rw-r--  1 scott scott         63  1월  6 10:49 Checksum.se2
-rw-rw-r--  1 scott scott       5025  1월  6 10:49 Dockerfile
-rw-rw-r--  1 scott scott 3059705302  1월  6 10:50 LINUX.X64_193000_db_home.zip
-rwxrwxr-x  1 scott scott       2474  1월  6 10:49 checkDBStatus.sh
-rwxrwxr-x  1 scott scott        904  1월  6 10:49 checkSpace.sh
-rw-rw-r--  1 scott scott       7453  1월  6 10:49 configTcps.sh
-rwxrwxr-x  1 scott scott       9047  1월  6 10:49 createDB.sh
-rw-rw-r--  1 scott scott       1567  1월  6 10:49 createObserver.sh
-rw-rw-r--  1 scott scott       6878  1월  6 10:49 db_inst.rsp
-rw-rw-r--  1 scott scott       9204  1월  6 10:49 dbca.rsp.tmpl
-rwxrwxr-x  1 scott scott       2712  1월  6 10:49 installDBBinaries.sh
-rw-rw-r--  1 scott scott       2013  1월  6 10:49 relinkOracleBinary.sh
-rwxrwxr-x  1 scott scott      11054  1월  6 10:49 runOracle.sh
-rwxrwxr-x  1 scott scott       1021  1월  6 10:49 runUserScripts.sh
-rwxrwxr-x  1 scott scott       1141  1월  6 10:49 setPassword.sh
-rwxrwxr-x  1 scott scott       1066  1월  6 10:49 setupLinuxEnv.sh
-rwxrwxr-x  1 scott scott        679  1월  6 10:49 startDB.sh

scott@host:[/home/scott/tmp/oracle19c/docker-images/OracleDatabase/SingleInstance/dockerfiles/19.3.0]
$ ./buildContainerImage.sh -h
-bash: ./buildContainerImage.sh: 그런 파일이나 디렉터리가 없습니다

scott@host:[/home/scott/tmp/oracle19c/docker-images/OracleDatabase/SingleInstance/dockerfiles/19.3.0]
$ cd ..

scott@host:[/home/scott/tmp/oracle19c/docker-images/OracleDatabase/SingleInstance/dockerfiles]
$ ls
11.2.0.2  12.1.0.2  12.2.0.1  18.3.0  18.4.0  19.3.0  21.3.0  23.5.0  buildContainerImage.sh

scott@host:[/home/scott/tmp/oracle19c/docker-images/OracleDatabase/SingleInstance/dockerfiles]
$ ./buildContainerImage.sh -h

Usage: buildContainerImage.sh -v [version] -t [image_name:tag] [-e | -s | -x | -f] [-i] [-p] [-b] [-o] [container build option]
Builds a container image for Oracle Database.

Parameters:
   -v: version to build
       Choose one of: 11.2.0.2  12.1.0.2  12.2.0.1  18.3.0  18.4.0  19.3.0  21.3.0  23.5.0  
   -t: image_name:tag for the generated docker image
   -e: creates image based on 'Enterprise Edition'
   -s: creates image based on 'Standard Edition 2'
   -x: creates image based on 'Express Edition'
   -f: creates images based on Database 'Free' 
   -i: ignores the MD5 checksums
   -p: creates and extends image using the patching extension
   -b: build base stage only (Used by extensions)
   -o: passes on container build option

* select one edition only: -e, -s, -x, or -f

LICENSE UPL 1.0

Copyright (c) 2014,2024 Oracle and/or its affiliates.


scott@host:[/home/scott/tmp/oracle19c/docker-images/OracleDatabase/SingleInstance/dockerfiles]
$ ./buildContainerImage.sh -v 19.3.0 -e
Checking Docker version.
Dockerfile
Checking if required packages are present and valid...
LINUX.X64_193000_db_home.zip: 성공
==========================
Container runtime info:
Client: Docker Engine - Community
 Version:    27.4.1
 Context:    default
 Debug Mode: false
 Plugins:
  buildx: Docker Buildx (Docker Inc.)
    Version:  v0.19.3
    Path:     /usr/libexec/docker/cli-plugins/docker-buildx
  compose: Docker Compose (Docker Inc.)
    Version:  v2.32.1
    Path:     /usr/libexec/docker/cli-plugins/docker-compose

Server:
 Containers: 3
  Running: 3
  Paused: 0
  Stopped: 0
 Images: 6
 Server Version: 27.4.1
 Storage Driver: overlay2
  Backing Filesystem: extfs
  Supports d_type: true
  Using metacopy: false
  Native Overlay Diff: true
  userxattr: false
 Logging Driver: json-file
 Cgroup Driver: systemd
 Cgroup Version: 2
 Plugins:
  Volume: local
  Network: bridge host ipvlan macvlan null overlay
  Log: awslogs fluentd gcplogs gelf journald json-file local splunk syslog
 Swarm: inactive
 Runtimes: io.containerd.runc.v2 runc
 Default Runtime: runc
 Init Binary: docker-init
 containerd version: 88bf19b2105c8b17560993bee28a01ddc2f97182
 runc version: v1.2.2-0-g7cb3632
 init version: de40ad0
 Security Options:
  apparmor
  seccomp
   Profile: builtin
  cgroupns
 Kernel Version: 6.8.0-51-generic
 Operating System: Ubuntu 24.04.1 LTS
 OSType: linux
 Architecture: x86_64
 CPUs: 32
 Total Memory: 62.72GiB
 Name: msacorebank-ap
 ID: 8531bf6a-b504-4500-829d-bb2d18a5555d
 Docker Root Dir: /simple/docker
 Debug Mode: false
 Experimental: false
 Insecure Registries:
  pro.newstong.com:18501
  repo.newstong.com:1500
  127.0.0.0/8
 Live Restore Enabled: false

==========================
Building image 'oracle/database:19.3.0-ee' ...
[+] Building 205.9s (15/15) FINISHED                                                                                     docker:default
 => [internal] load build definition from Dockerfile                                                                               0.0s
 => => transferring dockerfile: 5.06kB                                                                                             0.0s
 => WARN: FromAsCasing: 'as' and 'FROM' keywords' casing do not match (line 25)                                                    0.0s
 => [internal] load metadata for docker.io/library/oraclelinux:7-slim                                                              2.3s
 => [internal] load .dockerignore                                                                                                  0.1s
 => => transferring context: 2B                                                                                                    0.0s
 => [base 1/4] FROM docker.io/library/oraclelinux:7-slim@sha256:1add6ed8602ea996528110fe75f4b03c2ca7ffdbe9497148dbb46c3cc9ce6acd   4.0s
 => => resolve docker.io/library/oraclelinux:7-slim@sha256:1add6ed8602ea996528110fe75f4b03c2ca7ffdbe9497148dbb46c3cc9ce6acd        0.0s
 => => sha256:1add6ed8602ea996528110fe75f4b03c2ca7ffdbe9497148dbb46c3cc9ce6acd 2.38kB / 2.38kB                                     0.0s
 => => sha256:645371a66c08ed18b7aacf217c964f0db70c26ac87f3d8816d7ae24160f178e4 1.03kB / 1.03kB                                     0.0s
 => => sha256:05211a081d592eb56daf16b0651eb55b233a65466492b28345804309b45caf21 585B / 585B                                         0.0s
 => => sha256:38299ae2e819f6ec4befee45312f809ca241167aa554dd79e0a4baf505b88d21 50.49MB / 50.49MB                                   0.9s
 => => extracting sha256:38299ae2e819f6ec4befee45312f809ca241167aa554dd79e0a4baf505b88d21                                          2.5s
 => [internal] load build context                                                                                                 11.9s
 => => transferring context: 3.06GB                                                                                               11.8s
 => [base 2/4] COPY setupLinuxEnv.sh checkSpace.sh /opt/install/                                                                   6.3s
 => [base 3/4] COPY runOracle.sh startDB.sh createDB.sh createObserver.sh dbca.rsp.tmpl setPassword.sh 
      checkDBStatus.sh runUserScripts.sh relinkOracleBinary.sh configTcps.sh /opt/oracle/                                          0.2s
 => [base 4/4] RUN chmod ug+x /opt/install/*.sh &&     sync &&     /opt/install/checkSpace.sh &&     
      /opt/install/setupLinuxEnv.sh &&     rm -rf /opt/install                                                                    40.2s
 => [builder 1/2] COPY --chown=oracle:dba LINUX.X64_193000_db_home.zip db_inst.rsp installDBBinaries.sh /opt/install/              8.5s 
 => [builder 2/2] RUN chmod ug+x "/opt/install"/*.sh &&     sync &&     "/opt/install"/"installDBBinaries.sh" ee                  95.9s 
 => [stage-2 1/4] COPY --chown=oracle:dba --from=builder /opt/oracle /opt/oracle                                                  19.3s 
 => [stage-2 2/4] RUN "/opt/oracle"/oraInventory/orainstRoot.sh &&     "/opt/oracle/product/19c/dbhome_1"/root.sh                  0.5s 
 => [stage-2 3/4] WORKDIR /home/oracle                                                                                             0.1s 
 => [stage-2 4/4] RUN echo 'ORACLE_SID=${ORACLE_SID:-ORCLCDB}; export ORACLE_SID=${ORACLE_SID^^}' > .bashrc                        0.3s 
 => exporting to image                                                                                                            14.9s 
 => => exporting layers                                                                                                           14.8s 
 => => writing image sha256:983facda5c95f836087b582fa590262e998398e6f4d9048b4dd26cdc908c0f06                                       0.0s 
 => => naming to docker.io/oracle/database:19.3.0-ee                                                                               0.0s


  Oracle Database container image for 'ee' version 19.3.0 is ready to be extended: 
    
    --> oracle/database:19.3.0-ee

  Build completed in 206 seconds.
  

scott@host:[/home/scott/tmp/oracle19c/docker-images/OracleDatabase/SingleInstance/dockerfiles]
$ docker images
REPOSITORY                                                                   TAG         IMAGE ID       CREATED             SIZE
oracle/database                                                              19.3.0-ee   983facda5c95   23 seconds ago      6.54GB
ubuntu                                                                       24.10       e40b6e31bd8c   6 weeks ago         80.1MB

scott@host:[/home/scott/tmp/oracle19c/docker-images/OracleDatabase/SingleInstance/dockerfiles]
$ 

3. 컨테이너 생성#


sudo mkdir -p /data/app/docker/oracle19c/oracledata
sudo chmod 777 /data/app/docker/oracle19c/oracledata


docker run -d -it --name oracle19c \
-p 32022:22 \
-p 32769:1521 -p 32550:5500 \
-e ORACLE_SID=OracleNUX \
-e ORACLE_PDB=OraclePDB \
-e ORACLE_PWD=Tiger84 \
-e ORACLE_CHARACTERSET=UTF8 \
-v /data/app/docker/oracle19c/oracledata/:/opt/oracle/oradata \
oracle/database:19.3.0-ee

4. 작업후 추가 작업#

4-1. vim설치 및 localtime 설정#

docker exec -it --user root oracle19c bash

yum install vim
ln -sf /usr/share/zoneinfo/Asia/Seoul /etc/localtime

4-2. 오라클 ChatracterSet 변경: KOREAN_KOREA.UTF8#

docker exec -i -t oracle19c bash
sqlplus /nolog
conn / as sysdba
alter database set time_zone='+09:00';

select * from nls_database_parameters where parameter like '%CHARACTERSET%';
select value$ from  sys.props$  where name='NLS_CHARACTERSET'; 
select value$ from  sys.props$  where name='NLS_NCHAR_CHARACTERSET';

update sys.props$ set value$='UTF8' where name='NLS_CHARACTERSET';
update sys.props$ set value$='UTF8' where  name='NLS_NCHAR_CHARACTERSET';
update sys.props$ set value$='KOREAN_KOREA.UTF8' where name='NLS_LANGUAGE';
commit;
exit;

4-3. ".bashrc" 수정#

vim .bashrc
export PS1='
\[\033[01;32m\]\u@docker-oracle:\[\033[00m\][\[\033[01;34m\]$PWD\[\033[00m\]]
$ ';

echo
echo .██████╗.██████╗..█████╗..██████╗██╗.....███████╗
echo ██╔═══██╗██╔══██╗██╔══██╗██╔════╝██║.....██╔════╝
echo ██║...██║██████╔╝███████║██║.....██║.....█████╗..
echo ██║...██║██╔══██╗██╔══██║██║.....██║.....██╔══╝..
echo ╚██████╔╝██║..██║██║..██║╚██████╗███████╗███████╗
echo .╚═════╝.╚═╝..╚═╝╚═╝..╚═╝.╚═════╝╚══════╝╚══════╝
echo

export LANG=ko_KR.UTF-8 
export LC_ALL=ko_KR.UTF-8 

4-4. 로케일 작업#

docker exec -it --user root oracle19c bash

# mkdir -p /usr/share/i18n/charmaps
# mkdir -p /usr/share/i18n/locales
# cp /usr/lib/locale/locale-archive /usr/lib/locale/locale-archive.backup


yum install wget
wget https://yum.oracle.com/public-yum-ol7.repo
yum-config-manager --enable ol7_latest
yum clean all
yum makecache

# locale 관련 패키지 설치
yum reinstall -y glibc-common
yum install -y glibc-locale-source

# 기본 로케일 데이터 복사
cp /usr/share/locale/ko/LC_MESSAGES/* /usr/lib/locale/

# 현재 사용 가능한 로케일 확인
locale -a

# 로케일 생성
localedef -i ko_KR -c -f UTF-8 ko_KR.UTF-8
exit

4-5. SQL*Plus#

docker exec -i -t oracle19c bash

sqlplus /nolog
conn / as sysdba
Issue Sharer
Comment 0

Add a comment
New subtask
Assignee
No assignee
Due date
No due date
Label
docker ubuntu oracle
Comment 0