Dockerfile

一.dockerfile介绍:

Dockerfile:用来制作docker镜像的docker images(类) >>>容器(实列对象)
docker镜像原理
docker镜像的本质:分层 的文件系统
docker中一个centos镜像为什么只有200MB,而一个cnetos操作系统的iso文件要几个G
docker中一个镜像500Mb tomcat安装包只有70MB?
#1.操作

内存管理子系统
进程调度子系统
进程通信子系统
设备管理子系统
文件管理子系统
linux文件系统由
bootfs:
包含bootloader(引导加载程序)和kernel(内核)
和rootfs组成:
root文件系统 包含的就是典型linux系统中的/dev /proc /bin /etc的标准目录和文件 

网络通信子系统
作业控制子系统

 

#2.镜像原理
docker镜像由特殊的文件系统叠加而成
最低端的是bootfs,并使用宿主机的bootfs 也就是说我们的docker启动文件也是在bootfs 使用的linux的bootfs的内核 所以 启动非常快
# 复用的操作
第二层root文件系统rootfs称为base image
#3.如何制作镜像:docker
(1)拉取的容器转为镜像

docker exec -it c_tomcat /bin/bash # 进入容器命令
docker commit 容器id 镜像名称:版本号
docker commit bd2f0fd36ea7 redis_images:1.0
镜像转换成压缩文件:
docker sava -o 压缩文件名称 镜像名称:版本号
docker save -o itmy_tomcat.tar itmy_tomcat:1.0
还原镜像:
docker load -i 压缩文件名称
# 试着删除原来的itmy_tomcat 镜像 docker rmi 镜像id
docker load -i itmy_tomcat.tar

 

(2)dockerfile制作镜像的一个文件,包含了一条条的指令;
每一条指令构建一层,基于基础的镜像,最终构建出一个新的镜像


二.Dockerfile
dockerfile概念及作用
1.dockerfile概念
制作镜像的一个文件,
包含了一条条的指令,
每一条指令构建一层,基于基础的镜像,最终构建出一个新的镜像
2、案列1需求:
自定义centod7的镜像

1.默认登录路径为/usr
2.可以使用vim

 

3.实现步骤
1.定义父镜像:FROM cents:7
创建文件目录
mkdir docker-files
cd docker_files
vim dockerfile
下载安装centos 镜像

FROM centos:latest 
#定义作者信息
MAINTAINER itmofujin <it1024qq@163.cn>
#执行安装命令
RUN yum install -y vim # -y默认确认的意思
#定义默认的工作目录
WORKDIR /usr

cmd /bin/bash # 执行目录

 

执行:

定义容器启动执行的命令
docker build -f ./centos_dockerfile -t v1_centos:1 .
查看docker images 镜像
v1_centos 1 a11b2f0a8ff4 2 minutes ago 300 MB 
创建并进入容器:
docker run -it --name=cs1 v1_centos:1
[root@e3db026ade15 usr]# cd ~
[root@e3db026ade15 ~]# vim a.txt 执行成功vim可以使用


案列二:
定义dockerfile,发布django项目 :将来django项目想把他发布到我们的dockerfile
1.定义父镜像:FROM java8
2.定义作者信息:MAINTAINER itmofujin <it1024qq@163.cn>
3.将ja包添加到容器:ADD jar包
4定义容器执行启动命令:CMD view.py 或jar包
vim python_dockerfile
文件配置

FROM python:3.6
MAINTAINER itmofujin <it1024qq@163.cn>
ADD views.py app01.py
cmd app01.py # 伪的

 

5.通过dockerfile构建镜像:docker built-f dockerfile文件路径-t镜像名称版本

docker build -f ./python_dockerfile -t app01 .
docker images
》》》app01 latest 9bfe3b32134a 3 minutes ago 914 MB

 

 

6.测试启动服务器代码:启动容器
docker run -id -p 8001:8000 app01
前台访问:122.51.24.98:8001
执行代码


三.docker服务编排
服务编排概念
Dcker Compose 工具概述 类似微服务和k8s 同时创建多个容器集群
docker compose是一个编管理容器化应的完整开发周期令集,
括服务=构建,启动和停止,使用步骤:

1.利用dockerfile定义运行环境镜像
2.使用docker-compose.yml定义组成应用的各服务
3.运行docker-compose 启动应用

 


四.docker私有仓库库:管理我们自己的镜像
搭建私有仓库
1.hub.docker.com 大的镜像苍库
#拉取私有仓库镜像
docker pull registry
2.启动私有仓库:后台运行
docker run -id --name=registry -p 5000:5000 registry
3.打开浏览器外部访问:
http://122.51.24.98:5000/v2/_catalog
返回json字符串:{"repositories":[]}
4.修改权限:信任私有仓库
vim /etc/docker/daemon.json :https://o5le1qfe.mirror.aliyuncs.com
"registry-mirrors": ["https://o5le1qfe.mirror.aliyuncs.com"]
# 将私有仓库服务器ip修改为自己私有仓库服务器真实IP

{
"registry-mirrors": ["https://o5le1qfe.mirror.aliyuncs.com"],

"insecure-registries":["122.51.24.98:5000"] #外部访问
}

 

docker exec registry rm -rf /var/lib/registry/docker/registry/
5.重启docker服务
systemctl restart docker
docker start registry
6.将centos镜像上传到我们的私有仓库
docker tag centos:latest 122.51.24.98:5000/centos:latest # ok tag 只是做个新标记
7.将镜像上传到私有苍库
docker push 122.51.24.98:5000/centos
访问http://122.51.24.98:5000/v2/_catalog >>>{"repositories":["centos"]} 完成
8.将私有镜像拉取到本地
docker pull 122.51.24.98:5000/centos



posted @ 2020-03-24 04:28  可乐'不加冰  阅读(217)  评论(0编辑  收藏  举报