Docker 快速入门

Docker 的快速入门 docker的安装及使用,docker镜像的相关命令,docker容器的相关操作。 阅读详情

Docker

Docker 核心概念及入门

什么是docker

Docker是一个开放源代码软件项目,让应用程序布署在软件货柜下的工作可以自动化进行,借此在Linux操作系统上,提供一个额外的软件抽象层,以及操作系统层虚拟化的自动管理机制。Docker利用Linux核心中的资源分离机制,例如cgroups,以及Linux核心名字空间(namespaces),来创建独立的容器(containers)。这可以在单一Linux实体下运作,避免启动一个虚拟机造成的额外负担。Linux核心对名字空间的支持完全隔离了工作环境中应用程序的视野,包括进程树、网络、用户ID与挂载文件系统,而核心的cgroup提供资源隔离,包括CPU、存储器、block I/O与网络。从0.9版本起,Dockers在使用抽象虚拟是经由libvirt的LXC与systemd - nspawn提供界面的基础上,开始包括libcontainer库做为以自己的方式开始直接使用由Linux核心提供的虚拟化的设施,

Docker 版本简介

Docker有两个版本:
社区版(CE)
企业版(EE)
Docker Community Edition(CE)非常适合希望开始使用Docker并尝试使用基于容器的应用程序的个人开发人员和小型团队。

Docker企业版(EE)专为企业开发和IT团队而设计,他们可以在生产中大规模构建,发布和运行业务关键型应用程序

功能社区版企业版基础版企业版标准企业版高级版
容器引擎和内置编排,网络,安全性是是是是
经过认证的基础设施,插件和ISV容器否是是是
图像管理否否是是
容器应用管理否否是是
图像安全扫描否否否是

关于容器技术的介绍及概念

  • 容器技术
    Linux容器技术很早就有了,比较有名的是被集成到主流Linux内核中的LXC项目。容器通过对操作系统的资源访问进行限制,构建成独立的资源池,让应用运行在一个相对隔离的空间里,同时容器间也可以进行通信。容器技术对比虚拟化技术,容器比虚拟化更轻量级,对资源的消耗小很多。容器操作也更快捷,启动和停止都要比虚拟机快。但Docker容器需要与主机共享操作系统内核,不能像虚拟机那样运行独立的内核。
    Docker是一个基于LXC技术构建的容器引擎,基于GO语言开发,遵循Apache2.0协议开源。Docker的发展得益于为使用者提供了更好的容器操作接口。包括一系列的容器,镜像,网络等管理工具,可以让用户简单的创建和使用容器。
    Docker支持将应用打包进一个可以移植的容器中,重新定义了应用开发,测试,部署上线的过程,核心理念就是 Build once, Run anywhere。Docker容器技术的典型应用场景是开发运维上提供持续集成和持续部署的服务。
  • 镜像
    Docker的镜像概念类似于虚拟机里的镜像,是一个只读的模板,一个独立的文件系统,包括运行容器所需的数据,可以用来创建新的容器。镜像可以基于Dockerfile构建,Dockerfile是一个描述文件,里面包含若干条命令,每条命令都会对基础文件系统创建新的层次结构。用户可以通过编写Dockerfile创建新的镜像,也可以直接从类似github的Docker Hub上下载镜像使用。
  • 容器
    Docker容器是由Docker镜像创建的运行实例。Docker容器类似虚拟机,可以支持的操作包括启动,停止,删除等。每个容器间是相互隔离的,但隔离的效果比不上虚拟机。容器中会运行特定的应用,包含特定应用的代码及所需的依赖文件。
    在Docker容器中,每个容器之间的隔离使用Linux的 CGroups 和 Namespaces技术实现的。其中 CGroups 对CPU,内存,磁盘等资源的访问限制,Namespaces 提供了环境的隔离。
  • 仓库
    如果你使用过 git 和 github 就很容易理解Docker的仓库概念。Docker仓库相当于一个 github 上的代码库。
    Docker 仓库是用来包含镜像的位置,Docker提供一个注册服务器(Registry)来保存多个仓库,每个仓库又可以包含多个具备不同tag的镜像。Docker运行中使用的默认仓库是 Docker Hub 公共仓库。仓库支持的操作类似 git,创建了新的镜像后,我们可以 push 提交到仓库,也可以从指定仓库 pull 拉取镜像到本地。

