OJ在线评测系统 在Linux虚拟机搭建Docker 概念 入门 安装

Docker的基本概念

为什么要用docker容器技术

为了提升系统的安全性 把不同的程序和宿主机进行隔离

使得某个程序 应用的执行不会影响到系统本身

docker技术可以实现程序和宿主机的隔离

容器可以理解成对一系列应用程序、服务和环境的封装 从而把程序运行在一个隔离的 封闭的 隐私的空间内 对外整体提供服务

可以把一个容器理解成一个新的电脑 定制化操作系统

镜像:用来创建容器的安装包 可以理解为给电脑安装操作系统的系统镜像

容器:通过镜像来创建的一套运行环境 一个容器内可以运行多个程序 可以理解为一个电脑实例

Dockerfile:制作镜像文件 可以理解为制作镜像的一个清单 类似于maven

镜像仓库:存放镜像的仓库 用户可以从仓库下载现成的镜像 也可以把做好的镜像放到仓库里面

推荐使用docker官方的镜像仓库

docker底层实现原理

太复杂

Docker 运行在linux内核上

CGroups 实现了进程能使用的资源隔离 底层是Linux CGroup命令

能控制进程使用的资源

Network 实现了容器的网络 隔离 docker容器内部的网络互不影响

NameSpace 命名空间 可以那进程给在不同的命名空间下 每个容器可以有自己的命名空间 不同的命名空间下的进程互不影响

Storage 存储空间 容器内的文件是相互隔离 的 也可以去使用宿主机的文件

安装docker

一般情况系 不建议在windows系统上安装docker

Windows本身就自带一个虚拟机叫WSL 但是不推荐在日常使用的电脑上安装

我们要下一个虚拟机

我们在window上安装docker会被告知WSL内核太老

我们要一个专业的 隔离的虚拟机软件

推荐使用虚拟机

我们这边选择的虚拟机是VMware Workstation Pro

这样就算是安装成功

Docker的常用操作

命令行

查看所有docker自带的命令

复制代码
docker --help

查看具体子命令的用法

复制代码
docker run --help

拉取镜像 从docker的远程仓库

复制代码
docker pull hello-world

根据镜像创建容器实例

复制代码
docker create [OPTIONS] IMAGE [COMMAND] [ARG...]

启动实例 得到容器实例containerId

复制代码
sudo docker create hello-world

目前国区的docker源基本上全挂了

但是我找到了一个

描述信息 - 镜像详情 · OpenAtom Foundation (atomgit.com)

来自开放原子基金会

用控制台打开文件 并进行修改

复制代码
sudo gedit xxx.yy 

我们都是从远程仓库拉取 进行复制 运行

拉取镜像源

复制代码
sudo docker pull hub.atomgit.com/library/hello-world:latest

有了镜像源后 我们去创建一个docker实例

复制代码
sudo docker create hub.atomgit.com/library/hello-world:latest

得到一个容器 container id 容器实例id

复制代码
f8130f7753c987d84e9cf9946f2161ebabfef7f24026e55ba92606fdcd59a57b

之后我们可以查看容器状态

复制代码
sudo docker ps -a

启动容器 直接用容器名称启动

复制代码
sudo docker start serene_raman

查看运行日志

复制代码
sudo docker logs serene_raman

删除容器实例

复制代码
sudo docker rm serene_raman

删除镜像

复制代码
sudo docker rmi serene_raman

推送镜像

复制代码
sudo docker push image
相关推荐
24K纯学渣5 分钟前
Python编码格式化之PEP8编码规范
开发语言·ide·python·pycharm
怒视天下6 分钟前
零基础玩转Python生物信息学:数据分析与算法实现
开发语言·python
珹洺14 分钟前
数据库系统概论(十七)超详细讲解数据库规范化与五大范式(从函数依赖到多值依赖,再到五大范式,附带例题,表格,知识图谱对比带你一步步掌握)
java·数据库·sql·安全·oracle
TDengine (老段)23 分钟前
TDengine 开发指南——无模式写入
大数据·数据库·物联网·时序数据库·iot·tdengine·涛思数据
宝桥南山30 分钟前
Microsoft Copilot Studio - 尝试一下Agent
microsoft·ai·微软·copilot·rpa·low-code
TDengine (老段)32 分钟前
TDengine 在电力行业如何使用 AI ?
大数据·数据库·人工智能·时序数据库·tdengine·涛思数据
GISer_Jing44 分钟前
Three.js中AR实现详解并详细介绍基于图像标记模式AR生成的详细步骤
开发语言·javascript·ar
委婉待续1 小时前
Qt的学习(一)
开发语言·qt·学习
笨笨马甲1 小时前
Qt Quick Layout功能及架构
开发语言·qt
Dovis(誓平步青云)1 小时前
探索C++标准模板库(STL):String接口的底层实现(下篇)
开发语言·c++·stl·string