资料来源:b站https://www.bilibili.com/video/av58402749?from=search&seid=8338831688956664857
一、先注册docker id
https://blog.csdn.net/debugbugbg/article/details/81865553
二、以docker id登陆docker playground
https://labs.play-with-docker.com
三、开始一个实例
在docker playground中点击新加一个实例,输入docker pull nginx或docker pull nginx:latest
再输入docker run -d -p 81:80 nginx , 表示启动一个nginx,外部端口81,内部端口80,-d表示后台运行,-p表示参数,后面跟的第一个数表示外部端口,第二个数表示内部端口,nginx表示镜像的名称。 此时会出现一串码表示开启的这个nginx的标识,并且上方会出现一个81端口字样的按钮,点击即可自动打开 nginx欢迎页面。
运行docker exec -it xxx bash ,xxx表示容器id的前几位,进入一个特定的nginx容器,这时候运行 cd /usr/share/nginx/html回车,更改index.html文件的内容,echo hello nginx > index.html回车,输入exit退出。这时候点击页面上方的81端口,发现打开的网页从nginx欢迎界面变为hello nginx这句话了(若还是欢迎界面,应该是有缓存,多刷新几次)。我们如果将目前已经更改的这个容器保存为一个镜像,那么通过docker commit xxx myname 可以把一个xxx(上面说到的一串码的前几位,前两位或者前三位都行,只要能和其他的码区分开就行)容器保存为一个名为myname的新的镜像,名字可以自己取。此时执行docker images发现多了一个名为myname的镜像。这时候运行docker run -d -p 90:80 myname就可以对myname这个新的镜像启动一个容器,界面上会出现一个90端口按钮,点击后打开就会显示hello nginx字样。
用docker ps 查看当前所有容器,docker images 查看当前所有镜像。docker -rm -f xxx删除一个容器(xxx表示容器编号的前两位或三位)。docker rmi myname删除名为myname的镜像
容器和镜像有什么关系呢?镜像是死的,好比是光盘。容器说的是被启动的光盘实例,一个光盘可以同时启动多个。如下图,有三个光盘(images),但是其中的一个光盘有两个实例在运行(两个容器在运行,即anewday镜像的两个容器),还有一个光盘也有两个实例在运行(即nginx镜像的两个容器)。
这时候如果我们运行docker run -d -p 82:80 myname回车(意思是运行myname这个镜像),会看到界面上方出现了一个82端口按钮,按一下就发现,它展示的内容是hello nginx,运行docker run -d -p 84:80 myname回车,选择或者输入端口84,也会看到hello nginx的网页。
四、以docker file方式创建镜像
第三步我们以提交容器的方式创建了镜像,现在看看如何以dockerfile的方式创建镜像。
首先,如下图所示,输入vim Dockerfiele,创建Dockerfile。(即在root路径下创建一个Dockerfile,~表示当前用户目录,即root目录)
在Dockerfile中输入以下内容:
然后新建一个index.html,如下图所示:
再index.html中写入内容如下图:
然后输入docker build -t testname . 回车,注意不要忘记输入test后面的点,表示对当前目录下的dockerfile进行构建,构建一个新镜像,镜像的名字为testname。这时候输入docker images可以看到多了一个testname的名字。这时候可以运行 docker run -d -p 100:80 testname,回车后,点击页面上方新增的100端口按钮,可以看到一段文字,这段文字就是刚输入的index.html上的文字,即i want to tell you a story but i dont know how to say.
五、将一个镜像保存为tar
输入docker save testname > 1.tar回车,即可把testname这个镜像保存为1.tar这个文件,注意testname是镜像名字,不是镜像id的前几位。