一.什么是docker
Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。
二.docker思想
1.集装箱(程序打包,不容易丢失)
2.标准化:
运输方式,程序运输到超级码头,应用方从超级码头获取代码
存储方式,不需要关心应用存在什么地方
api接口,运行启动等命令相同
3.隔离(类似虚拟机)
以上思想解决了什么问题:
docker解决了运行环境不一致带来的问题
每一个程序分配固定cpu,磁盘,内存等(隔离)
docker标准化让快速扩展,弹性伸缩变得简单(例如双11扩展机器,只需要从超级码头获取代码,标准化运行即可)
三.docker核心技术
1.镜像(集装箱)
2.仓库(超级码头)
3.容器(运行程序的地方)
四.docker安装
https://store.docker.com/editions/community/docker-ce-desktop-mac
双击dmg文件,安装完毕运行,可以看到一个鲸鱼图标
打开终端输入 docker version
安装完毕,docker可以在windows,macos以及linux上安装
五.实践
1.获取docker镜像
命令:docker images–查看本机docker镜像
docker pull --从docker仓库获取镜像,例如docker pull hello-world(不加地址的时候,hellow-world是docker仓库拉取的,也就是hub.docker.com拉取的)
2.运行镜像
命令:docker run
3.运行docker nginx
从网易蜂巢下载,hub.docker.com比较慢
蜂巢地址:https://c.163yun.com/hub#/m/home/
找到地址:docker pull hub.c.163.com/library/nginx:latest 通过终端下载nginx,运行完毕docker images查看本机镜像
可以通过 docker run hub.c.163.com/library/nginx 运行nginx,docker ps 查看
这种前台的运行方式不适合nginx 通过ctrl+c退出,或者docker stop ac90d1e52575来停止运行
nginx应通过后台运行,通过docker run --help查看运行参数
docker run -d hub.c.163.com/library/nginx
运行完毕后,可以通过docker exec 进入容器 docker exec -it 084e
4.docker网络
网络类型:bridge,host,none 默认使用网桥模式(需要端口映射)
使用网桥,运行nginx
docker run -d -p 8080:80 hub.c.163.com/library/nginx
5.制作镜像
两个命令 dockerfile和docker build
dockerfile 告诉docker要怎样制作,需要什么步骤,docker build按照dockerfile的步骤来执行
首先创建dockerfile文件
from hub.c.163.com/library/tomcat
MAINTAINER michelle xxx.163.com
COPY jpress-web-newest.war /usr/local/tomcat/webapps
之后进行build
docker build -t jpress:latest .
可以看到以下输出
通过docker images可以看到自己创建的镜像
接下来运行镜像
docker run -d -p 8888:8080 jpress
通过路径访问
http://localhost:8888/jpress-web-newest
拓展:创建mysql
在网易蜂巢找到mysql镜像 进行下载
docker pull hub.c.163.com/library/mysql:latest
运行mysql
docker run -d -p 3307:3307 -e MYSQL_ROOT_PASSWORD=000000 -e MYSQL_DATABASE=jpress hub.c.163.com/library/mysql:latest
六.总结
集装箱,标准化,隔离
镜像,容器,仓库(build,ship,run)
docker命令:pull,build,run,stop,restart,exec