初次使用docker
-
图中给出的信息
1.海:宿主机
2.集装箱:docker容器
3.鲸鱼+集装箱:docker技术
什么是docker
docker是一个开源的应用容器引擎,基于GO语言并遵从Apache2.0协议开源。
docker可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任意流行的Linux机器上,也可以实现虚拟化。
安装步骤
1.卸载virtualbox,顺便把之前的vagrant也卸载掉
由于docker是运行在linux系统上的,所以要想在windows上运行docker需要借助虚拟机。老的docker Toolbox使用Oracle VM VirtualBox 来运行一个简化的linux环境,而目前的docker CE for windows使用的是Hyper-v(从win8开始)虚拟机组件
2.将电脑升级到window10企业版或者专业版
3.启用Hyper-v虚拟机组件
控制面板 -> 程序 -> 开启\关闭功能 ->Hyper-v,全部选中,重启电脑
4.执行docker安装程序
在cmd.exe中运行命令docker -v查看docker是否安装成功。
注:如安装完成启动后无法使用docker命令,很大原因是本地的Hyper-v未启动,Hyper-v需要足够的内存来进行启动,手动调整内存大小。(反正洒家是没遇到过)
搭建本机环境
1.docker pull nginx:1.10
镜像名称的获取方式
2.新建nginx文件夹、php文件夹,这里我们有一个自己配置的dockerfile文件。进入这个文件夹,运行docker build -t [大版本号/REPOSITORY] : [小版本号/IMAGE] .(注意最后有个点,代表使用当前路径的dockerfile文件构建,里面就是需要安装的一些的扩展)来生成一个自己的镜像
注:有时候命令大版本号和小版本号会失败,都是none,可以docker tag [image ID] [name]:[版本]
3.生成nginx容器和php容器
①docker run -idt -p 9000:9000 -v /D/MyWeb:/var/www/html --name ps_php(容器名称) php:5.6(根据哪个
镜像生成的,相当于js类)
②docker run -d -p 80:80 -v /D/MyWeb:/var/www/html -v /D/nginx:/etc/nginx/conf.d --link ps_php(关联php的容器):php(这里一定要是php,否则会出错) --name ps_nginx nginx:1.10
image.png
4.在nginx中配置项目文件,在HOST文件中配置域名
5.重启nginx容器
docker 常用命令
- docker pull nginx:1.11 #安装镜像 1.1为想安装nginx的版本,如果不加则为最新的版本。如下图会提示使用最后一个tag
- docker images 查看镜像列表
- docker ps -a 查看启动的容器
- docker rm [容器ID] 删除容器
- docker rmi [镜像ID] 删除镜像
- docker start [容器ID] 启动容器
- docker stop [容器ID] 停止容器(删除容器之前要先停止)
- docker restart [容器ID] 重启容器
- docker inspect [容器ID] 查看容器详细信息
- docker logs [容器ID] 查看容器日志
镜像、容器、仓库
var p1 = new Person();
即:p1是容器、Person是镜像。至于仓库嘛 就相当于github的代码仓库,github是存代码的仓库,相应的docker仓库就是存放镜像的。
上图分了三个块:
- client(客户端、命令终端)
- DOCKER_HOST (docer daemon)
-
Resistry (镜像仓库)
从左往右看,Client中执行了几个命令,这些命令都于docker daemon(docker的守护进程)有交互,然后docker daemon会根据相应命令做对应的动作。
1.docker build:表示创建了一个镜像,这是一条虚线,虚线从开始到结束指向了中间的images框里。
2.docker pull: 表示从仓库中拉取image,就像githup里pull代码一样。docker daemon接受到pull指令,从Registry(远程镜像仓库)里找带对应镜像(这里是nginx)然后拉到本地的images中。
3.docker run :向daemon发出运行指令,daemon收到指令后去本地的images中找对应镜像。如果能找到就会使用该镜像生成一个容器,如果没找到则会默认执行docker pull从仓库里下载,然后再生成容器,如果容器中运行着我们的代码,那么当容器运行后代码也跟着run起来了
注:
- 有时重启nginx容器,报错:Cannot link to a non running container;解决方法是先重启PHP,然后才能重启nginx
-
给容器中的host文件添加多个域名
image.png