Docker系列文档:https://github.com/LiangJunro...1.上一篇回顾&前言经过前面的讲解,你一定能够启动Nginx容器和Nodecontainer并且对一些简单的概念和指令有一定的了解。那么本文将讲解Docker新手需要知道的一些说明和操作。镜像(Image)命令容器(Container)命令Shell命令主机与容器代码同步隔离Hosts修改容器时间2.镜像(Image)命令创建镜像:dockerimagebuild./-thello-docker:1.0.0查看镜像列表:dockerimagels删除单个镜像:dockerrmi删除所有镜像:dockerrmi$(dockerimages-q)强制删除所有镜像:dockerrmi-f$(dockerimages-q)3.容器(Container)命令创建容器:dockercontainercreate-p2333:80hello-docker:1.0.0运行容器(一长串字符是创建容器的结果):dockercontainerstart4a4d2ac6bf3977ee7c5b4a15562bab17d59b4c61531908fd52632fb0c989f430退出创建并运行即时容器(删除容器):dockerrun-it--rm--namehello-docker-p2333:80hello-docker:1.0.0查看容器列表:dockerps-a进入指定容器:dockerexec-it7961990657efbashbash:根据不同的Mirror改变,比如alpine需要变成/bin/sh进入容器(Container)后,切换Shell命令使用(本质上和VSCode编辑器终端,Windowscmd等一样)退出容器:exit启动/停止/重启容器:dockerstart/stop/restartCONTAINER_ID删除单个容器:dockerrmCONTAINER_ID强制删除单个容器:dockerrm-fCONTAINER_ID停止所有容器:dockerstop$(dockerps-a-q)或dockerstop$(dockerps-aq)删除所有容器:dockerrm$(dockerps-a-q)或dockerrm$(dockerps-aq)3.Shell查看当前文件夹命令:ls打开指定文件夹:cdhtml查看指定文件内容(带行号):cat-nindex.html4、代码同步当我们启动本地Docker服务时,是修改代码方便但是!该死的代码不会同步到容器中。这时候如果删除容器就太low了,所以需要同步代码~下面以Node.jsdemo为例,看看如何同步代码。代码仓库地址:https://github.com/LiangJunro...复制宿主代码到容器:dockercp"E:/MyWeb/036-DockerforNode/README.md"8e1910aa2a12:/usr/src/app/README.mddockercphostpath容器名|容器ID:容器内的文件路径注1:如果是Windows,目录包含空格,最好用“path”包裹注2:对于目录,就是最好退一层,比如dockercpE:/MyWeb/036-DockerforNode/src/usr/src/app/注3:cp是copy的意思,就是把容器代码复制到宿主机:dockercp8e1910aa2a12:/usr/src/app/tsconfig.jsonE:\MyWeb\all-for-onedockercp容器名:容器中文件路径宿主机路径让容器代码真正同步宿主机代码时间:dockerrun-d-vE:\MyWeb\all-for-one\src:/usr/src/app/srcdocker-node:1.0.0dockerrun-d-v容器中的文件路径:宿主机文件路径容器name:版本号我们需要知道的是:-d:backgroundRun-vA:B:挂载宿主机A路径下的文件/文件夹到容器B的路径中(都是绝对路径)docker-node:1.0.0:即REPOSITORY和TAG5.隔离宿主机进入容器后,我们可以通过cat/etc/hosts查看容器的hosts:对了,我们修改了本地的Hosts文件,将baidu改为127.127.127.127,在容器中pingbaidu.com,我们可以看到Hosts有随主人而变。那么,怎样才能让它有自己的思想,不动呢?首先我们找到工程目录,添加两个文件:hosts127.0.0.1localhostresolv.confnameserver114.114.114.114这两个文件,一个是修改Hosts,一个是修改DNS端口,也就是我们要的时候让容器打开,使用单独的主机和DNS端口。接下来,我们运行命令:dockerrun-d-vE:\MyWeb\all-for-one\hosts:/etc/hosts-vE:\MyWeb\all-for-one\resolv.conf:/etc/resolv.confdocker-node:1.0.0这样创建的容器可以起到隔离的作用。最后,我们可以进入新的容器,pingbaidu.com:可以发现我们已经成功修改了容器的hosts!6.修改容器时间一般情况下,Docker容器的时间和我们机器的时间是不一样的,因为它的默认时区问题:查询机器时间:date,可以看到上面容器的时间是UTC,和下面的宿主机完全不一致。但是,在我们的代码中,有些需要存储正确的时间,所以我们要修改它。修改它们很简单,设置Dockerfile即可:Dockerfile#设置Docker容器的时区RUNapkadd--no-cachetzdata&&cp/usr/share/zoneinfo/Asia/Shanghai/etc/localtime\&&echoAsia/Shanghai>/etc/timezone我们以Node.js服务为例,尝试统一宿主机和容器的时间。代码仓库地址:https://github.com/LiangJunro...我们先创建一个镜像,根据仓库的README.md运行容器:进入容器后查看日期:可以看到时间正常!7.小结在本章中,我们整理了一些常见的内容。第一次看到这么多说明的小伙伴们可能会有些摸不着头脑。其实jsliang在一点一滴打字上也是熟练的。所以这些只能是再熟悉不过了。前几天试了一下,没有打字,后来忘记了,所以整理成这篇文章,供自己和大家温习。敬请期待下一篇:06-入门&Puppeteer服务前端不用折腾,和咸鱼有什么区别!觉得文章不错的朋友欢迎点赞/star。如需联系jsliang:Github个人联系方式保存在Github主页,欢迎一起折腾~努力把自己打造成一个充满探索欲、喜欢折腾、乐于拓展的终身学习斜线程序员你的知识。jsliang的文档库由JunrongLiang根据CreativeCommonsAttribution-NonCommercial-ShareAlike4.0InternationalLicense授权。
基于https://github.com/LiangJunrong/document-library上的作品。
非本许可协议授权的使用权可从https://creativecommons.org/licenses/by-nc-sa/2.5/cn/获取。