由于Docker引擎的守护进程使用的是Linux的内核,所以需要借用虚拟机。
windows下docker的安装还分为win10专业版(支持Hyper-V)和非win10专业版(不支持Hyper-V)两种。
Hyper-V查看方法:控制面板->程序和功能->启用或关闭windows功能->是否有Hyper-V功能。
如果支持Hyper-V,勾选,应该是直接去官方下载安装包安装即可。
我电脑本身是win8,升级后为win10家庭版,也不支持Hyper-V,需要虚拟机。docker toolbox包含了这一系列工具,所以我介绍的是docker toolbox的方法。
一、下载docker toolbox
进入http://mirrors.aliyun.com/docker-toolbox/windows/docker-toolbox/下载最新版本并进入安装。
默认即可,安装完成后,桌面生成3个图标。
- Docker QuickStart shell 这是一个已经配置好Docker的命令行环境
- Oracle VM Virtualbox 虚拟机软件(其实和VMware一样,如果你用过的话)
- Kitematic. 这是Docker的GUI版本 (这个如果不需要,安装时可取消勾选)
二、启动
点击 Docker QuickStart 图标来启动 Docker Toolbox 终端,第一次启动会比较慢,耐心等待…
终于出现可爱的小鲸鱼,安装成功啦。
这里生成了IP 192.168.99.100记住。
三、使用Xshell连接(可忽略)
为什么使用shell呢?因为我就是想少一个图标。对,Xshell是我常用的,既然能代替Docker QuickStart shell,我就可以删除这个图标了。包括我电脑原来的VMware,既然有Oracle VM Virtualbox 了而且是开源的,那我考虑替代一下。上文的Kitematic我也未安装。
Xshell创建连接,主机IP 192.168.99.100,默认用户名docker,密码tcuser。
之后再启动或者关闭,通过Oracle VM Virtualbox即可。
需要注意的是,为了不生成窗口,启动时使用“无界面启动”,此选项不显示启动过程,我电脑要等待1分钟,再连接Xshell
四、镜像命令
命令 | 功能 |
---|---|
docker search 【镜像名】 | 搜索相关镜像 |
docker pull 【镜像名】 | 载入镜像,自动生成仓库 |
docker images | 查看本地所有镜像 |
docker tag 【镜像ID】【仓库:新标签名】 | 为镜像添加一个新的标签 |
docker rmi $(docker images -q) | 删除本地所有镜像 |
五、容器命令
命令 | 功能 |
---|---|
docker run 【镜像】【脚本】 | 生成容器并运行脚本 |
-d | 后台运行 |
-P | 容器内部端口随机映射到主机的高端口 |
-p 5001:5000 | 容器内部端口绑定到指定的主机端口 |
--name mytest | 命名为mytest |
docker ps | 查看正在运行的容器 |
docker ps -a | 查看所有容器 |
docker ps -l | 查询最后一次创建的容器 |
docker stop 【容器名|容器ID】 | 停止容器 |
docker stop $(docker ps) | 停止所有容器 |
docker start 【容器名|容器ID】 | 启动容器 |
docker restart 【容器名|容器ID】 | 重启指定容器 |
docker rm 【容器名|容器ID】 | 移除停止的容器 |
docker rm $(docker ps -a) | 移除容器 |
docker port 【容器名|容器ID】 | 查看端口 |
docker logs 【容器名|容器ID】 | 查看日志 |
docker top 【容器名|容器ID】 | 查看容器内部运行的进程 |
docker exec -it 【容器名|容器ID】 /bin/bash | 进入容器内 |
docker commit -m=“说明” -a=“作者” 【容器名|容器ID】【仓库:标签】 | 从容器创建一个新的镜像 |
六、例
docker pull training/webapp
拉取测试镜像
docker images
查看镜像
docker run -d -p 5001:5000 --name mytest training/webapp python app.py
运行容器
docker ps
查看运行的容器
CONTAINER ID为“容器ID”
NAMES为“容器名”
操作时使用容器名更方便,因为容器名可以自定义而且可以被Tab键自动补全,而容器ID不能被Tab自动补全。