docker容器一之docker简介+docker镜像

docker简介

  • Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的 Linux或Windows 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。
    在这里插入图片描述
    在这里插入图片描述
  • docker和vm的区别
    物理机提供硬件资源,普通虚拟机分隔的空间,每个空间都包含独立的子操作系统,但是使用Docker分隔空间,操作系统是共享的,不需要虚拟化N个操作系统。
    在这里插入图片描述
    在这里插入图片描述
  • docker容器的优势
    在这里插入图片描述
  • docker是如何工作的
    -

docker镜像

docker镜像的特点

  • 共享宿主机的kernel
  • base镜像提供的是最小的Linux发行版
  • 同一docker主机支持运行多种Linux发行版
  • 采用分层结构的最大好处是:共享资源
    在这里插入图片描述
  • Copy-on-Write 可写容器层
  • 容器层以下所有镜像层都是只读的
  • docker从上往下依次查找文件
  • 容器层保存镜像变化的部分,并不会对镜像本身进行任何修改
  • 一个镜像最多127层
    在这里插入图片描述

镜像的构建

  • docker commit 构建新镜像三部曲
    (1)运行容器
    (2)修改容器
    (3)将容器保存为新的镜像
  • 缺点
    (1)效率低、可重复性弱、容易出错
    (2)使用者无法对镜像进行审计,存在安全隐患

镜像的部署

1.编写docker-ce.repo文件
vim docker-ce.repo
[docker]
name=docker-ce
baseurl=https://download.docker.com/linux/centos/7/x86_64/stable/
gpgcheck=0

2.安装docker-ce
yum install -y docker-ce(注意下面安装的20.10.8版本在后续做实验中报错,因此我们还是使用20.10.2版本)
yum -y install docker-ce-20.10.2-3.el7
注意:下面做实验出现的问题完全可以通过安装centos源搞定
wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
sed -i -e '/mirrors.cloud.aliyuncs.com/d' -e '/mirrors.aliyuncs.com/d' /etc/yum.repos.d/CentOS-Base.repo
:%s/$releasever/7/g

3.启用docker
systemctl enable docker --now

4.安装自动补齐工具
yum install bash-*

5.查看docker
docker
docker info
注意:如果出现warning的话执行以下步骤
WARNING: bridge-nf-call-iptables is disabled
WARNING: bridge-nf-call-ip6tables is disabled
cd /etc/sysctl.d
vim docker.conf
net.bridge.bridge-nf-call-iptables = 1
net.bridge.bridge-nf-call-ip6tables = 1
sysctl  --system

6.导入镜像或拉取网上镜像
docker search mario
docker pull kaminskypavel/mario

7.查看镜像并运行镜像
docker images
docker run -d --name demo -p 80:8080 kaminskypavel/mario

8.测试
在浏览器输入ip查看

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
安装自动补齐工具
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
docker load -i:导入镜像
docker run -d(此参数表示打入后台)-p 80:80(第一个80为主机(宿主)端口,第二个80为容器端口)运行docker
在这里插入图片描述
接着执行如下命令:
docker run -d --name demo -p 80:80 game2048
打开浏览器输入本机ip:80 可以发现游戏服务器搭建成功!
哭了,在网上找了半天没有找到能用的2048代码😭
找到解决办法:使用docker pull得到马里奥代码(下文会介绍)
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
成功!
在这里插入图片描述

镜像的详细分析

1.docker search nginx

2.docker pull nginx

3.docker images

4.docker history nginx:latest

5.内核测试
docker pull busybox
uname -r
docker run -it --name test busybox
uname -r

6.增加images层数
docker history busybox
docker run -it --name test busybox
touch file1
touch file2
.....
touch file5
exit
docker commit -m "V1" test demo:V1
docker images
docker history demo:V1

7.不管容器内文件个数是否与原来一致,只要有改动,层数就会加一。
docker run -it --name test demo:V1
ls
rm -fr file1
rm -fr file2
touch file6
touch file7
ls
exit
docker commit -m "V2" test demo:V2
docker rm test
docker run -it --name test demo:V2
ls
exit
docker history demo:V2
docker history demo:V1

下图可以看到有很多nginx包,第一个是官方发行版,后面都是个人上传的。
在这里插入图片描述
可以发现nginx有很多层,latest表示最新版(如不指定则为默认)。
在这里插入图片描述
在这里插入图片描述
在一台主机上可以使用不同的操作系统,而内核是一样的。
在这里插入图片描述
commit命令表示从当前容器中提交一个新版本(从读写层提交到镜像层中,便于保存),-m表示描述。
在这里插入图片描述
与之前相比多出了一层
在这里插入图片描述
在这里插入图片描述
对比发现,V2在V1的基础上再加一层。
在这里插入图片描述

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值