Docker有下面这些组成

1.Docker 服务器守护程序(server daemon),用于管理所有的容器。

2.Docker 命令行客户端,用于控制服务器守护程序。

3.Docker 镜像:查找和浏览 docker 容器镜像。

Docker特性

文件系统隔离:每个进程容器运行在完全独立的根文件系统里。

资源隔离:可以使用cgroup为每个进程容器分配不同的系统资源,例如CPU和内存。

网络隔离:每个进程容器运行在自己的网络命名空间里,拥有自己的虚拟接口和IP地址。

写时复制:采用写时复制方式创建根文件系统,这让部署变得极其快捷,并且节省内存和硬盘空间。

日志记录:Docker将会收集和记录每个进程容器的标准流(stdout/stderr/stdin),用于实时检索或批量检索。

变更管理:容器文件系统的变更可以提交到新的映像中,并可重复使用以创建更多的容器。无需使用模板或手动配置。

交互式Shell:Docker可以分配一个虚拟终端并关联到任何容器的标准输入上,例如运行一个一次性交互shell。

Docker两个基础概念images与container

Container和Image 在Docker的世界里,Image是指一个只读的层(Layer),这里的层是AUFS里的概念,最直观的方式就是看一下docker官方给出的图:

Docker使用了一种叫AUFS的文件系统,这种文件系统可以让你一层一层地叠加修改你的文件,最底下的文件系统是只读的,如果需要修改文件,AUFS 会增加一个可写的层(Layer),这样有很多好处,例如不同的Container可以共享底层的只读文件系统(同一个Kernel),使得你可以跑N多 个Container而不至于你的硬盘被挤爆了!这个只读的层就是Image!而如你所看到的,一个可写的层就是Container。

那Image和Container的区别是什么?很简单,他们的区别仅仅是一个是只读的层,一个是可写的层,你可以使用docker commit 命令,将你的Container变成一个Image,也就是提交你所运行的Container的修改内容,变成一个新的只读的Image,这非常类似于git commit命令。

前置准备和安装Docker(基于CentOS 7 安装 Docker CE)

Docker 要求 CentOS 系统的内核版本高于 3.10 ,安装前需要验证 CentOS 版本是否支持 Docker。


# 命令查看你当前的内核版本
$ uname -r

# 更新yum
$ sudo yum makecache fast

# 安装yum-utils
$ sudo yum install yum-utils

# 使用以下命令设置稳定存储库
$ sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

# 卸载旧版本(如果安装过旧版本的话)
$ sudo yum remove docker  docker-common docker-selinux docker-engine

# 安装需要的软件包, yum-util 提供yum-config-manager功能,另外两个是devicemapper驱动依赖的
$ sudo yum install -y yum-utils device-mapper-persistent-data lvm2

# 安装Docker
$ sudo yum install docker-ce

# 启动、停止、重启Docker服务
$ systemctl start | stop | restart  docker.service

# 设置开机启动、关闭服务
$ systemctl enable | disable docker.service

# 验证安装是否成功(有client和service两部分表示docker安装启动都成功了)
$ docker version

[root@localhost ~]# docker version
Client:
 Version:       18.03.0-ce
 API version:   1.37
 Go version:    go1.9.4
 Git commit:    0520e24
 Built: Wed Mar 21 23:09:15 2018
 OS/Arch:       linux/amd64
 Experimental:  false
 Orchestrator:  swarm

Server:
 Engine:
  Version:      18.03.0-ce
  API version:  1.37 (minimum version 1.12)
  Go version:   go1.9.4
  Git commit:   0520e24
  Built:        Wed Mar 21 23:13:03 2018
  OS/Arch:      linux/amd64
  Experimental: false
[root@localhost ~]# 

# docker通过运行hello-world 映像验证是否已正确安装。
$ sudo docker run hello-world

Docker的常用操作

