当前位置: 首页 > Linux

Docker进阶学习

时间:2023-04-06 19:56:19 Linux

Docker的理解Docker是一个轻量级的容器,可以将系统拆分成尽可能最小的容器,通过指定的命令进行构建、分发和部署。本篇笔记只是针对Docker的进阶使用,并没有详细讲解Docker的安装,简单容器的Docker安装。Docker部署自定义项目我们都通过Docker安装了Redis和Mysql,并通过文件挂载和端口映射,将容器与服务器连接起来。那么如何使用Docker安装自定义项目呢?启动自定义镜像示例项目代码地址:https://github.com/gzyunke/test-docker拉取示例代码使用命令Docker先启动编译【设置镜像名称和版本号】dockerbuild-tdocker-test:version-1.服务端会根据dockerfile导入相应的包和环境。运行构建好的docker镜像dockerrun-p8090:8080--nametestDockerdocker-test:version-1-p用服务器的端口挂载-d后台运行--name指定docker容器的名称常用命令`dockerps`查看当前运行的容器`dockerimages`查看镜像列表`dockerrmcontainer-id`删除指定id的容器`dockerstop/startcontainer-id`停止/启动指定id的容器`dockerrmiimage-id`删除指定id的镜像`dockervolumels`查看卷列表`dockernetworkls`查看网络列表目录mount在日常开发中,我们经常启动容器后docker可能会修改其中的代码后续开发需要重启。如果我们生成的一些文件,比如日志,没有随服务器挂载的话,在容器关闭或者重启后,这些文件就会消失。因此,我们需要挂载Docker文件和服务器文件,这样无论我们的容器启动多少次,文件都可以持久化到服务器上。Docker提供三种挂载方式:bind挂载,直接将宿主机目录映射到容器,适用于挂载代码目录和配置文件。可以附加到多个容器。卷由容器创建和管理。它是在宿主机上创建的,所以删除容器不会丢失它。官方推荐,效率更高,Linux文件系统,适合存储数据库数据。可以安装在多个容器上。tmpfsmount适用于在主机内存中存放临时文件。不能被多个容器共享。【一般不用】挂载代码文件和docker容器文件dockerrun-p8090:8080-v/docker_test/test-docker:/app--nametestDocker1docker-test:version-1注意:挂载后Docker会映射到服务端的本地代码,所以服务端还需要安装项目的运行镜像【这里是npm镜像,可以用yum安装】;我们启动新镜像并访问它,看看我们没有重新打包,docker可以读取我们最新的修订版。目录挂载也常用于我们启动微服务时,将使用Docker部署的微服务的日志映射到我们的服务器上,不仅持久化,而且不用进入容器也可以访问。多容器通信场景:比如我们在同一台服务器上安装了mysql和redis并部署了一个项目,当我们需要在项目中使用redis和mysql时,这是为了我们容器之间的通信而设计的。使用docker搭建网络dockernetworkcreatetest-netbindredistothisnetworkdockerrun-d--nameredis--networktest-net--network-aliasredisredis修改项目中访问redis的代码取消注释重启我们的projectdockerrun-p8090:8080-v/docker_test/test-docker:/app--networktest-net-d--nametestDocker2docker-test:version-1访问http://ipaddress:8090/redis发布和deployment我们可以将我们的docker文件上传到镜像库,比如阿里云镜像库。构建镜像dockerbuild-t${SERVICE_NAME}:${VERSION}.dockertagxxxximageaddresspathuploadimagedockerpush${SERVICE_NAME}:${VERSION}然后在发布的时候使用dockerpull直接拉取对应的镜像即可属于学习Docker的一部分,后面会继续更新....