一直以来都对Docker如雷贯耳,很想尝试一下但都被各种忙给耽误了,最近由于项目调试,需要安装 Oracle 和 SQL Server 数据库,但又不想安装到本机系统里,于是下决心啃一下docker这块骨头。

操作系统是装在本机VirtualBox里的Debian jessie,根据Docker官方网站的文档进行安装和测试,倒也一切顺利。

到了docker pull的时候由于国外的源很慢,搜了一下,果然有国内的源,我选择了阿里云的,使用很方便,推荐。

 

一点个人的心得分享,供大家参考:(只了解了一点皮毛,感觉这玩意确实方便)



# Oracle XE 11g 容器配置(8521端口,SSH用8522端口)
# 数据库连接:localhost:8521,sid:xe,账号:system(SYS或SYSTEM也行),密码:oracle
# SSH连接:ssh root@localhost -p 8522 密码:admin
docker run -d -p 8522:22 -p 8521:1521 --name oracle-8521 wnameless/oracle-xe-11g
# Oracle XE 11g 容器配置(默认端口,SSH默认端口,数据保存在宿主/var/data/oracle,允许远程连接)
docker run -d -p 22:22 -p 1521:1521 --name oracle-8521 -e ORACLE_ALLOW_REMOTE=true wnameless/oracle-xe-11g

# wnameless版本无法绑定本地卷,sath89版可以绑定本地卷,但是不绑定product目录,会丢失两个包含hostname的*.ora配置文件
# sath89版本好像也不支持ssh
docker run -d -p 18080:8080 -p 11521:1521 --name orcl-xe-11521 -v /var/data/orcl-xe-11521:/u01/app/oracle sath89/oracle-xe-11g
docker run -d -p 28080:8080 -p 21521:1521 --name orcl-xe-21521 -v /var/data/orcl-xe-21521:/u01/app/oracle sath89/oracle-xe-11g

# -d 表示在后台运行容器并返回容器的ID,-i 表示以交互方式运行容器(常与-t联用),-t 表示为容器重新分配一个伪输入终端
# -p 端口1:端口2 表示外部端口1映射到容器内部对应的端口2,我们在外部使用端口1就可以访问到容器内的服务了
# -v 本机路径:容器内路径 表示把本机目录映射到容器内的指定目录,在容器内操作指定目录其实是操作本机目录,可以保证删除容器后,需要保留的文件还在


# SQL Server 2017 for Linux
docker run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=设置一个SA密码" -p 11433:1433 -v /var/data/mssql-11433:/var/opt/mssql --name mssql-11433 -d microsoft/mssql-server-linux 

# 进入实例的bash
docker exec -it 实例名 bash


# docker 的-v和volume只支持本机目录,如果是VirtualBox共享目录挂载的用-v不行,试的mssql直接退出,oracle不退出但也不能连接