吴桥网站建设,廊坊网站建设团队,专注营销型网站建设,南昌地宝网租房信息网文章目录前言Docker的基本概念概念数据卷虚拟网络镜像操作镜像名称镜像命令容器操作基本操作容器创建数据卷操作创建和查看数据卷其他指令实战前言
续接上一篇博文#xff1a; 开发必备技术–docker#xff08;一#xff09; 这也是开学了#xff0c;假期的最后一篇博文 开发必备技术–docker一 这也是开学了假期的最后一篇博文后面的一些文章可能就是以图片pdf文档的形式了尤其后面设计到数学算法类型的博文都是这种形式的当然无所谓写东西的核心目的还是方便自己如果觉得对你有用的话请不要吝啬你的三连~
Docker的基本概念
概念
在docker的操作之中有两个比较重要的概念镜像和容器。其实他们的之间的关系非常简单我们通过镜像来创建容器。因此对于docker的命令其实也就是分为三个类别第一个是关于镜像的操作第二个是关于容器的操作第三个其实就是一些其他的辅助的命令。
那么镜像和容器之间的关系是啥呢我们用虚拟机来举例子其实就是这个镜像其实就相当于我们在创建虚拟机的时候系统镜像只不过这个系统镜像比较特殊它里面自带了一些“捆绑软件”这些软件是我们开发的时候需要用到的软件比如mysqlredismongdb之类的东西。那么容器呢起就是我们创建出来的虚拟机通过一个镜像我们可以创建很多个虚拟机。所以说我们用docker后面部署运行的其实就是容器但是这个容器和我们的虚拟机不一样的是虚拟机是在一个系统上模拟一个新的系统然后在模拟的系统上面在运行软件但是docker不是他就是在同一个系统上面去运行只是环境进行了隔离。其实再类比一下就是虚拟机是我们使用一些模拟玩游戏的场景类似在运行游戏的时候还需要运行一个模拟的安卓系统。那么docker里面的容器其实就相当于这个微信或者支付宝小程序一样小程序之间是不同的只是用微信或者支付宝作为载体。
数据卷
现在的话我们已经知道了镜像和容器之间的关系。我们需要使用镜像来创建我们的容器容器是一个相对隔离的东西那么有时候我们希望在容器里面的一些操作可以被我们持久化到我们的本地。因此此时一个容器我们还是可以看做一个虚拟操作系统的我们可以运行这个容器也可以到容器里面操作但是我们还希望有时候容器里面的一些数据也可和我们本地的计算进进行一个保存。
那么数据卷其实就相当于我们本地计算机和容器之间的一个映射那么这样做有啥好处嘛首先肯定是保存数据那么第二其实也是方便我们直接做一些修改。比如我们部署了一个nginx的容器现在要修改里面的配置文件我们可以进入到容器里面进行修改但是这样做的其实还是比较麻烦的也可以做一个映射我们在我们的宿主电脑上直接修改配置文件。
所以 数据卷volume是一个虚拟目录指向宿主机文件系统中的某个目录 那么这个在文章下面关于容器的操作当中会进行描述因为这个显然和我们容器是相关的。
虚拟网络
是的和虚拟机一样docker也是支持虚拟网络的。 docker 使用linux 桥接在宿主机虚拟一个docker 容器网桥docker0) docker 启动一个容器时会根据docker 网桥的网段分配给容器一个IP地址称为Container-IP同时Docker 网桥是每个容器的默认网关。因为在同一宿主机内的容器都接入同一个网桥这样容器之间就能够通过容器的 Container-IP 直接通信。 docker 网桥是宿主机虚拟出来的并不是真实存在的网络设备外部网络是无法寻址到的这也意味着外部网络无法直接通过Container-IP 访问到容器。如果容器希望外部访问能够访问到可以通过映射容器端口到宿主机端口映射即 docker run 创建容器时候通过 -p 或者 -P 参数来启用。访问容器的时候就通过 [宿主机IP]:[映射端口] 访问容器。
docker run -itd --name为容器指定名称 -p 宿主机端口:容器端口 镜像名称这里的话我就不展开了其实也挺复杂的我用的挺少的当然我的开发水平也就这样接触的不多我顶多就是部署一下环境部署一下java应用部署一下pytorch 写的dome或者跑跑智能计算的benchmark。
镜像操作
镜像名称
镜名称一般分两部分组成[repository]:[tag]。在没有指定tag时默认是latest代表最新版本的镜像 mysql就是repository5.7就是tag合一起就是镜像名称代表5.7版本的MySQL镜像。
镜像命令
镜像之间的操作如图所示
对于这些指令的话我们直接通过–help可以看到如何用以save指令为例子
docker save --help那么这里可能用的比较频繁的指令有
docker pull 镜像名拉取镜像在线docker load -i 镜像压缩包docker save -o [保存的目标文件名称] [镜像名称]docker images 查看拉取到的镜像docker rmi 镜像名:版本号 删除镜像容器操作
基本操作
那么说了有关于镜像的操作我们来看到关于容器的操作他们的之间的关系如图 首先的话我们的容器有几个基本的状态。 运行进程正常运行暂停进程暂停CPU不再运行并不释放内存停止进程终止回收进程占用的内存、CPU等资源 此外 docker run创建并运行一个容器处于运行状态docker pause让一个运行的容器暂停docker unpause让一个容器从暂停状态恢复运行docker stop停止一个运行的容器docker start让一个停止的容器再次运行docker ps -a 查看所有容器docker container -ls / docker ps -n x 查看在运行的容器docker rm删除一个容器 容器创建
那么之后我们来看到我们关于容器的一个重点那就是我们如何通过镜像来创建我们的容器。
那么这里的话我们直接以一段命令来解释 安装ElasticSearch
docker run -d \--name es \-e ES_JAVA_OPTS-Xms512m -Xmx512m \-e discovery.typesingle-node \-v es-data:/usr/share/elasticsearch/data \-v es-plugins:/usr/share/elasticsearch/plugins \--privileged \--network es-net \-p 9200:9200 \-p 9300:9300 \
elasticsearch:7.12.1命令解释 -e cluster.namees-docker-cluster设置集群名称 -e http.host0.0.0.0监听的地址可以外网访问 -e ES_JAVA_OPTS-Xms512m -Xmx512m内存大小 -e discovery.typesingle-node非集群模式 -v es-data:/usr/share/elasticsearch/data挂载逻辑卷绑定es的数据目录 -v es-plugins:/usr/share/elasticsearch/plugins挂载逻辑卷绑定es的插件目录 --privileged授予逻辑卷访问权 --network es-net 加入一个名为es-net的网络中 -p 9200:9200端口映射配置 数据卷操作
okey我们现在来说一下这个数据卷前面我们有说到数据卷是啥并且在容器的创建当中我们通过-v指令其实也是
数据卷操作的基本语法如下
docker volume [COMMAND]docker volume命令是数据卷操作根据命令后跟随的command来确定下一步的操作
create 创建一个volumeinspect 显示一个或多个volume的信息ls 列出所有的volumeprune 删除未使用的volumerm 删除一个或多个指定的volume
创建和查看数据卷
需求创建一个数据卷并查看数据卷在宿主机的目录位置
创建数据卷
docker volume create html查看所有数据
docker volume ls查看数据卷详细信息卷
docker volume inspect html其他指令
数据卷操作
- docker volume create创建数据卷
- docker volume ls查看所有数据卷
- docker volume inspect查看数据卷详细信息包括关联的宿主机目录位置
- docker volume rm删除指定数据卷
- docker volume prune删除所有未使用的数据卷创建使用实例 $ docker volume create hello hello $ docker run -d -v hello:/world busybox ls /world 实战
那么接下来的话可以查考一下这篇博文做一个实战ElasticSearch Docker 部署实例
当然这些其实都是最基本的用法后面其实还有如何自己做一个镜像如何拉取私服镜像等等。不过这件事情如果按照职责划分的话应该算是运维干的事情。我们只是用一用能够完成需求就可以精力充沛的可以直接去看docker开发手册。