部署 Docker

网友投稿 264 2022-10-20

部署 Docker

1、简介

Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app)。几乎没有性能开销,可以很容易地在机器和数据中心中运行。最重要的是,他们不依赖于任何语言、框架或包括系统。Docker项目的目标是实现轻量级的操作系统虚拟化解决方案。Docker的基础是 Linux 容器(LXC)等技术。在LXC的基础上Docker进行了进一步的封装,让用户不需要去关心容器的管理,使得操作更为简便。用户操作Docker的容器就像操作一个快速轻量级的虚拟机一样简单。从docker1.13开始,docker版本号变更为docker-ce类型docker1.13后分为docker ee与docker ce版本:docker ce社区版本docker ee企业版本

2、概念

Docker虚拟化有三个概念需要理解,分别镜像、容器、仓库。镜像:Docker的镜像其实就是模板,跟我们常见的ISO镜像类似,是一个样板。容器:使用镜像常见的应用或者系统,我们称之为一个容器。仓库:仓库是存放镜像的地方,分为公开仓库(Public)和私有仓库(Private)两种形式。

3、Docker引擎架构

docker引擎是一个C/S结构的应用server是一个常驻进程,REST API实现了client和server间的交互协议,CLI实现容器和镜像的管理,为用户提供统一的操作界面。client通过接口与server进程通信实现容器的构建、运行和发布。

4、安装Docker

确保centos系统内核版本高于3.101.安装依赖包yum install -y yum-utils device-mapper-persistent-data lvm22.添加docker软件源yum-config-manager \--add-repo makecache fast4.安装docker-ceyum -y install docker-ce注意:docker使用端口tcp:2377,7946,udp:7946,47895.配置dockervi /usr/lib/systemd/system/docker.serviceExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock --registry-mirror=enable docker &&systemctl start docker7.查看版本docker version8.容器监控echo -e "GET /containers/redis-slave1/stats HTTP/1.0\r\n\ " | nc -U /var/run/docker.sock9.daemon.jsontee /etc/docker/daemon.json <

5、镜像管理

1.简介镜像不是一个单一的文件,而是由多层构成。我们可以通过docker history 查看镜像中各层内容及大小,每层对应着Dockerfile中的一条指令。Docker镜像默认存在/var/lib/docker/中。容器其实是在镜像的最上面加了一层读写层,在运行容器里做的任何文件改动,都会写到这个读写层。如果容器删除了,最上面的读写层也就删除了,改动也就丢失了。Docker使用存储驱动管理镜像每层内容及可读写层的容器层。2.镜像的工作原理当我们启动一个新的容器时,Docker会加载只读镜像,并在其之上添加一个读写层,并将镜像中的目录复制一份到/var/lib/docker/aufs/mnt/容器ID为目录下,我们可以使用chroot进入此目录。如果运行中的容器修改一个已经存在的文件,那么会将该文件从下面的只读层复制到读写层,只读层的这个文件就会覆盖,但还存在,这就实现了文件系统隔离,当删除容器后,读写层的数据将会删除,只读镜像不变。3.镜像来源Docker Hub是由Docker公司负责维护的公共注册中心,包含大量的容器镜像,Docker工具默认从这个公共镜像库下载镜像。从镜像仓库拉取镜像push   推送一个镜像到镜像仓库rm    移除镜像prune  移除未使用的镜像,没有被标记或被任何容器引用的。tag    创建一个引用源镜像标记目标镜像export  导出容器文件系统到tar归档文件import  导入容器文件系统tar归档文件创建镜像save   保存一个或多个镜像到tar归档文件load   加载镜像来自tar归档或标准输出search 搜索镜像image 查看镜像4.1.从docker仓库搜索镜像docker search nginx4.2.获取镜像docker pull nginx4.3.查看镜像docker image ls4.4.查看镜像的历史分层docker history nginx4.5.导出一个镜像docker image save nginx > nginx.tar4.6.导入一个镜像docker load < nginx.tar4.7.删除镜像docker image rm nginx5.创建镜像的方法有以下3种方式:基于已有镜像的容器创建基于本地模板导入基于Dockerfile创建