# 搜索镜像(我这里搜索的是tomcat的镜像)
$ docker search tomcat

# 下载镜像(在搜索出来的镜像列表中选择一个下载,我这里下载的是官方提供的centos镜像,速度会有点慢,耐心等待)
$ docker pull tomcat

# 列出本机的镜像
$ docker images

# 基于image创建一个容器,运行完毕后并退出
$ docker run [centos] /bin/echo 'Hello world'

# 运行一个交互式容器,-t表示指定一个容器内的伪tty。
# -i表示创建一个交互式连接,命令运行后,将会进入shell交互式界面,可执行任意的命令.
$ docker run -t -i centos /bin/bash

# 创建一个带名字的容器
$ docker run -d --name myweb centos /bin/bash

# 开始/停止/强制停止/重启一个的容器
$ docker start/stop/kill/restart [container]

# 删除一个容器
$ docker rm [container]

# 进入容器内容
$ docker exec -it [container] /bin/bash

# 列出正在运行的容器,[-a]列出所有状态下的容器,[-l]只列出最后一个启动的容器。
$ docker ps [-a] [-l]

docker容器的常用软件安装过程

docker中运行mysql

# -p 3306:3306:表示在这个容器中使用3306端口(第二个)映射到本机的端口号也为3306(第一个)
# 创建一个容器
docker run -d \
--name mysql \
-p 3306:3306 \
-e MYSQL_ROOT_PASSWORD=[password] \
-v /xxx/mysql:/var/lib/mysql \
-v /etc/my.cnf:/etc/my.cnf mysql:5.7.23 

# 创建用户
create user 'user'@'%' identified by 'password';
# 授权
grant replication slave on *.* to 'user'@'%';
# 刷新
flush privileges; 

docker中运行redis

# 运行一个docker容器
docker run -d \
--name redis \
-p 6379:6379 \
-v /xxx/redis:/data redis redis-server \
--appendonly yes \
--requirepass "[password]"

# 参数详解
docker run \
# 端口映射 宿主机:容器
-p 6379:6379 \          
# 映射数据目录 rw 为读写
-v /xxx/data:/data:rw \ 
# 挂载配置文件 ro 为readonly
-v /xxx/conf/redis.conf:/etc/redis/redis.conf:ro \ 
# 给与一些权限
--privileged=true \     
# 给容器起个名字
--name redis \          
# 开启数据持久化
--appendonly yes \      
# deamon 运行 服务使用指定的配置文件
-d redis redis-server /xxx/conf/redis.conf 

docker中运行nexus

docker run -d \
-p 8080:8080 \
--name nexus \
-v /xxx/nexus:/var/nexus-data \
--restart=always sonatype/nexus3

docker中运行Jenkins

docker run -d \
-p 8080:8080 \
-p 50000:50000 \
--name jenkins \
--privileged=true \
-v /xxx/jenkins:/var/jenkins_home jenkins

docker中安装gitlab

docker run --detach \
    --hostname 120.76.77.230 \
    --publish 444:443 \
    --publish 8088:8088 \
    --publish 25:22 \
    --name gitlab \
    --restart always \
    --volume /xxx/gitlab/config:/etc/gitlab \
    --volume /xxx/gitlab/logs:/var/log/gitlab \
    --volume /xxx/gitlab/data:/var/opt/gitlab \
    gitlab/gitlab-ce:latest
反激开关电源设计全解析:从CCM/DCM原理到PCB布局实战 开关电源作为现代电子设备的能量转换核心,其核心原理是通过高频开关动作实现高效的电能变换。反激拓扑因其结构简单、成本低廉且易于实现电气隔离,成为小功率离线式电源的主流选择。其技术价值在于通过变压器耦合实现能量存储与传递,解决了安全隔离与多路输出等关键需求,广泛应用于充电器、适配器及家电供电等场景。本文聚焦反激电路,深入剖析其CCM与DCM两种工作模式的原理差异及选型考量,并结合伏秒平衡定律与RCD钳位等热词,详解从变压器计算到MOSFET选型的完整工程设计流程。 阅读详情

相关推荐

NVIDIA DGX Spark 开发环境深度配置与优化指南

