一,安装Docker,下载Docker CE(Community Edition)
1.MAC环境
https://store.docker.com/editions/community/docker-ce-desktop-mac
2.Linux环境
https://store.docker.com/editions/community/docker-ce-server-centos?tab=description
3.Windows环境(Windows 10, Windows7)
https://www.docker.com/products/docker-toolbox
Wiki本地下载地址:DockerToolbox.exe
安装DockerToolbox完成后,将boot2docker.iso置于
C:\Users\Administrator\.docker\machine\cache\boot2docker.iso,路径名根据自己的操作系统用户名有所变化
建议都使用Docker Toolbox,ToolBox会在虚拟机中创建Linux环境并运行Docker Engine
DockerToolBox会使用boot2docker.iso在VirtualBox中创建一个Linux系统实例,
当创建完成后,执行docker-machine ls命令查看default虚拟机已创建
执行docker-machine ssh default进入虚拟机linux环境终端,即可执行docker命令
Docker基础知识
https://docs.docker.com/get-started/#container-diagram
二,容器运行环境
Host OS一般指Unix系的操作系统,Docker利用Linux环境提供Namespace资源隔离技术实现相互隔离的轻量虚拟化环境。
三、Docker名词
Image, 镜像
Contianer, 容器,运行镜像时生成,可保存为镜像
Docker Engine,Docker引擎
Docker File, 镜像制作定义文件
Docker Engine Swarm Mode,Docker引擎集群模式
Docker Compose File,运行服务定义文件,yml格式的文件
Registry,镜像仓库
Official Registry, 官方镜像仓库,访问Docker Hub网站可查询
Private Registry,私有镜像仓库,建立在本地网络用于快速传输镜像文件
四、常用Docker命令
docker ps,查看运行的容器
docker ps -a,查看所有运行的容器
docker ps --help,查看ps参数说明
docker --help,查看所有docker命令的说明
docker images,查看本地已经下载的镜像
docker inspect [container-name],查看容器详细信息
docker exec -it [container-name] /bin/bash,执行容器内部bash
docker run [image-name],运行镜像
docker rm [container-name],删除容器,通过docker ps -a命令查看所有容器,删除不再使用的容器,释放空间
docker search [image-name],搜索官方仓库镜像名称
docker swarm init,初始化建立docker集群
docker service ls,查看运行在docker集群的服务
docker node ls,查看集群节点信息
Docker私有仓库
在Docker Engine配置私有仓库地址,在Docker运行系统中修改配置文件/etc/docker/daemon.json,加入以下内容:
{
"insecure-registries":["10.129.26.1:5000"] ,
"registry-mirrors": ["https://docker.mirrors.ustc.edu.cn"],
"experimental":true
}
以上配置了一个私有仓库地址为10.129.26.1:5000,同时配置了一个镜像仓库的国内访问地址https://docker.mirrors.ustc.edu.cn。
设置experimental为true时,可以使用docker引擎的实验功能
在docker toolbox创建的虚拟机环境中可以尝试使用以下命令加入配置:
sudo -i
echo {\"insecure-registries\":[\"10.129.26.1:5000\"] ,\"registry-mirrors\": [\"https://docker.mirrors.ustc.edu.cn\"],\"experimental\":true} >> /etc/docker/daemon.json
exit
重启boot2docker虚拟机
五、示例
示例1:运行一个Redis容器
从官方仓库下载最新版本的redis镜像,本地运行redis镜像,创建redis容器在后台运行,暴露6379为服务访问端口,并命名容器为redis-one
docker run --name redis-one -p 6379:6379 -d redis redis-server --appendonly yes
关闭redis容器
docker stop redis-one
启动已经存在,再次启动容器
docker start redis-one
示例2:运行一个zookeeper容器
创建最新版本zookeper镜像容器,在后台运行,并暴露2181端口作为服务访问端口
docker run --name zookeeper-one -p 2181:2181 -d zookeeper
docker start zookeeper-one
执行以下命令查看本地镜像,可见redis:latest和zookeeper:latest两个镜像
docker images
示例3:运行一个RabbitMQ容器
从私有仓库10.129.26.1:5000下载rabbitmq:management镜像,启动一个名为rabbit-one的容器,并暴露服务端口5671对应原服务端口5672,15672对应web界面服务端口;
同时设置rabbitmq,hostname=localmq,user=localuser,password=123456,vhost=localvmq
docker run --name rabbit-one -p 15672:15672 -p 5671:5672 --hostname localmq -e RABBITMQ_DEFAULT_USER=localuser -e RABBITMQ_DEFAULT_PASS=123456 -e RABBITMQ_DEFAULT_VHOST=localvmq -d 10.129.26.1:5000/rabbitmq:management
示例4:运行一个Oracle容器
从私有仓库10.129.26.1:5000下载wnameless/oracle-xe-11g镜像,运行名为oracle-one的容器并暴露1521位数据库服务访问端口
docker run --name oracle-one -d -p 49160:22 -p 1521:1521 -e ORACLE_ALLOW_REMOTE=true 10.129.26.1:5000/wnameless/oracle-xe-11g
数据库访问信息:
port: 1521
sid: xe
username: system
password: oracle
创建数据库
使用SQL Developer工具连接到数据库,点击用户,创建新的schema(用户名和密码),并赋予connect和resource权限
拷贝数据
使用SQL Developer工具,使用Tools中Database Copy功能拷贝数据库
如要比较数据库对象结构,可使用Tools中Database Diff功能进行比较
关闭oracle容器
docker stop oracle-one
启动已经存在,再次启动容器
docker start oracle-one