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容器信息,即在这两个容器之间建立一个安全隧道

相关推荐
小Pawn爷17 分钟前
4.镜像仓库
docker
浅念-23 分钟前
C语言编译与链接全流程:从源码到可执行程序的幕后之旅
c语言·开发语言·数据结构·经验分享·笔记·学习·算法
ZH154558913132 分钟前
Flutter for OpenHarmony Python学习助手实战:API接口开发的实现
python·学习·flutter
爱吃生蚝的于勒35 分钟前
【Linux】进程信号之捕捉(三)
linux·运维·服务器·c语言·数据结构·c++·学习
奶茶精Gaaa43 分钟前
工具分享--F12使用技巧
学习
久邦科技1 小时前
奈飞工厂中文官网入口,影视在线观看|打不开|电脑版下载
学习
好好学习天天向上~~1 小时前
6_Linux学习总结_自动化构建
linux·学习·自动化
江湖有缘2 小时前
零基础入门:使用 Docker 快速部署 Organizr 个人主页
java·服务器·docker
非凡ghost3 小时前
PowerDirector安卓版(威力导演安卓版)
android·windows·学习·软件需求
广州中轴线3 小时前
OpenStack on Kubernetes 生产部署实战(十三)
容器·kubernetes·openstack