Hello Docker

本文用来记录我的docker for mac之旅。

一、获取docker

https://docs.docker.com/docker-for-mac/install/
从以上链接可以获取到Mac版本docker的下载地址,安装好之后,Mac的菜单栏中将会出现docker图标。

二、Hello Docker

打开一个terminal,在其中输入

docker run hello-world

此时系统会拉取测试镜像。

但是我这边系统却报错了。提示如下:

docker: Error response from daemon: Get https://registry-1.docker.io/v2/library/hello-world/manifests/latest: unauthorized: incorrect username or password.
See ‘docker run –help’.

百思不得其解。后来却发现,docker登录的时候要使用docker id,而不要使用email即可。

重新登录可点击docker图标,也可在terminal下输入:

docker login

重新登录即可。

三、Hello Oracle

我们使用docker的主要目的就在于快速的构建所需要的基础环境,例如我现在需要一个Oracle环境,那我该如何搞呢,非常简单,我们首先需要pull一个Oracle的docker镜像。

docker pull wnameless/oracle-xe-11g

上面这个镜像提供了一个Express版本的Oracle。

详情:https://hub.daocloud.io/repos/e06fc13e-3adb-4a9f-b44a-86a55df02c5a

拉取完成之后,我们仅需要简单的执行:

docker run -d -p 1521:1521 –name oracle wnameless/oracle-xe-11g

我们的Oracle就在本地跑起来咯 ~

hostname: localhost
port: 1521
sid: xe
username: system
password: oracle

这个Oracle的相关信息如上所示。

但是,当我在macOS下面使用Navicat连接数据库时却报如下错误

ORA-21561: OID generation failed

一开始以为是docker镜像有问题,尝试了好几个镜像都一样的错误,后来Google了下,发觉这个问题都是跟主机名有关,尝试修改镜像里的主机名,发现还是一样的错误,后来想到,会不会是主机的问题?于是执行:

hostname

获取到macOS的主机名,之后将其配置到

/etc/hosts

中127.0.0.1 后,问题解决,嘿嘿。

进阶:

上面的操作做完以后,会发现数据并没有被持久化。所以我们更改下容器启动参数:

docker run -d -p 1521:1521 -v /opt/docker/oracle/data:/u01/app/oracle –name oracle wnameless/oracle-xe-11g

这样就可以把/opt/docker/oracle/data映射进docker的/u01/app/oracle中去。