当前位置: 首页 > biancheng >正文

Docker容器

目录

    • 一、初识Docker
        • 什么是Docker
        • Docker和虚拟机的区别
        • 镜像和容器
        • Docker和DockerHub
    • 二、Docker架构
    • 三、安装Docker
    • 四、Docker的基本操作
        • 镜像操作
        • 容器操作
        • 容器相关命令
        • 数据卷(容器数据管理)
    • 五、Dockerfile自定义镜像
    • 六、Docker-Compose
    • 七、Docker镜像服务

一、初识Docker

大型项目组件较多,运行环境也较为复杂,部署时会碰到一些问题

依赖关系复杂,容易出现兼容性问题
开发、测试、生产环境有差异

Docker如何解决依赖的兼容问题?
● 将应用的Libs(函数库)、Deps(依赖)、配置与应用一起打包,形成可移植镜像
● 将每个应用放到一个隔离容器去运行,使用沙箱机制,相互隔离,避免互相干扰
在这里插入图片描述
不同环境的操作系统不同,Docker如何解决?
● Docker将用户程序与所需要调用的系统(比如Ubuntu)函数库一起打包,Docker镜像中包含完整运行环境,当运行到不同操作系统时,直接基于打包的库函数,借助于操作系统的Linux内核来运行

什么是Docker

Docker是一个快速交付应用、运行应用的技术:

① 可以将程序及其依赖、运行环境一起打包为一个镜像,可以迁移到任意Linux操作系统

② 运行时利用沙箱机制形成隔离容器,各个应用互不干扰

③ 启动、移除都可以通过一行命令完成,方便快捷

Docker和虚拟机的区别

docker 是一个系统进程应用执行时直接调用操作系统内核;虚拟机是在操作系统中的操作系统【docker体积小、启动速度快、性能好;虚拟机体积大、启动速度慢、性能一般】

虚拟机(virtual machine) 是在操作系统中模拟硬件设备,然后运行另一个操作系统,比如在Windows系统里面运行Ubuntu系统,这样就可以运行任意的Ubuntu应用了

特性Docker虚拟机
性能接近原生性能较差
磁盘占用一般为MB一般为GB
启动秒级分钟级

镜像和容器

在这里插入图片描述
镜像(Image): Docker将应用程序及其所需要的依赖、函数库、环境、配置等文件打包在一起,称为镜像。【只读不可写】

容器(Container): 镜像中的应用程序运行后形成的进程就是容器,只是Docker会给容器做隔离,对外不可见。【一个镜像可以运行多个容器】

Docker和DockerHub

在这里插入图片描述

DockerHub: DockerHub是一个Docker镜像的托管平台。这样的平台称为Docker Registry。

● 国内也有类似于DockerHub的公开服务,比如 网易云镜像服务、阿里云镜像库等。

二、Docker架构

Docker是一个CS架构的程序,由两部分组成

● 服务端(Server): Docker守护进程,负责处理Docker指定,管理镜像、容器等
● 客户端(client): 通过命令或RestAPI向Docker服务器发送指令。可以在本地或远程向服务端发送指令。
在这里插入图片描述

三、安装Docker

企业部署一般采用Linux操作系统,而其中CentOS发行版占比较多,因此我们在CentOS下安装Docker

科普
Linux和Windows目录结构对比
Linux系统中的目录
● / 是所有目录的顶点
● 目录结构像一颗倒挂的树
在这里插入图片描述
Linux目录介绍
在这里插入图片描述

在VMware中启动Linux服务器端口号为:192.168.197.128
在这里插入图片描述

使用SSH连接工具(finalshell)连接Linux服务器
在这里插入图片描述

如果之前安装过旧版本的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

安装Docker前首先需要我们虚拟机联网,安装yum工具:

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

在这里插入图片描述

然后更新本地镜像源:

# 设置docker镜像源
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

在这里插入图片描述
然后输入命令:

yum install -y docker-ce

在这里插入图片描述
docker-ce为社区免费版本。稍等片刻,docker即可安装成功。