定期系统维护每月执行一次完整的系统更新监控存储空间使用情况,及时清理临时文件定期检查硬件健康状况开发习惯优化使用tmux或screen管理长时间运行的任务配置自动化测试和代码质量检查建立完善的项目文档体系性能调优周期每月重新评估和调整系统参数根据工作负载特点优化容器配置持续监控和记录性能指标DGX Spark作为一个强大的AI开发平台,其真正的价值需要通过精细的环境配置和优化才能充分发挥。本文提供的配置方案和建议均基于实际生产环境经验,旨在帮助开发者构建稳定、高效、可维护的开发环境。

time_days的博客 3684

docker使用dockerfile创建镜像(复习六)

dockerfile是一个docker-compose.yml配置文件,用户可以使用dockerfile快速创建自定义的镜像。 简单来说,就是之前我们起的容器都是单个起来的。现在我们使用dockerfile文件,将所有的容器的起来都写在dockerfile文件里。然后一起就把所有的容器都起来。 基本结构 dockerfile文件分为四部分:基础镜像信息、维护者信息、镜像操作指令和容器启动指令。 常...

韩韩的博客 303

保姆级教程:从 TLE 数据源获取到 Cesium 卫星轨迹可视化全流程(含常见报错排查)

本文提供从TLE数据源获取到Cesium卫星轨迹可视化的全流程保姆级教程,涵盖数据预处理、satellite.js计算、Cesium集成及性能优化等关键步骤,并针对常见报错提供详细排查方案,帮助开发者高效实现卫星轨迹可视化。

weixin_29002595的博客 295

WIN10下DOCKER的安装与使用

1.docker的安装 环境准备 Docker for Windows是一个Docker Community Edition(CE)应用程序。Docker for Windows安装包包含了在Windows系统上运行Docker所需的一切。如果你不想装虚拟机,想直接在你的Windows操作系统中安装与学习使用docker,那么你首先得查看你的系统是否满足Docker for Windows的安...

大数据-攻城狮 6万+

实战指南:从零开始用YOLOv8训练VisDrone无人机检测模型

本文提供了一份详细的实战指南,手把手教你从零开始使用YOLOv8训练一个无人机检测模型。内容涵盖VisDrone数据集下载与格式转换、YAML配置文件编写、模型训练与评估,以及最终的推理部署,旨在帮助开发者快速掌握无人机视角下的目标检测技术。

salt的博客 682

英飞凌 AURIX TC3XX 系列单片机的链接文件

这篇介绍英飞凌 AURIX TC3XX 系列单片机的链接文件,主要是针对使用 SOTA 功能如何修改链接文件,完整地实现 SOTA 功能

大橙子的博客 4385

Docker快速入门

清除 & 新建缓存getenforce。

邱邱邱的博客 899

Apple Store 上架过包:iOS审核4.3被拒原因分析与解决修改方案

Apple Store 上架过包:iOS审核4.3被拒原因分析与解决修改方案

专业解决各种上架过包问题,专业团队专业处理 751

【docker入门】10分钟,快速学会docker

10分钟,快速学会docker1 总体框图2 快速入门2.1 获取镜像2.2 查看本地镜像2.3 运行镜像2.4 查看正在运行的容器2.5 修改容器2.6 删除容器2.7 提交容器2.8 通过dockerfile构建镜像跑成容器2.9 保存文件和重新加载2.10 其他摘抄小狐狸的笔记入门操作3 1 总体框图 2 快速入门 2.1 获取镜像 docker pull nginx docker pull nginx:latest 2.2 查看本地镜像 docker images 2.3 运行镜像 docke

catkin_ws的博客 816

KRC文件——编程中的重要文件

KRC文件是指KUKA机器人控制器(KUKA Robot Controller)所使用的文件格式。KUKA是一家知名的机器人制造商,其机器人控制器通过KRC文件来管理和执行机器人程序。KRC文件包含了机器人的运动指令、逻辑控制、传感器数据等信息,以及与机器人相关的配置参数。这些文件通常使用KRL(KUKA Robot Language)编写,是一种特定的编程语言。KRC文件具有扩展名为.krc的格式,可以在KUKA机器人控制器上直接加载和执行。

