你好 我是懂java的测试
前言
上篇文章主要讲述docker的基本概念、镜像的基本命令的使用,下篇文章会继续分享一些基本命令、以及一些面试和工作中常见的docker技术。
docker 操作镜像其他命令有哪些?
docker save imagesId -o fileName.tar.gz
docker save命令可以将从本地镜像导出为一个压缩文件,然后复制到其他服务器执行 docker load -i fileName.tar.gz 导入使用。
docker tag imagesId test:0.0.3
给镜像重新命名:
docker commit 容器id
基于容器id进行镜像制作
docker commit -c "EXPOSE 80 443" 6963c7df8496 lv/portainer/portainer:0.0.1
docker 操作容器的命令有哪些?
容器生命令周期如截图:
可见操作容器命令有很多,docker ps -a 可以查询全部容器、docker rm 删除容器、docker run -p 81:80 本地端口映射到容器80端口、docker start|stop|restart|pause|unpause等等。
dockerFile是什么?会制作吗?
dockerfile 是由一条Docker程序将这些dockerfile 指令再翻译成真正的linux命令,
相对于手工制造镜像,dockerfile 更直观告诉人制造镜像的具体过程,效率更高。官方也极力推荐、日常工作中也经常使用dockerfile制造镜像,dockerfile中常见的指令并不多,大致分类如下。
具体怎么操作呢?下面就以制造Nginx镜像来举例
# Description: test image
FROM centos:lastest #基础镜像 centos 最新版
RUN yum install nginx -y #执行shell命令,安装Nginx软件
EVN DOC_ROOT=/data/web/html #设置环境变量,以备使用
COPY index.html $DOC_ROOT #拷贝文件
COPY yum.repos.d /etc/yum.repos.d/ #确保源文件在工作目录中,并且目录目录必须以/结尾
ADD http://nginx.org/download/nginx-1.15.2.tar.gz /usr/local/src #如果是本地tar包会解压到容器的目录中,URL的话则不会
WORKDIR /usr/local/soft/ #使用WORKDIR指定目录
ADD nginx-1.15.2.tar.gz ./ #这里就使用了上面的WORKDIR
VOLUME /data/web 挂载点
EXPOSE 80/tcp 80/udp #将容器的80端口暴露给宿主机
USER 501 #UID可以是任意数字,但必须在/etc/passwd中存在
CMD ["nginx","-g","daemon off;"] #容器启动命令
docker的数据管理是怎样的?
如果要将写入到容器的数据永久保存,则需要将容器中的数据保存到宿主机的指定目录。
数据卷(data volume):直接使用宿主机目录,数据卷类似于挂载的一块磁盘,实际上就是宿主机上的目录或文件,可以直接被mount到容器中使用,
工作中主要应用场景:
1)日志输出
2)静态web页面
3)应用配置文件
4)多容器间目录或文件共享
注意:
1)数据卷是目录或者文件,并且可以在多个容器之间共同使用
2)对数据卷更改数据在所有容器里面会立即更新。
3)数据卷的数据可以持久保存,即使删除使用该数据卷的容器也不影响。
4)在容器里面的写入数据不会影响到镜像本身
5)依赖于宿主机目录,宿主机出问题,上面容器会受影响,当宿主机较多时,不方便统一管理
怎么使用呢?
一般都是在docker run启动容器的时候使用 参数 -v 譬如
docker run -d -v /data/testdir:/data/nginx/html/ -p 8001:80 nginx,就是将本地目录/data/testdir 挂载到nginx 容器内的路径/data/nginx/html/,
docker的仓库管理是怎样的?
Docker仓库,类似java的maven仓库可以保存jar包,为了方便的管理和使用docker镜像,可以将镜像集中保存至Docker仓库中,将制作好的镜像push到仓库集中保存,在需要镜像时,从仓库中pull镜像即可。
Docker 仓库分为公有云仓库和私有云仓库
公有云仓库:由互联网公司对外公开的仓库
私有云仓库:组织内部搭建的仓库,一般只为组织内部使用,常使用下面软件搭建仓库docker registory、docker harbor。
docker的容器编排工具有了解过吗?
假如宿主机产生大量容器要怎么管理?如果都是手动操作会比较麻烦而且容易出错,此时推荐使用docker 编排工具 Docker Swarm 和 Docker Compose ,但不同的是,Docker Compose 是一个在单个服务器或主机上创建多个容器的工具,只能管理当前主机上的Docker,也就是说不能去启动其他主机上的Docker容器,而 Docker Swarm 则可以在多个服务器或主机上创建容器集群服务,对于微服务的部署,显然 Docker Swarm 会更加适合。
Kubernetes也是容器编排工具,和docker swarm有什么区别呢?
| Kubernetes | Docker Swarm |
|---|---|
| 在市场上最成熟的解决方案。 | Docker Swarm提供良好的特性,但受限于其API。 |
| Kubernetes也在市场上最受欢迎的解决方案。 | Docker Swarm的市场Kubernetes相比相对较弱。 |
| Kubernetes很难安装和配置。 | Docker Swarm的设置和安装是很容易的。 |
| Kubernetes提供内置的日志记录和监控工具。 | Docker只支持第三方监控和日志记录工具。 |
| 自动定量的CPU利用率是一个很大的因素。 | 可以手动扩展服务。 |
Kubernetes得到了开发者社区的广泛认可,尽管它的安装过程非常艰难,之所以受到欢迎的原因很大程度取决于它提供的灵活性,以及良好的谷歌背景,而Docker Swarm有一个小型的社区,增长略微缓慢。
总结
docker 相关知识的文章就到这里,容器化知识远不止于此,需要我们不断的去探索和学习,后期将重点分享Kubernetes技术,敬请期待。