IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> Docker一站式教程,教你快速构建自己的镜像(一) -> 正文阅读

[系统运维]Docker一站式教程,教你快速构建自己的镜像(一)

Docker简介

什么是Docker?

随着容器化技术的发展,现在Docker和K8s等技术越来越火,学习的人也越来越多。今天我们就来学习一下Docker,帮助你从0到你快速构建自己的镜像并运行在容器里。
Dokcer技术是为了解决微服务架构中依赖冲突的问题,因为在分布式系统中,以来的组件非常多,不同组件之间部署往往会产生一些冲突,亦或是在成百上千台服务中重复部署而环境不一致造成的各种问题。
在这里插入图片描述
例如一个项目中,部署时需要依赖于node.js、Redis、RabbitMQ、MySQL等,这些服务部署时所需要的函数库、依赖项各不相同,甚至会有冲突。给部署带来了极大的困难。
针对 依赖的兼容问题Docker采用了将应用的函数库、依赖、配置与应用一起打包,并将每个应用放到一个隔离的容器去运行,避免相互打扰。也就是说每个大号的应用包中包含了本应用所需要的所有函数库、依赖和配置,可以直接哪里用,无需再操作系统上安装这些,这也就不存在不同应用之间的兼容问题了。
我们知道操作系统结构包括:

  • 计算机硬件:例如CPU、内存、磁盘等
  • 系统内核:以linux系统为例,所有的Linux发行版比如centos、ubuntu、fedora等,内核都是linux。内核可以与计算机硬件交互,对外发出内核指令,用于操作计算机硬件。
    在这里插入图片描述
  1. 我们的应用就是通过调用系统的函数库,来实现各种功能。
  2. 系统函数库调用内核指令集,调用内核指令。
  3. 内核指令操作计算机硬件。

而Docker就是将应用程序所需要调用的系统函数库一起打包,这样就可以在不同操作系统上运行了。比如说我在ubuntu系统上打包好,里面有所需要的ubuntu系统函数库,当在centos上运行的时候,调用打包好的linux系统函数就行了,因为系统函数封装的Linux内核指令是没有差别的,因此可以在centos上运行。
与之相比较虚拟机也可以在一个操作系统中运行另外一个操作系统,来保护系统中的应用,但是两者在性能上有显著差距。
在这里插入图片描述
虚拟机是在操作系统中模拟硬件设备,然后运行另一个操作系统,使用了Hypervisor技术,而Docker仅仅是封装函数库,并没有模拟完整的操作系统。
两者在西能上的差距如下图:
在这里插入图片描述

Docker的安装

本例讲解Docker在Centos环境下的安装。Docker有两个大版本,一个是CE社区版(免费),还有一个EE企业版(收费),我们安装Docker CE。
记住DockerCE要求linux内核版本不低于3.10,Centos7满足最低内核的要求,所以如果需要安装Docker最低要是Centos7。

卸载

如果之前安装过旧版的Docker,可以使用下面的命令卸载。

yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-selinux \
                  docker-engine-selinux \
                  docker-engine \
                  docker-ce

安装

首先安装yum工具

yum install -y yum-utils \
           device-mapper-persistent-data \
           lvm2 --skip-broken

然后更新本地镜像源:

yum-config-manager \
    --add-repo \
    https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
    
sed -i 's/download.docker.com/mirrors.aliyun.com\/docker-ce/g' /etc/yum.repos.d/docker-ce.repo

yum makecache fast

然后安装docker ce,稍等片刻即可:

yum install -y docker-ce

启动

启动之前一定要先关闭防火墙
输入以下指令查看防火墙状态。

systemctl status firewalld

在这里插入图片描述
如果你的Active字段后面是绿色的,代表没有关,如果和我的相同代表 已经关闭,输入以下指令关闭防火墙

# 关闭
systemctl stop firewalld
# 禁止开机启动防火墙
systemctl disable firewalld

然后启动Docker

systemctl start docker  # 启动docker服务

systemctl stop docker  # 停止docker服务

systemctl restart docker  # 重启docker服务

在这里插入图片描述

配置镜像仓库

因为docker官方仓库网速比较慢,我们需要配置阿里云的国内镜像仓库,使用以下指令:

sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://hjpujjtc.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

Docker基础操作

镜像操作

镜像名称

