win7需要安装toolbox
官方地址
一路下一步即可
然后点图标Docker Quickstart Terminal
一般会让你下载boot2docker.iso
说法是复制安装目录的该文件,粘贴到
C:\Users\用户名.docker\machine\cache
我这里粘贴了还是需要下载,最后一气之下挂了全局代理更新。
boot2docker默认的账户docker,密码是tcuser,提权root命令是 sudo -i 或者 sudo su root
虚拟机的ip为192.168.99.100,可SSH登录
或者直接使用powershell也不错,因为powershell可以复制。
更换toolbox使用阿里云加速
直接改阿里云docker镜像,阿里云docker登陆地址
这步需要在powershell里操作,直接在SSH客户端登陆操作会显示,提示这个并不是SSH客户端的问题,是不能在SSH客户端运行dokcer-machine,你在powershell里就可以用,如果不能用,安装一下
image.pngdocker-machine ssh default
或者直接操作这一步在SSH客户端中
sudo sed -i "s|EXTRA_ARGS='|EXTRA_ARGS='--registry-mirror=加速地址 |g" /var/lib/boot2docker/profile
exit
docker-machine restart default
安装完之后默认镜像安装在C盘,如果想改位置参考,里面还有怎么部署项目到docker上。
几个常用命令
查找镜像仓库的镜像
docker search 关键词(可以是mysql等)
查看docker虚拟机的ip
docker-machine ip
查看虚拟机的环境变量
docker-machine env default
显示本地已有的镜像
docker images
删除本地已有的镜像(IMAGE ID)
docker rmi IMAGE ID
查看Docker虚拟机的状态
docker-machine ls
查看所有容器
docker ps -a
查看所有容器ID
docker ps -a -q
stop停止所有容器,对应的启动就是start
docker stop $(docker ps -a -q)
remove删除所有容器
docker rm $(docker ps -a -q)
启动所有的容器命令(tail -n +2 表示从第二行开始读取)
docker start $(docker ps -a | awk '{ print $1}' | tail -n +2)
从容器拷贝文件到宿主机
拷贝方式为:
docker cp 容器名或者容器ID:容器中要拷贝的文件名及其路径 要拷贝到宿主机里面对应的路径
例如,将容器:mycontainer ,
中路径:/opt/testnew/ 下的文件:file.txt 拷贝到宿主机:/opt/test/ 路径下,
在宿主机中执行命令如下:
docker cp mycontainer:/opt/testnew/file.txt /opt/test/
从宿主机拷贝文件到容器
拷贝方式为:
docker cp 宿主机中要拷贝的文件名及其路径 容器名或容器ID:要拷贝到容器里面对应的路径
例如,将宿主机中路径:/opt/test/下的文件:file.txt
拷贝到容器:mycontainer 的:/opt/testnew/路径下,
同样还是在宿主机中执行命令如下:
docker cp /opt/test/file.txt mycontainer:/opt/testnew/
在拉取镜像的时候我们通常会查看拉去的版本,我是用这种方法查看的。
实际上用Docker管理工具Portainer下载镜像也行?
这一步感觉没什么卵用。
接着登录你的portainer,选择Registries->点击Add registry->Custom registry 之后在name这里填aliyun表示这是阿里云的镜像站,url填你刚才复制下来的地址最后点击Add registry就好。
我一般是在上面下好镜像,然后回命令行启动容器。
portainer就能纳入管理。
试一下下载一个mysql看看快不快:
docker pull mysql
下载完镜像,我们运行一个容器:
docker run -d -p 3306:3306 --name mysql -e MYSQL_ROOT_PASSWORD=123 mysql:latest
接下来我们打开windows下的mysql客户端,服务器地址填docker虚拟机的IP地址,通过docker-machine env可以看到,我这里是192.168.99.100,然后用户名root,密码123,这样我们就可以连接到docker容器里面的mysql了。
【注意,Docker容器是在VirtualBox的虚拟机里面,不是在Windows里面,所以不能用127.0.0.1访问】
Oracle
拉取
docker pull registry.cn-hangzhou.aliyuncs.com/qida/oracle-xe-11g
启动
docker run -d -p 49160:22 -p 49161:1521 -e ORACLE_ALLOW_REMOTE=true registry.cn-hangzhou.aliyuncs.com/qida/oracle-xe-11g
连接数据库
hostname: 192.168.99.100
port: 49161
sid: xe
username: system
password: oracle
Password for SYS & SYSTEM
CREATE TEMPORARY TABLESPACE ADAMOR_TEMP TEMPFILE '/u01/app/oracle/oradata/adamor/ADAMOR_TEMP.DBF' SIZE 32M AUTOEXTEND ON NEXT 32M MAXSIZE UNLIMITED EXTENT MANAGEMENT LOCAL;
对该路径赋权/u01/app/oracle/oradata/adamor/
建表语句
CREATE TABLESPACE ADAMOR LOGGING DATAFILE '/u01/app/oracle/oradata/adamor/ADAMOR.DBF' SIZE 32M AUTOEXTEND ON NEXT 32M MAXSIZE UNLIMITED EXTENT MANAGEMENT LOCAL;
CREATE USER adamor IDENTIFIED BY Ab123456 ACCOUNT UNLOCK DEFAULT TABLESPACE ADAMOR TEMPORARY TABLESPACE ADAMOR_TEMP;
CREATE USER eventor IDENTIFIED BY Ab123456 ACCOUNT UNLOCK DEFAULT TABLESPACE ADAMOR TEMPORARY TABLESPACE ADAMOR_TEMP;
CREATE USER auditor IDENTIFIED BY Ab123456 ACCOUNT UNLOCK DEFAULT TABLESPACE ADAMOR TEMPORARY TABLESPACE ADAMOR_TEMP;
GRANT DBA TO adamor;
GRANT DBA TO eventor;
GRANT DBA TO auditor;
CentOS
docker pull registry.cn-hangzhou.aliyuncs.com/atliwen/centos6.8-ssh
docker run -it -p 48122:22 registry.cn-hangzhou.aliyuncs.com/atliwen/centos6.8-ssh
ES
docker pull docker.elastic.co/elasticsearch/elasticsearch:6.3.2
//ElasticSearch的默认端口是9200,我们把宿主环境9200端口映射到Docker容器中的9200端口,就可以访问到Docker容器中的ElasticSearch服务了,同时我们把这个容器命名为es。
docker run -d --name es -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" docker.elastic.co/elasticsearch/elasticsearch:6.3.2
//由于要进行配置,因此需要进入容器当中修改相应的配置信息。
docker exec -it es /bin/bash
# 显示文件
ls
结果如下:
LICENSE.txt README.textile config lib modules
NOTICE.txt bin data logs plugins
# 进入配置文件夹
cd config
# 显示文件
ls
结果如下:
elasticsearch.keystore ingest-geoip log4j2.properties roles.yml users_roles
elasticsearch.yml jvm.options role_mapping.yml users
# 修改配置文件
vi elasticsearch.yml
# 加入跨域配置
http.cors.enabled: true
http.cors.allow-origin: "*"
//由于修改了配置,因此需要重启ElasticSearch容器。
docker restart es
//安装ElasticSearch-Head,需要有一个管理界面进行查看ElasticSearch相关信息
docker pull mobz/elasticsearch-head:5
docker run -d --name es_admin -p 9100:9100 mobz/elasticsearch-head:5
http://docker的IP:9100/
连接docker进行管理,es集群配置。
rabbitmq,参考地址
run命令说明
-name 表示给容器取别名,用于区分,名字不能重复
-d 表示容器在后台运行
-p 表示映射本地端口8080到容器的80端口,注意这里的本地指的是虚拟机ip,不是127.0.0.1
注意-p 50001:22这句,意思是将docker的50001端口和container的22端口绑定,这样访问docker的50001等价于访问container的22端口
-t 选项让Docker分配一个伪终端(pseudo-tty)并绑定到容器的标准输入上
-i 则让容器的标准输入保持打开
当利用 docker run 来创建容器时,Docker 在后台运行的标准操作包括:
(1)检查本地是否存在指定的镜像,不存在就从公有仓库下载
(2)利用镜像创建并启动一个容器
(3)分配一个文件系统,并在只读的镜像层外面挂载一层可读写层
(4)从宿主主机配置的网桥接口中桥接一个虚拟接口到容器中去
(5)从地址池配置一个 ip 地址给容器
(6)执行用户指定的应用程序
(7)执行完毕后容器被终止
我如果修改镜像,我如何把文件拉取到镜像中
打开Oracle VM VirtualBox
设置
然后设置共享文件夹的路径和名称,并且选择“自动挂载”和固定分配,然后在这个设置的共享目录里面就可以随意创建想要的目录,然后映射到容器了。
有同学不禁会问这个还要去打开图形界面设置共享文件夹很麻烦,Docker Toolbox安装完成是默认共享了c/Users到虚拟机的,所以不想重新设置可以映射/c/Users的目录,像我需要在部署的时候直接通过运行脚本的形式运行容器,就不会再去重新设置了,虽然也可以通过VBoxManage命令来直接创建共享文件夹,但是不再去研究这个了,/c/Users已经可以满足需求。
需要在run的时候加入这么一段
·-v /c/Users/docker:/home·
然后进入根目录home文件夹找到共享的文件
退出镜像,保存你所做的更改
docker ps看下号码,然后docker commit 号码 名字/名字
我退出镜像,如何重新进入镜像
docker ps看下号码,然后docker exec -it 号码 /bin/bash
对于镜像的操作需要开启防火墙。
网友评论