1 Docker win10环境准备
1.1安装环境:
windows10 64bit
开启Hyper-V
(注意:开启Hyper-V后,原先电脑的虚拟机将不可用,如VMware )
控制面板 -> 程序 -> 启用或关闭Windows功能 -> 选中Hyper-V (设置完自动重启生效)
1.2安装docker for windows
下载并安装 https://hub.docker.com/editions/community/docker-ce-desktop-windows
1.3启动Docker ,可右键进入设置页面
1.4验证安装ok
打开powershell,运行$docker info
2 Docker镜像拉取
注意:可拉取自己内部的镜像源或公共的镜像源或下载一个镜像,均可!以下例子主要针对内部源
以下命令行操作需在git bash下进行(powershell有部分指令无效)
2.1登录仓库(需输入用户名密码,公共源可不用)
1)需要先在电脑中安装信任证书docker-registry-ca.crt
双击打开(注意:证书安装好后,重启下docker)
2)命令登录,成功则显示success
$winpty docker login ip或domain
2.2拉取镜像(可根据需要改为拉取公共源,如ubuntu:latest)
$docker pull 192.168.80.64/ktvme/phpenv:latest
查看镜像
$docker images
2.3创建一个新容器
$docker run -i -t -d -p 90:90 -v D:/docker/nginx:/etc/nginx/conf.d -v F:/KM/ktvme/ktvme/branches/:/usr/local/nginx/ktvme --name ktvme --privileged=true 192.168.80.64/ktvme/phpenv:latest /bin/ktvme_start.sh
这里特别注意下,1)路径都需要使用正斜杠;2)以上路径映射需根据本地环境自行修改即可;3)在git bash下执行会出现以下错误,后续命令需要在powershell下执行(如果在git bash执行过,则先删除已创建的容器,重新创建评审)
没有报错即成功
查看容器
$docker ps
2.4开启已创建的容器
$docker start ktvme
2.5验证环境是否ok
方法一、浏览器可正常访问:
方法二、直接进入容器查看环境情况
进入已开启的容器内,并到命令行(成功后就跟ssh登录linux环境一样操作了)
$docker exec -it ktvme /bin/bash
---------------------------------------
已有镜像tar包情况下操作
---------------------------------------
1、得到一个镜像tar包,如test.tar
注意需清楚此包是有docker export还是docker save生成,需要用对应的命令进行加载镜像
2、加载镜像
$docker run -d -i -t -v /ktvme/branches/:/home/www/src/ktvme -v /wechatsong/branches/:/home/www/src/wechatsong -p 80:80 -p 81:81 --name ktvme test:1.0 /bin/bash
后续其他跟上面拉取源方式一样
---------------------------------------
3 Docker常用命令
3.1 Docker的容器导入导出
用到import和export
1、导出容器export(注意:export导出的是容器,不是镜像,导出镜像用下面介绍的命令)
$docker export <CONTAINER ID > > my_container.tar
将容器以tar包方式导出到本地后,我们就可以将它分享给其他人使用
2、导入容器为镜像import
$cat my_container.tar |docker import - image_name:tag
3.2 Docker的镜像导入和导出
用到save和load(注意和容器的导入导出区别,2个不可混用)
1、导出镜像
$sudo docker save -o ubuntu_14.04.tar ubuntu:14.04
2、导入镜像
$ sudo docker load --input ubuntu_14.04.tar
或
$ sudo docker load < ubuntu_14.04.tar
#带参数-i这将导入镜像以及其相关的元数据信息(包括标签等)。
3.3查看镜像
$docker images
3.4显示出所有容器(包括没有启动的)
$docker ps -a
3.5 创建一新的容器(container)
$docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
例 $docker run -d -it --name=ubuntu_server -v /etc/www:/var/www ubuntu:latest
3.6 push镜像到私人仓库
#使用镜像源创建一个指定镜像的标签#docker tag [OPTIONS] IMAGE[:TAG] [REGISTRYHOST/][USERNAME/]NAME[:TAG]$docker tag 192.168.80.64/ktvme/test:latest 192.168.80.64/ktvme/test_swoole:latest#发布镜像 docker push NAME[:TAG]$docker push 192.168.80.64/ktvme/test_swoole:latest
3.7 提交新镜像(在本地)
$docker commit -m="提交的描述信息" -a="作者" 容器id 要创建的目标镜像名:[标签名]
4常见问题或报错处理
4.1 win10下执行命令docker
在下面安装了docker以后,运行docker run -it ubuntu /bin/bash失败,提示错误“cannot enable tty mode on non tty input”,问题及解决详细参考:https://github.com/docker/docker/issues/12469
总结一般2种方案可解决
1、命令前加winpty
$winpty docker login
2、使用docker-machine指令
$docker-machine ssh default
$docker run -it ubuntu /bin/bash
4.2 git bash允许docker run/start时报错OCI runtime create failed
5 扩展学习资料
5.1基础入门,推荐阮一峰的
5.2 Docker文档(适合系统化学习)
注:访问不是很稳定,建议翻墙