docker详解1 【docker架构粗解,运行与一些有用命令总结】

版权声明:本博客所有文章除特别声明外,均采用 CC BY-NC-SA 3.0 许可协议。转载请注明出处! https://blog.csdn.net/wy_97/article/details/79972225

谈谈docker的基本架构

并不从很深的底层来谈docker怎么实现,从简单角度谈谈docker的运行流程和架构。来看两张图:
这里写图片描述

docker_host指代我们的宿主机(运行电脑的物理机),程序docker deamon(守护进程)在宿主机中运行,通过docker deamon来操作docker
蓝色的地方代表的是互联网端,这是一个整个互联网中docker用户共享的一个地方,可以从这里拖取你需要的images

再来看第二个图:
这里写图片描述

这个就是上面那个图的中文更明白的解释

几条命令带你了解docker


docker run imagename:tag

这里写图片描述
为什么说docker足够快,足够方便?想象一下,你打开vmware,启动一个ubuntu,使用bash输出一句hello world需要多久?一分钟,两分钟?而docker呢,一秒,两秒!

不过上面的例子,实际运用中并没有多大的意义,下面来看更具体的操作

docker run -p 8080:80 -d nginx

这里写图片描述
搭建docker环境,然后开发完成你的任务后给别人继续开发,无疑是非常实用的功能,那该如何去搭建一个比如说nginx服务器呢?你可以使用docker pull去从docker的共享中心获取,这个见最后的命令总结

回到上面这个命令,这个命令使用docker run,通过-d命令,启动了一个名为nginximage(这个image是我通过docker pull获取到的默认tag lastestnginx image),使用-p命令,将docker中的80端口映射到宿主机8080端口

看一下宿主机效果图:
这里写图片描述
没问题,果然是熟悉的味道!


嘿,接下来问题来了,那我怎么操作这个image呢?又或者说,我如何对其进行开发呢?

docker exec -it 3137e /bin/bash

这里写图片描述

嘿,你肯定会问3137e这是啥命令,这么奇怪?

错了错了,这不是命令,这是id,对应的就是上面的正在运行的nginxdocker run的时候返回的id

那,-it又是啥意思呢?这里-it代表的不是一个参数,而是-i-t,只不过为了方便,直接结合了。-i参数,打开STDIN,用于控制台交互;-t参数,分配tty设备,该可以支持终端登录,默认为false

不信?拆开来看一下咯!
这里写图片描述
获取到bash命令行,后续就省略了,大家都懂的正常操作配置就行!


第三个问题,我们都知道vmware具有,那啥,拖拽的功能,那docker该如何将宿主机文件拉入images中呢?

第一种办法,当然是共享文件夹~

首先,我们停下之前运行的docker,ummm,不停也行,习惯性离开就结束进程
这里写图片描述
然后,我们重新启动一个docker

docker run -p 8080:80 -d nginx -v /F/vue.js:/var/www/html

然后,如果你是windows系统的话,很遗憾,会和我一样,报错!!!

那,如何解决呢?

这里就牵涉到Docker for Windows 里的Shared Drives 设置,右键docker图标,打开setting,找到shared drives,设置你需要的磁盘
这里写图片描述

然后就没问题了!

第二种办法,也是最推荐的,copy 进去

docker cp index.html 21146://usr/share/nginx/html

熟悉linux的肯定很容易理解,没错,就是将当前文件夹内index.html文件移入id21148docker内的该目录下,来看具体演示:
这里写图片描述
这里写图片描述


最后一步,也是至关重要的,我该如何分享我的docker给别人使用呢?

先来看三个命令的不同效果

docker ps
docker ps -a
docker images

这里写图片描述

有没有发现感觉很不一样?2333

来解释一下吧,docker ps表示当前正在运行的dockerdocker ps -a表示所有的docker,包括已经运行结束了的,docker images 则表示所有的images

用一个通俗的话来说,images好比一个新的镜像,而这些docker像是一个个配置文件,你用这个配置去加载这个镜像,然后内容也不一样。

回到正题,比如说我加了index.html的这个docker我想弄成images分享给别人,我该怎么办?(注意,只有images才可以分享去给别人运行,理解成vmvare的vmx文件吧,ummm,不一定准确)

来看命令:

docker commit 21146 nginx-test:hahaha
docker images
docker rmi d10d

这里写图片描述

commit参数,没错,就是这个,很像git的提交操作哦~

nginx-test对应image namehahaha对应tag,至于删除操作,没错,rmi参数即可

或许你还想问,那那些配置文件一样的images该怎么删除呢?

使用rm参数即可
这里写图片描述

命令总结

这里写图片描述
这里写图片描述

阅读更多

扫码向博主提问

Sp4rkW

有一分热,发一分光
  • 擅长领域:
  • web安全
  • 渗透测试
  • ctf
  • python
去开通我的Chat快问

没有更多推荐了,返回首页