启动docker
Docker应用需要用到各种端口,逐一去修改防火墙设置。非常麻烦,因此建议大家直接关闭防火墙!

启动docker前,一定要关闭防火墙后!!
启动docker前,一定要关闭防火墙后!!
启动docker前,一定要关闭防火墙后!!

# 如何关闭(2种)
# 关闭
systemctl stop firewalld
# 禁止开机启动防火墙
systemctl disable firewalld

通过命令启动docker:

systemctl start docker  # 启动docker服务

systemctl stop docker  # 停止docker服务

systemctl restart docker  # 重启docker服务

启动成功!!!
在这里插入图片描述

输入命令,可以查看docker版本:

docker -v

配置镜像加速

docker官方镜像仓库网速较差,我们需要设置国内镜像服务:

参考阿里云的镜像加速文档:https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors

四、Docker的基本操作

镜像操作

镜像相关命令
● 镜像名称一般分两部分组成:[repository]:[tag]。
● 在没有指定tag时,默认是latest,代表最新版本的镜像
在这里插入图片描述
镜像操作命令
在这里插入图片描述

可通过帮助文档查看相关命令

#查看帮助文档
docker --help
#查看某一具体命令的作用(例如查看images命令作用)
docker  images  --help

案例一:从DockerHub拉取一个nginx镜像并查看
1、去镜像仓库搜索nginx镜像,比如DockerHub

在这里插入图片描述

2、拉取nginx镜像
在这里插入图片描述

3、查看本地镜像,是否拉取成功?
在这里插入图片描述

案例二:利用docker save将nginx镜像导出磁盘,然后再通过load加载回来
1、利用docker xx --help命令查看docker save和dacker load的语法

2、使用docker tag 创建新镜像mynginx1.0
在这里插入图片描述

3、使用docker save导出镜像到磁盘
在这里插入图片描述

案例三:去DockerHub搜索并拉取一个Redis镜像
1、去DockerHub搜索Redis镜像

2、查看Redis镜像的名称和版本

3、利用docker pull命令拉取镜像

4、利用docker save命令将redis:latest打包为一个redis.tar包

5、利用docker rmi删除本地的redis:latest

6、利用docker load重新加载redis.tar文件

容器操作

容器相关命令

在这里插入图片描述
案例一:创建运行一个Nginx容器
1、 去docker hub查看Nginx的容器命令

docker run --name some-nginx -p 8080:80 -d some-content-nginx

命令解读
● docker run:创建并运行一个容器
● --name:给容器起一个名字,比如mn
● -p:将宿主机端口与容器端口映射,冒号左侧使宿主机端口,右侧是容器端口
● -d:后台运行容器
● nginx:镜像名称,例如nginx
在这里插入图片描述

访问成功!!!
在这里插入图片描述

案例二:进入Nginx容器,修改HTML文件内容,添加"GY欢迎你!!!"
1、进入容器。进入刚刚创建的nginx容器的命令为:

docker  exec  -it  mn  bash

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

2、进入nginx的HTML所在目录/usr/share/nginx/html

cd /usr/share/nginx/html

3、修改index.html的内容

sed -i 's#Welcom to nginx#GY欢迎你#g' index.html
sed -i 's#<head>#<head><meta charset="utf-8">#g' index.html

数据卷(容器数据管理)

五、Dockerfile自定义镜像

六、Docker-Compose

七、Docker镜像服务

相关文章:

  • 牛客练习赛#84 F 莫比乌斯反演+杜教筛+技巧+斐波那契数列和gcd的结论+矩阵快速幂
  • ZZNUOJ_用C语言编写程序实现1342:支配值数目(附完整源码)
  • java毕业设计后勤管理系统餐饮评价监督系统(附源码、数据库)
  • 前端基础学习笔记
  • 【TS】联合类型--类型断言--类型推断
  • 谈笑风声的秘密
  • QT影城网上售票系统
  • NetCDF数据在ArcMap中的使用
  • 打怪升级(考验思路)
  • 持续精进,改变自己