Mettez à jour apt source et installez le certificat CA, la commande est la suivante :
sudo apt-get update sudo apt-get install apt-transport-https ca-certificates
Ajouter une clé GPG :
sudo apt-key adv --keyserver hkp://p80.pool.sks-keyservers.net:80 --recv-keys 58118E89F3A912897C070ADBF76221572C52609D
Ouvrez le fichier /etc/apt/sources.list.d/docker.list (créez-en un s'il n'existe pas)
Ajoutez la source deb https://apt.dockerproject.org/repo ubuntu-xenial main et enregistrez
Sélectionnez différentes sources selon la version du système :
On Ubuntu Precise 12.04 (LTS) deb https://apt.dockerproject.org/repo ubuntu-precise main On Ubuntu Trusty 14.04 (LTS) deb https://apt.dockerproject.org/repo ubuntu-trusty main Ubuntu Wily 15.10 deb https://apt.dockerproject.org/repo ubuntu-wily main Ubuntu Xenial 16.04 (LTS) deb https://apt.dockerproject.org/repo ubuntu-xenial main
Choisissez Ubuntu Xenial 16.04 (LTS) ici
Mettez à jour apt et assurez-vous que la source de Docker est correcte
sudo apt-get update apt-cache policy docker-engine
Installation :
sudo apt-get install docker-engine
Aider les utilisateurs ordinaires à utiliser Docker
Le groupe docker d'installation ppa a été créé, sinon sudo groupadd docker le construira
sudo gpasswd -a ${USER} docker sudo service docker restart sudo chmod a+rw /var/run/docker.sock
Recherche Docker : Trouver le miroir Oracle à partir de Docker Hub
$ docker search oracle NAME DESCRIPTION STARS OFFICIAL AUTOMATED oraclelinux Oracle Linux is an open-source operating s... 398 [OK] frolvlad/alpine-oraclejdk8 The smallest Docker image with OracleJDK 8... 269 [OK] alexeiled/docker-oracle-xe-11g This is a working (hopefully) Oracle XE 11... 221 [OK] sath89/oracle-12c Oracle Standard Edition 12c Release 1 with... 214 [OK] sath89/oracle-xe-11g Oracle xe 11g with database files mount su... 133 [OK] isuper/java-oracle This repository contains all java releases... 55 [OK] jaspeen/oracle-11g Docker image for Oracle 11g database 54 [OK] oracle/glassfish GlassFish Java EE Application Server on Or... 30 [OK] oracle/openjdk Docker images containing OpenJDK Oracle Linux 25 [OK] airdock/oracle-jdk Docker Image for Oracle Java SDK (8 and 7)... 23 [OK] ingensi/oracle-jdk Official Oracle JDK installed on centos. 21 [OK] cogniteev/oracle-java Oracle JDK 6, 7, 8, and 9 based on Ubuntu ... 20 [OK] wnameless/oracle-xe-11g Dockerfile of Oracle Database Express Edit... 16 [OK] n3ziniuka5/ubuntu-oracle-jdk Ubuntu with Oracle JDK. Check tags for ver... 14 [OK] oracle/nosql Oracle NoSQL on a Docker Image with Oracle... 13 [OK] collinestes/docker-node-oracle A container with Node.js/Oracle instant cl... 9 [OK] andreptb/oracle-java Debian Jessie based image with Oracle JDK ... 7 [OK] sgrio/java-oracle Docker images of Java 7/8 provided by Orac... 7 [OK] openweb/oracle-tomcat A fork off of Official tomcat image with O... 7 [OK] flurdy/oracle-java7 Base image containing Oracle's Java 7 JDK 5 [OK] davidcaste/debian-oracle-java Oracle Java 8 (and 7) over Debian Jessie 3 [OK] teradatalabs/centos6-java8-oracle Docker image of CentOS 6 with Oracle JDK 8... 3 spansari/nodejs-oracledb nodejs with oracledb installed globally on... 1 publicisworldwide/oracle-core This is the core image based on Oracle Lin... 1 [OK] sigma/nimbus-lock-oracle 0 [OK]
docker pull sath89/oracle-xe-11g
pull :
$ docker images REPOSITORY TAG IMAGE ID CREATED SIZE hello-world latest f2a91732366c 8 days ago 1.85kB sath89/oracle-xe-11g latest 04851454491b 3 months ago 792MB
Créer et démarrer une instance Oracle :
docker run -d -p 9090:8080 -p 1521:1521 -v /home/${USER}/oracle/data:/u01/app/oracle sath89/oracle-xe-11g
Où -p 9090:8080 est le port de gestion Web Oracle Application Express 8080 dans l'image Docker mappée au port 9090 local :
http://localhost:9090/apex workspace: INTERNAL user: ADMIN password: oracle
-p 1521 : 1521 est le port du service Oracle Si vous ne souhaitez pas utiliser 1521 pour le port local, vous pouvez modifier le premier 1521.
Référez-vous spécifiquement à un article de blog précédent pour créer une version simplifiée du client Oracle et de l'environnement de compilation pro*c sous Ubuntu
Je n'ai pas trouvé le logiciel instantclient 11g sur le site officiel d'Oracle. Je l'ai mis sur Tianyi Cloud (code d'accès : 6540)
.Configuration locale Oracle SID :
Ajoutez /opt/oracle/product/network/admin/tnsnames.ora (lié au chemin instantclient) :
XE = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1521)) ) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = xe) ) )
Vous pouvez également y accéder directement sans configurer :
sqlplus sys/oracle@127.0.0.1:1521/xe as sysdba sqlplus system/oracle@//localhost:1521/xe
Une fois configuré, vous pouvez y accéder comme ceci
sqlplus sys/oracle@xe as sysdba sqlplus system/oracle@xe
sys et system sont les deux utilisateurs par défaut, l'un avec l'autorité sysdba et l'autre avec l'autorité système. Le mot de passe initial est Oracle
Il est recommandé de changer le mot de passe système immédiatement après une installation réussie
sqlplus sys/oracle@xe as sysdba SQL>alter user sys identified by your-passwd
Créer un espace table
SQL> create tablespace myts datafile '/u01/app/oracle/oradata/XE/myts.dbf' size 100M autoextend on next 5M maxsize 400M;
Modifier l'espace de table par défaut du système
SQL> alter database default tablespace MYTS; SQL> select a.property_name, a.property_value from database_properties a where a.property_name like '%DEFAULT%'; PROPERTY_NAME -------------------------------------------------------------------------------- PROPERTY_VALUE -------------------------------------------------------------------------------- DEFAULT_TEMP_TABLESPACE TEMP DEFAULT_PERMANENT_TABLESPACE MYTS DEFAULT_EDITION ORA$BASE .......
Créez des utilisateurs, autorisez et spécifiez des espaces de table
SQL> create user scott identified by tiger; SQL> grant connect, resource to scott; SQL> alter user scott default tablespace myts;
Script de création de table myscott.sql :
-------------------------------------------------------- -- File created - 星期六-六月-14-2014 -------------------------------------------------------- -------------------------------------------------------- -- DDL for Table BONUS -------------------------------------------------------- CREATE TABLE "BONUS" ( "ENAME" VARCHAR2(10), "JOB" VARCHAR2(9), "SAL" NUMBER, "COMM" NUMBER ) ; -------------------------------------------------------- -- DDL for Table DEPT -------------------------------------------------------- CREATE TABLE "DEPT" ( "DEPTNO" NUMBER(2,0), "DNAME" VARCHAR2(14), "LOC" VARCHAR2(13) ) ; -------------------------------------------------------- -- DDL for Table EMP -------------------------------------------------------- CREATE TABLE "EMP" ( "EMPNO" NUMBER(4,0), "ENAME" VARCHAR2(10), "JOB" VARCHAR2(9), "MGR" NUMBER(4,0), "HIREDATE" DATE, "SAL" NUMBER(7,2), "COMM" NUMBER(7,2), "DEPTNO" NUMBER(2,0) ) ; -------------------------------------------------------- -- DDL for Table SALGRADE -------------------------------------------------------- CREATE TABLE "SALGRADE" ( "GRADE" NUMBER, "LOSAL" NUMBER, "HISAL" NUMBER ) ; --------------------------------------------------- -- DATA FOR TABLE BONUS -- FILTER = none used --------------------------------------------------- REM INSERTING into BONUS --------------------------------------------------- -- END DATA FOR TABLE BONUS --------------------------------------------------- --------------------------------------------------- -- DATA FOR TABLE DEPT -- FILTER = none used --------------------------------------------------- REM INSERTING into DEPT Insert into DEPT (DEPTNO,DNAME,LOC) values (10,'ACCOUNTING','NEW YORK'); Insert into DEPT (DEPTNO,DNAME,LOC) values (20,'RESEARCH','DALLAS'); Insert into DEPT (DEPTNO,DNAME,LOC) values (30,'SALES','CHICAGO'); Insert into DEPT (DEPTNO,DNAME,LOC) values (40,'OPERATIONS','BOSTON'); --------------------------------------------------- -- END DATA FOR TABLE DEPT --------------------------------------------------- --------------------------------------------------- -- DATA FOR TABLE EMP -- FILTER = none used --------------------------------------------------- REM INSERTING into EMP Insert into EMP (EMPNO,ENAME,JOB,MGR,HIREDATE,SAL,COMM,DEPTNO) values (7369,'SMITH','CLERK',7902,to_timestamp('17-12月-80 12.00.00.000000000 上午','DD-MON-RR HH.MI.SS.FF AM'),800,null,20); Insert into EMP (EMPNO,ENAME,JOB,MGR,HIREDATE,SAL,COMM,DEPTNO) values (7499,'ALLEN','SALESMAN',7698,to_timestamp('20-2月 -81 12.00.00.000000000 上午','DD-MON-RR HH.MI.SS.FF AM'),1600,300,30); Insert into EMP (EMPNO,ENAME,JOB,MGR,HIREDATE,SAL,COMM,DEPTNO) values (7521,'WARD','SALESMAN',7698,to_timestamp('22-2月 -81 12.00.00.000000000 上午','DD-MON-RR HH.MI.SS.FF AM'),1250,500,30); Insert into EMP (EMPNO,ENAME,JOB,MGR,HIREDATE,SAL,COMM,DEPTNO) values (7566,'JONES','MANAGER',7839,to_timestamp('02-4月 -81 12.00.00.000000000 上午','DD-MON-RR HH.MI.SS.FF AM'),2975,null,20); Insert into EMP (EMPNO,ENAME,JOB,MGR,HIREDATE,SAL,COMM,DEPTNO) values (7654,'MARTIN','SALESMAN',7698,to_timestamp('28-9月 -81 12.00.00.000000000 上午','DD-MON-RR HH.MI.SS.FF AM'),1250,1400,30); Insert into EMP (EMPNO,ENAME,JOB,MGR,HIREDATE,SAL,COMM,DEPTNO) values (7698,'BLAKE','MANAGER',7839,to_timestamp('01-5月 -81 12.00.00.000000000 上午','DD-MON-RR HH.MI.SS.FF AM'),2850,null,30); Insert into EMP (EMPNO,ENAME,JOB,MGR,HIREDATE,SAL,COMM,DEPTNO) values (7782,'CLARK','MANAGER',7839,to_timestamp('09-6月 -81 12.00.00.000000000 上午','DD-MON-RR HH.MI.SS.FF AM'),2450,null,10); Insert into EMP (EMPNO,ENAME,JOB,MGR,HIREDATE,SAL,COMM,DEPTNO) values (7788,'SCOTT','ANALYST',7566,to_timestamp('19-4月 -87 12.00.00.000000000 上午','DD-MON-RR HH.MI.SS.FF AM'),3000,null,20); Insert into EMP (EMPNO,ENAME,JOB,MGR,HIREDATE,SAL,COMM,DEPTNO) values (7839,'KING','PRESIDENT',null,to_timestamp('17-11月-81 12.00.00.000000000 上午','DD-MON-RR HH.MI.SS.FF AM'),5000,null,10); Insert into EMP (EMPNO,ENAME,JOB,MGR,HIREDATE,SAL,COMM,DEPTNO) values (7844,'TURNER','SALESMAN',7698,to_timestamp('08-9月 -81 12.00.00.000000000 上午','DD-MON-RR HH.MI.SS.FF AM'),1500,0,30); Insert into EMP (EMPNO,ENAME,JOB,MGR,HIREDATE,SAL,COMM,DEPTNO) values (7876,'ADAMS','CLERK',7788,to_timestamp('23-5月 -87 12.00.00.000000000 上午','DD-MON-RR HH.MI.SS.FF AM'),1100,null,20); Insert into EMP (EMPNO,ENAME,JOB,MGR,HIREDATE,SAL,COMM,DEPTNO) values (7900,'JAMES','CLERK',7698,to_timestamp('03-12月-81 12.00.00.000000000 上午','DD-MON-RR HH.MI.SS.FF AM'),950,null,30); Insert into EMP (EMPNO,ENAME,JOB,MGR,HIREDATE,SAL,COMM,DEPTNO) values (7902,'FORD','ANALYST',7566,to_timestamp('03-12月-81 12.00.00.000000000 上午','DD-MON-RR HH.MI.SS.FF AM'),3000,null,20); Insert into EMP (EMPNO,ENAME,JOB,MGR,HIREDATE,SAL,COMM,DEPTNO) values (7934,'MILLER','CLERK',7782,to_timestamp('23-1月 -82 12.00.00.000000000 上午','DD-MON-RR HH.MI.SS.FF AM'),1300,null,10); --------------------------------------------------- -- END DATA FOR TABLE EMP --------------------------------------------------- --------------------------------------------------- -- DATA FOR TABLE SALGRADE -- FILTER = none used --------------------------------------------------- REM INSERTING into SALGRADE Insert into SALGRADE (GRADE,LOSAL,HISAL) values (1,700,1200); Insert into SALGRADE (GRADE,LOSAL,HISAL) values (2,1201,1400); Insert into SALGRADE (GRADE,LOSAL,HISAL) values (3,1401,2000); Insert into SALGRADE (GRADE,LOSAL,HISAL) values (4,2001,3000); Insert into SALGRADE (GRADE,LOSAL,HISAL) values (5,3001,9999); --------------------------------------------------- -- END DATA FOR TABLE SALGRADE --------------------------------------------------- -------------------------------------------------------- -- DDL for Index PK_EMP -------------------------------------------------------- CREATE UNIQUE INDEX "PK_EMP" ON "EMP" ("EMPNO") ; -------------------------------------------------------- -- DDL for Index PK_DEPT -------------------------------------------------------- CREATE UNIQUE INDEX "PK_DEPT" ON "DEPT" ("DEPTNO") ; -------------------------------------------------------- -- Constraints for Table EMP -------------------------------------------------------- ALTER TABLE "EMP" ADD CONSTRAINT "PK_EMP" PRIMARY KEY ("EMPNO") ENABLE; -------------------------------------------------------- -- Constraints for Table DEPT -------------------------------------------------------- ALTER TABLE "DEPT" ADD CONSTRAINT "PK_DEPT" PRIMARY KEY ("DEPTNO") ENABLE; -------------------------------------------------------- -- Ref Constraints for Table EMP -------------------------------------------------------- ALTER TABLE "EMP" ADD CONSTRAINT "FK_DEPTNO" FOREIGN KEY ("DEPTNO") REFERENCES "DEPT" ("DEPTNO") ENABLE;
Exécuter des scripts et des requêtes :
SQL> @myscott.sql SQL> select * from EMP;
$ docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 3c6a2c2761fb sath89/oracle-xe-11g "/entrypoint.sh " 2 minutes ago Up About a minute 0.0.0.0:1521->1521/tcp, 0.0.0.0:9090->8080/tcp dreamy_pasteur $ docker exec -it 3c6a2c2761fb /bin/bash root@3c6a2c2761fb:/# su oracle oracle@3c6a2c2761fb:/$ $ORACLE_HOME/bin/sqlplus / as sysdba SQL*Plus: Release 11.2.0.2.0 Production on Wed Nov 29 13:40:15 2017 Copyright (c) 1982, 2011, Oracle. All rights reserved. Connected to: Oracle Database 11g Express Edition Release 11.2.0.2.0 - 64bit Production SQL> quit Disconnected from Oracle Database 11g Express Edition Release 11.2.0.2.0 - 64bit Production oracle@8e1a86793036:/$ $ORACLE_HOME/bin/sqlplus scott/tiger SQL*Plus: Release 11.2.0.2.0 Production on Wed Nov 29 13:40:24 2017 Copyright (c) 1982, 2011, Oracle. All rights reserved. Connected to: Oracle Database 11g Express Edition Release 11.2.0.2.0 - 64bit Production SQL> select * from emp; EMPNO ENAME JOB MGR HIREDATE SAL COMM ---------- ---------- --------- ---------- --------- ---------- ---------- DEPTNO ---------- 7369 SMITH CLERK 7902 17-DEC-80 800 20 ......
$ docker stop 3c6a2c2761fb $ docker start 3c6a2c2761fb
Pour faciliter la gestion ultérieure, vous pouvez ajouter un alias en .bashrc
alias orastartdock='docker start 3c6a2c2761fb' alias orastopdock='docker stop 3c6a2c2761fb'
Également disponible sur
docker run -d --name=oracle1 -p 9090:8080 -p 1521:1521 -v /home/${USER}/oracle/data:/u01/app/oracle sath89/oracle-xe-11g
Spécifiez le nom du conteneur oracle1, qui peut être utilisé pour arrêter et démarrer l'instance des manières suivantes :
$ docker stop oracle1 $ docker start oracle1
Au lieu d'utiliser l'ID CONTAINER généré aléatoirement par docker
Vous pouvez utiliser ~$ docker rename oracle1 ora1 pour renommer le nom du conteneur docker, utiliser ~$docker rm nom du conteneur ou ID du conteneur pour supprimer, ou vous pouvez utiliser la commande suivante pour tous les supprimer
docker rm $(docker ps -aq)
Bien sûr, il ne peut pas être supprimé au démarrage.
Tant que le port et le chemin de stockage des données sont modifiés, une image peut créer plusieurs instances Oracle, telles que :
docker run -d --name=oracle2 -p 9092:8080 -p 1522:1521 -v /home/${USER}/oracle/data2:/u01/app/oracle sath89/oracle-xe-11g docker run -d --name=ora3 -p 9093:8080 -p 1523:1521 -v /home/${USER}/oracle/data3:/u01/app/oracle sath89/oracle-12c
De cette façon, vous pouvez facilement configurer plusieurs environnements Oracle.
$docker pull mysql:5.7.20 $docker run -p 3307:3306 --name mysql5.7.20 -v /home/${USER}/mysqldata/mysql5.7.20/conf:/etc/mysql/conf.d -v /home/${USER}/mysqldata/mysql5.7.20/datadir:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7.20 $ docker exec -it mysql5.7.20 bash # mysql -p123456 mysql: [Warning] Using a password on the command line interface can be insecure. Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 4 Server version: 5.7.20 MySQL Community Server (GPL) Copyright (c) 2000, 2017, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION; Query OK, 0 rows affected, 1 warning (0.01 sec) mysql> FLUSH PRIVILEGES; Query OK, 0 rows affected (0.00 sec) mysql> quit Bye root@657aaa1203f4:/# exit exit ~$ mysql -h 127.0.0.1 -P3307 -u root -123456 mysql: [Warning] Using a password on the command line interface can be insecure. Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 17 Server version: 5.7.20 MySQL Community Server (GPL) Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement mysql> quit
Vous devez ajouter -h 127.0.0.1 ici, sinon même si le port -P3307 est spécifié, il sera toujours connecté au mysql de la machine hôte au lieu de celui du conteneur docker. En effet, le port 3306 est spécifié. dans .my.cf sur la machine hôte.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!