Docker入门学习

一、容器

  1. 将单个操作系统中的资源划分到孤立的组中,在孤立的组中平衡有冲突的资源使用需求

  2. Docker提供了容器管理的工具可以无需关注底层操作,使用效果类似于轻量级的虚拟机,

并且容器的创建和停止相对于虚拟机来说比较快;虽然不同容器之间为了保证一定的安全性采取安全隔离,但是在某些情况下需要消息共享灯可以利用通信机制进行通信

二、虚拟化

虚拟化的核心是对资源进行抽象呈现出来来打破实体结构之间不可切割的障碍来实现在同一台主机上运行多个系统或者应用来提高系统的资源利用率

从上图可以看出来,docker容器是在操作系统层面上实现了虚拟化,复用本地的操作系统,使其更加轻量化

三、Docker三大核心概念

镜像、容器、仓库

  1. 镜像: 类似于虚拟机镜像,是面向docker引擎的只读模板

  2. 容器: 从镜像创建的应用运行实例,可以启动、开始、停止和删除

镜像本身是只读,容器从镜像启动的时候,docker会在镜像的上层创建可写层,镜像本身保持不变

  1. 仓库: docker集中存放镜像文件的场所

四、容器生命周期的相关操作

1.docker create 创建容器

特点:创建的容器默认处于停止状态,需要配合docker start 来启动该容器

docker create +docker start的执行效果等价于docker run

2.docker run 创建并启动容器

特点:创建的容器会默认被启动

利用 docker run 创建并启动的容器后台运行的标准操作:

  • 检查本地是否有当前命令中指定的镜像,若没有将在公有仓库中下载
  • 利用该镜像创建并启动一个容器
  • 为该容器分配一个文件系统并在只读的镜像层外挂载一层可读可写层
  • 从宿主机配置的网桥接口桥接一个虚拟接口到容器中
  • 从地址池配置一个ip地址给容器
  • 执行用户指定的应用程序
  • 执行完成后容器被终止

3.docker 命令相关参数的解释

docker run -t -i ubuntu:latest /bin/bash

-t表示为docker 分配一个伪终端绑定到容器的标准输入上,-i表示让容器的标准输入保持打 开

进入伪终端之后可以使用 ctrl+d快捷键或者exit命令退出当前的视图

使用exit命令容器也就处于终止状态

docker run -d ······让docker 以守护态的形式运行,容器启动后进入后台(不占用终端)

docker logs 容器id: 查看容器的输出信息

4.终止容器

docker stop :终止正在运行的容器,另若docker容器中指定的应用终结时容器也会自动终止(皮之不存,毛将焉附)

5.进入容器

第一种方式:通过attach进入 docker attach 容器名称

弊端:多窗口同时通过attach 进入到容器时所有的窗口都会同步显示,当某一个因为命令阻塞时,其他的窗口也无法执行操作。

第二种方式:通过exec进入 docker exec -it 容器id 命令 直接在容器内执行命令

5.删除容器

docker rm 删除处于终止状态的容器

-f 表示强制删除正在运行的容器

-v删除容器挂载的数据卷

五、容器仓库

1.下载镜像

docker pull ·····:从指定的仓库中下载指定镜像名的镜像

docker images : 查看下载到本地的镜像

docker tag :更新镜像标签

2.上传镜像到仓库

docker push·····

六、数据卷

数据卷产生的需求:当容器中产生相关的数据或者需要对容器内的数据进行备份、另多个容器之间进行数据共享

七、网络配置

1.端口映射实现访问容器

docker run -d -p 5000:5000 training/webapp python app.py

表示将本地5000端口映射到容器的5000端口并且会绑定本地所有接口上的所有地址

docker run -d -p 127.0.0.1:5000:5000/udp training/webapp python app.py

将指定的ip地址的5000端口映射到docker 容器的5000端口,另外还可以标记时udp端口

2.互联容器之间实现通信

原理:依据连接系统的名称来进行消息通信(唯一,一般自定义)

docker run -d -p --name web traning/webapp python app.py(自定义容器名称)

docker run -d -p --name web --link db:db traning/webapp python app.py

表示web容器连接到db容器上,允许web容器访问db容器信息,即在这两个容器之间建立一个安全隧道

相关推荐
IT成长日记12 分钟前
【Docker基础】Dockerfile多阶段构建:Multi-stage Builds详解
运维·docker·容器·multi-stage·builds
心平愈三千疾5 小时前
学习秒杀系统-实现秒杀功能(商品列表,商品详情,基本秒杀功能实现,订单详情)
java·分布式·学习
BUTCHER56 小时前
Docker镜像使用
java·docker·容器
小趴菜吖6 小时前
使用macvlan实现容器的跨主机通信
docker
一只 Lemon6 小时前
K8s存储系统(通俗易懂版)
云原生·容器·kubernetes
澜兮子7 小时前
k8s-高级调度(一)
云原生·容器·kubernetes
无敌糖果7 小时前
K8S的Helm包管理器
docker·容器·kubernetes·helm·helm安装包
筱小虾米7 小时前
Docker配置国内镜像源
运维·docker·容器
艾莉丝努力练剑7 小时前
【数据结构与算法】数据结构初阶:详解顺序表和链表(四)——单链表(下)
c语言·开发语言·数据结构·学习·算法·链表
爱吃芝麻汤圆8 小时前
k8s之Snapshots 详解
云原生·容器·kubernetes