博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
window10下docker使用
阅读量:6271 次
发布时间:2019-06-22

本文共 3051 字,大约阅读时间需要 10 分钟。

hot3.png

1 Docker win10环境准备

1.1安装环境:

windows10 64bit

开启Hyper-V 

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

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

0d28b70035b3942e986247eecb983858127.jpg

1.2安装docker for windows

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

3371a28a2fa0f158ed5fd78a754bcdd2d22.jpg

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

070e2f931d1681ee93d1cdc3beffd811525.jpg

8e4df2c99dc75e89e16a67bd9ce3376060c.jpg

1.4验证安装ok

打开powershell,运行$docker info 

c6810cb37242986bba22c3f1addce6df7d5.jpg

2 Docker镜像拉取

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

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

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

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

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

d35873de1e95daabc27abecfa3a59af5b5c.jpg

  3d3c0ba99c957326b9e43c04cb23c0a8162.jpg

8a29085999d9f15afae21f5cbfc6288c9f9.jpg

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

$winpty docker login ip或domain

6d418c5be35104a5c7a2b35b63fab65ee79.jpg

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

 $docker pull 192.168.80.64/ktvme/phpenv:latest

cd2e82c17a38b0584441a9cbc6d522e8855.jpg

查看镜像

$docker images

7a0502058a16b83f4bb87d7f959004e3c9f.jpg

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

05703d768737ef09e58a5b91b9ff378903d.jpg

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

没有报错即成功

443fb1897aa57f0531fd736a9d23f0b9ce5.jpg

查看容器

$docker ps 

e1663171399889ac8131d8be344aaf105bb.jpg

2.4开启已创建的容器

$docker start ktvme

2.5验证环境是否ok

方法一、浏览器可正常访问:

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

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

$docker exec -it ktvme /bin/bash

8efa8554dd57d072c2a203a18685e070cba.jpg

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

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

0286df60cf598f6594075f19f20ddb212cc.jpg

 

5 扩展学习资料

5.1基础入门,推荐阮一峰的

5.2 Docker文档(适合系统化学习)

注:访问不是很稳定,建议翻墙

转载于:https://my.oschina.net/u/125977/blog/3014945

你可能感兴趣的文章
mysql多表查询及其 group by 组内排序
查看>>
alsa的snd_pcm_readi()函数和snd_pcm_writei()
查看>>
Android学习网站推荐(转)
查看>>
嵌入式根文件系统的移植和制作详解
查看>>
MEF部件的生命周期(PartCreationPolicy)
查看>>
LCD的接口类型详解
查看>>
nginx 基础文档
查看>>
LintCode: Unique Characters
查看>>
Jackson序列化和反序列化Json数据完整示例
查看>>
.net 中的DllImport
查看>>
nyoj 517 最小公倍数 【java睑板】
查看>>
include与jsp:include区别
查看>>
ftp的20 21端口和主动被动模式
查看>>
MySQL存储引擎选型
查看>>
Java中的statickeyword具体解释
查看>>
Linux车载系统的开发方向
查看>>
并发编程之五--ThreadLocal
查看>>
摄像头驱动OV7725学习笔记连载(二):0V7725 SCCB时序的实现之寄存器配置
查看>>
iOS播放短的音效
查看>>
[java] java 线程join方法详解
查看>>