1 Docker win10环境准备

1.1安装环境:

windows10 64bit

开启Hyper-V 

(注意:开启Hyper-V后,原先电脑的虚拟机将不可用,如VMware )

控制面板 -> 程序 -> 启用或关闭Windows功能 -> 选中Hyper-V   (设置完自动重启生效)

docker win10 假死 win10 docker使用_docker

1.2安装docker for windows

下载并安装 https://hub.docker.com/editions/community/docker-ce-desktop-windows

docker win10 假死 win10 docker使用_操作系统_02

1.3启动Docker ,可右键进入设置页面

docker win10 假死 win10 docker使用_docker win10 假死_03

docker win10 假死 win10 docker使用_git_04

1.4验证安装ok

打开powershell,运行$docker info 

docker win10 假死 win10 docker使用_运维_05

2 Docker镜像拉取

注意:可拉取自己内部的镜像源或公共的镜像源或下载一个镜像,均可!以下例子主要针对内部源

以下命令行操作需在git bash下进行(powershell有部分指令无效)

2.1登录仓库(需输入用户名密码,公共源可不用)

  1)需要先在电脑中安装信任证书docker-registry-ca.crt

双击打开(注意:证书安装好后,重启下docker)

docker win10 假死 win10 docker使用_docker_06

  

docker win10 假死 win10 docker使用_docker win10 假死_07

docker win10 假死 win10 docker使用_docker_08

  2)命令登录,成功则显示success

$winpty docker login http://ip或domain

docker win10 假死 win10 docker使用_运维_09

2.2拉取镜像(可根据需要改为拉取公共源,如ubuntu:latest)

 $docker pull 192.168.80.64/ktvme/phpenv:latest

查看镜像

$docker images

docker win10 假死 win10 docker使用_docker_10

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

docker win10 假死 win10 docker使用_操作系统_11

这里特别注意下,1)路径都需要使用正斜杠;2)以上路径映射需根据本地环境自行修改即可;3)在git bash下执行会出现以下错误,后续命令需要在powershell下执行(如果在git bash执行过,则先删除已创建的容器,重新创建评审)

没有报错即成功

docker win10 假死 win10 docker使用_git_12

查看容器

$docker ps 

docker win10 假死 win10 docker使用_运维_13

2.4开启已创建的容器

$docker start ktvme

2.5验证环境是否ok

方法一、浏览器可正常访问:http://xxx.xxx.xxx:90

方法二、直接进入容器查看环境情况

进入已开启的容器内,并到命令行(成功后就跟ssh登录linux环境一样操作了)

$docker exec -it ktvme /bin/bash

docker win10 假死 win10 docker使用_docker_14

---------------------------------------

已有镜像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

windows下面安装了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 http://192.168.80.64 

2、使用docker-machine指令

$docker-machine ssh default

$docker run -it ubuntu /bin/bash

 

4.2 git bash允许docker run/start时报错OCI runtime create failed

docker win10 假死 win10 docker使用_操作系统_15