这里先来聊一下什么是镜像
镜像就是Docker将应用程序及其所需要的依赖、函数库、环境、配置等文件打包在一起,就称为一个镜像。也就是说把一个应用在硬盘上的文件,机器运行环境、部分系统函数库文件一起打包形成的文件包,这个文件包是只读的
镜像名称一般分为两部分:

  • repository 仓库
  • tag 标签
    我们以mysql为例:
    在这里插入图片描述

mysql就是repository
5.7就是tag 代表镜像的版本,如果没有指定tag就是最近版latest

镜像命令

拉取

我们首先去docker仓库拉去一个mysql镜像
在这里插入图片描述
点击mysql找到tag可以看到所有的mysql镜像的版本
在这里插入图片描述
我们可以看到有latest、8.0、8等,将你想要的给拉下来通过命令

docker pull mysql:8.0/latest/不指定tag

然后通过

docker images

查看你本地的镜像
在这里插入图片描述
通过

docker rmi imageName

来删除镜像

导出镜像

我们可以通过以下命令将docker中的镜像导出到磁盘,然后再加载回来,首先我们看一下导出
下图是我将Docker中的nginx镜像导出到本地磁盘命名为nginx.tar
命令格式:

docker save -o [保存的目标文件名称] [镜像名称]
docker save -o nginx.tar nginx:latest

在这里插入图片描述

导入本地镜像

既然有导出就有导入,我首先将docker中镜像删除了,然后再将刚刚导出的镜像tar包重新加载进docker

docker load -i 本地镜像文件地址
docker load -i nginx.tar

在这里插入图片描述

容器操作

容器命令

我们首先也来说一下什么是容器容器就是镜像中的应用程序运行后形成的进程,只是Docker会给容器进程做隔离对外视而不见。因为是相互隔离的进程,因此一个镜像可以启动多次,形成多个容器进程,他们之间相互不干扰。
容器的基本命令如下所示:
在这里插入图片描述
每个容器拥有三种状态,分别是运行态、暂停态、停止态
状态之间的切换所对应的指令为;

停止态->运行态 docker run: 进程正常运行
运行态->暂停态 docker pause:	进程暂停,CPU不再运行,并不释放内存
暂停态/运行态->终止态 docker stop;进程终止,回收进程占用的内存,CPU等资源。

基础指令:

- docker run:创建并运行一个容器,处于运行状态
- docker pause:让一个运行的容器暂停
- docker unpause:让一个容器从暂停状态恢复运行
- docker stop:停止一个运行的容器
- docker start:让一个停止的容器再次运行
- docker rm:删除一个容器

创建运行容器

我们演示以下如何创建并启动一个容器,以ngnix为镜像。
运行命令:

docker run --name mynginx-p 80:80 -d nginx

命令解读:

  • docker run :创建并运行一个容器
  • –name : 给容器起一个名字,比如叫做mn
  • -p :将宿主机端口与容器端口映射,冒号左侧是宿主机端口,右侧是容器端口
  • -d:后台运行容器
  • nginx:镜像名称,例如nginx
    默认情况下,容器是隔离环境,我们直接访问宿主机的80端口,肯定访问不到容器中的nginx。
    现在,将容器的80与宿主机的80关联起来,当我们访问宿主机的80端口时,就会被映射到容器的80,这样就能访问到nginx了:
    在这里插入图片描述
    现在我们访问以下服务器的80端口看是否nginx已经启动
    在这里插入图片描述
    可以看到nginx已经成功启动
    我们也可以通过
docker logs -f mynginx

查看容器运行日志

进入容器修改文件

我们可以通过

docker exec -it mynginx bash

命令解读:

  • docker exec :进入容器内部,执行一个命令
  • -it : 给当前进入的容器创建一个标准输入、输出终端,允许我们与容器交互
  • mynginx :要进入的容器的名称
  • bash:进入容器后执行的命令,bash是一个linux终端交互命令

容器内部是模拟一个独立的Linux文件系统,内部目录结构如下:
在这里插入图片描述
我们进入nginx的html所在的目录/usr/share/nginx/html。修改index.html文件。
通过以下命令:

sed -i -e 's#Welcome to nginx#CSDN欢迎您#g' -e 's#<head>#<head><meta charset="utf-8">#g' index.html

在这里插入图片描述
我们再次访问服务器的80端口
在这里插入图片描述
可以看到nginx的Index.html文件已经被我们修改了。
好了,今天我们就先讲到这,喜欢的朋友恳求您点个赞,后面会继续更新dockerfile自定义镜像以及docker-compost微服务集群的docker部署。感谢~

  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2022-01-24 11:21:19  更:2022-01-24 11:22:38 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 12:22:49-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码