TechProX的博客 2971

第4章--CANoe library开发 - 诊断功能

因为专栏要做的是汽车ECU自动化测试程序,测试的是ECU的诊断和刷新,因此就需要利用CANoe的接口,开发一些方便使用的诊断报文收发函数。

j187067046的博客 1397

Docker01 - docker快速入门

Docker01 - docker快速入门

qq_43350524的博客 2228

【新能源汽车DCDC变换器测试优化全攻略:解决电能质量/发热/过充等核心痛点】

高压直流转12V低压的DCDC变换器是新能源汽车电源系统的核心枢纽,承担着为整车低压附件、控制器及12V蓄电池供电/补电的关键作用。在新能源汽车乘用车、商用车等不同车型实际运营中,因PDU内DC/AC等模块干扰、DCDC自身设计缺陷、整车匹配性不佳及测试验证不充分,频发12V输出电能质量差导致后端元器件烧毁、变换器发热严重、蓄电池过充/欠充、智能补电功能失效等问题,还伴随低压侧电压瞬跌/浪涌、电磁干扰超标、振动后接触不良、高温下效率骤降等行业高频故障,直接影响整车可靠性和运营安全性。本文基于国标。

优快云-新能源汽车研发测试专业博主 1266

docker快速入门

有的小伙伴不理解为什么要加/bin/bash,或者什么时候该加什么时候不加,这里我给大家解释一下。我们先看docker run的命令参数。六、镜像原理。1、镜像是什么?镜像是一种轻量级的、可执行的独立软件包。用来打包软件运行环境和基于运行环境的开发软件,它包含运行某个软件所需要的内容,包括代码、运行时、库、环境变量和配置文件。2、Docker镜像加载原理。UnionFS(联合文件系统)

m0_52784465的博客 1129

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

Docker 快速入门指南

Dockerfile 是用于定义 Docker 镜像的文件,包含了一系列指令来描述如何构建镜像。Docker Compose 是用于管理多个容器的工具,使用文件定义和运行多容器应用。本篇文章介绍了 Docker 的基本指令、Dockerfile 以及 Docker Compose,快速入手Docker, 作者也经常忘记指令,写篇文章记录一下。

weixin_44318762的博客 747

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

Docker快速入门和部署项目

我们传统的部署MySQL的方式大概步骤有:搜索并下载MySQL安装包上传至Linux环境编译和配置环境安装使用Docker安装,仅仅需要一步即可。如果我们用mysql的镜像就可以直接使用,但是我们要是没有,也是可以执行这个命令的,会先下载这个镜像,然后在创建这个容器。命令: 由于网速的原因,我已经停止了下载,我们可以查看一个我们没有下载成功有没有这个镜像。接下来,我上传自己本地的mysql压缩包。上传成功了 进到这个目录里面查看:命令: 由于下载的mysql.tar还仅仅只是一个压缩包,还不是我们

烛照@123的博客 2674

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

Docker快速入门,看这个就够了

Docker快速入门,看这个就够了_果子哥丶的博客-优快云博客

Mr. David 专栏 109

【Docker快速入门】Docker部署MySQL

要想让Docker帮我们安装和部署软件,肯定要保证你的机器上有Docker. 由于大家的操作系统各不相同,安装方式也不同。为了便于大家学习,我们统一在CentOS的虚拟机中安装Docker,统一学习环境。 注意:使用MacBook的同学也请利用 VMwareFusion来安装虚拟机,并在虚拟机中学习Docker使用。 安装方式参考文档:《安装Docker》 1.1.部署MySQL 首先,我们利用Docker来安装一个MySQL软件,大家可以对比一下之前传统的安装方式,看看哪个效率更高一些。

鱼干的博客 3062

docker 快速入门指南

docker 快速入门指南_Bug 挖掘机的博客-优快云博客【docker】docker常用命令总结_Bug 挖掘机的博客-优快云博客

weixin_43997319的博客 117
下一篇: Spring webflux 函数式编程web框架
exklin
博客等级 码龄9年 35粉丝 68原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值