我目前知道Docker是用Golang写的,然后有点类似于封装好的开箱即用的各种环境,简单有点说就是像一台手机上的各种APP。
现在就慢慢学一下,至少感觉要比装个虚拟机强一点。
安装
Windows平台看了一下,需要开启hyper-v和虚拟化,但是我用的电脑是家庭版,不支持这部分功能,所以直接没戏了。直接看Linux系统的安装了。
Linux安装很方便,直接下载get.docker.com的内容保存为shell脚本,然后运行即可。运行命令curl -fsSL get.docker.com -o get-docker.sh就可以保存内容为脚本。之后运行shell脚本。
用docker version来查看安装是否成功,这时候只有客户端启动了,可以用systemctl start docker来启动服务端。
容器和镜像
容器可以读写,镜像只能读。Docker Hub是封装好的容器的市场。
使用docker container run xxx运行对应的含有关键词的容器,默认本地搜索,找不到的话会到Docker hub下载并运行对应的容器。
用docker container ls查看运行的容器,加-a查看所有容器。
用docker container stop停止运行的容器,后面接ID的一部分就好。
用docker container rm删除容器,和上面一样接部分ID。
管理多个容器:可以用docker container ps -aq查看所有的ID,用docker container stop $(docker container ps -aq)批量关闭所有的容器,同理也可以一口气把所有的容器都删除掉。组合命令的用法大概就是这样。
运行的容器删除是删不掉的,会报错,可以加-f后缀强制删除。
容器端口的映射:使用docker run (--detach/-d) -p local:container xxx来将容器的端口映射到本地主机的端口。tached模式是前台运行,加上--detach是detached模式,是后台运行。后台切前台,用docker attach id来实现。
docker container logs (-f) id/imageid对后台的日志进行查看,-f实现日志跟踪。
docker run -it container sh以shell和容器进行交互模式。exit退出。可以用后台启动,再用docker exec -it id sh来访问,这样就不会退出后关闭容器了。
获取和制作镜像
- pull from registry hub.docker.com quay.io(没有官方认证)
- dockerfile (online)
- 自有文件导入(offline)
第一种方法获取镜像可以先在hub上搜索相关的内容,然后复制上面的命令,docker image pull xxx可以下载对应的镜像,想要下载不同版本的镜像可以点击tag页面进行相关内容的查找。使用docker image ls来查看本地存在的镜像。像是之前安装过容器,这时候就会有对应容器的镜像存在。使用docker image inspect id来查看镜像的相关信息。用docker image rm id来删除镜像。
第二种方法,镜像的导入导出:使用docker image save xximage:tag -o xxx.image在特定位置导出一个镜像,使用docker image load -i ./xxx.image导入某一位置的镜像。这样可以离线进行镜像的分享,挺好。
第三种方法,Dockerfile。是一种命令打包镜像的方法,需要一定时间的学习。
总结
时间拖的比较长,总之Dockfile的内容放在下一篇再说。