6、容器管理

Docker容器,可以理解为一个或多个运行进程,而这些运行进程将占有相应的内存,相应的CPU计算资源,相应的虚拟网络设备以及相应的文件系统资源。而Docker容器所占用的文件系统资源,则通过Docker镜像的镜像层文件来提供。 基于每个镜像的json文件,Docker可以通过解析Docker镜像的json的文件,获知应该在这个镜像之上运行什么样的进程,应该为进程配置怎么样的环境变量,Docker守护进程实现了静态向动态的转变。1.当使用docker run来创建并启动容器时,Docker在后台运行的标准操作: 检查本地是否存在指定的镜像centos,不存在就从公有仓库下载 利用镜像创建并启动一个容器 分配一个文件系统,并在只读的镜像层外面挂载一层可读写层 从宿主主机配置的桥接网络接口中桥接一个虚拟接口到容器中去 从地址池配置一个IP地址给容器 执行用户指定的应用程序 执行完毕后,容器被终止2.创建容器常用选项-i, –interactive    交互式-t, –tty         分配一个伪终端-d, –detach       运行容器到后台-e, –env         设置环境变量-p, –publish list   发布容器端口到主机-P, –publish-all    发布容器所有EXPOSE的端口到宿主机随机端口–name string       指定容器名称-h, –hostname      设置容器主机名–ip string       指定容器IP,只能用于自定义网络–network         连接容器到一个网络–mount mount     将文件系统附加到容器-v, –volume list    绑定挂载一个卷–restart string    容器退出时重启策略,默认no,可选值:[always|on-failure]3.管理容器的常用命令ls          列出容器inspect       查看一个或多个容器详细信息exec         在运行容器中执行命令commit       创建一个新镜像来自一个容器cp         拷贝文件/文件夹到一个容器logs        获取一个容器日志port        列出或指定容器端口映射top         显示一个容器运行的进程stats       显示容器资源使用统计stop/start     停止/启动一个或多个容器rm         删除一个或多个容器3.1.创建容器docker create -it nginxdocker ps -a3.2.启动容器docker start f51d7ef037f5docker ps -a3.3.终止容器docker stop f51d7ef037f5  #终止容器3.4.查看容器详细信息docker inspect f51d7ef037f53.5.进入容器docker exec -it f51d7ef037f5 /bin/bash3.6.删除容器docker rm f51d7ef037f53.7.端口映射docker run -d -p 80:80 --name=nginx -h nginx_web nginx3.8.查看容器日志docker logs nginx3.9.容器资源限制-m,–memory           容器可以使用的最大内存量–memory-swap          允许交换到磁盘的内存量–memory-swappiness=<0-100>  容器使用SWAP分区交换的百分比(0-100,默认为-1)–oom-kill-disable       禁用OOM Killer-cpus              可以使用的CPU数量–cpuset-cpus          限制容器使用特定的CPU核心,如(0-3, 0,1)–cpu-shares           CPU共享(相对权重)例:docker run -d -m 1G --cpus=2 nginxdocker stats c6bc3d89ea123.10.清理无name、无tag镜像docker images -f "dangling=true" -q|xargs docker rmi

7、发布管理

1.静态方式FROM tomcatMANINTAINER zhaoCOPY ./websrc /usr/local/tomcat/webapps/myproj/docker build -t web1 -f Dockerfile1docker run -dit -p 80:8080 web12.动态方式FROM tomcatMANINTAINER zhaoRUN mkdir -p /usr/local/tomcat/webapps/myprojVOLUME /usr/local/tomcat/webapps/myprojdocker build -t web2 -f Dockerfile2docker run -dit -p 80:8080 -v /usr/local/tomcat/webapps/myproj:/usr/local/tomcat/webapps/myproj web1

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:浅述容器和容器镜像的区别
下一篇:RestTemplate自定义请求失败异常处理示例解析
相关文章

 发表评论

暂时没有评论,来抢沙发吧~