若有报错编辑报错文件添加这个
如果想使用/etc/docker/daemon.json管理docker daemon,默认情况下,/etc/docker目录中并没有daemon.json
文件,添加后会导致docker daemon无法启动,在添加daemon.json文件之前,请先修改如下文件内容:
添加该文件
查看看、重启服务
latest表示版本,
安装的时候有报错:因为是centos8,和语言环境原因
在执行安装httpd
方法一 容器内部查看
方法二 审查容器
方法三 在容器外执行容器内命令
查看运行中的容器
笔记本访问
5.6.1创建存储目录
5.6.2运行容器并挂载上述目录
5.6.3运行在容器中的http服务,使用docker host的/web目录中的网页文件,并能够在doker host上进行修改,修改后立即生效。
5.6.4同步容器与docker host时间
方法一在创建的时候
方法二复制主机文件到容器
5.6.5在容器外执行容器内命令
5.6.6 容器间互联(–link)
第一步:创建被依赖容器
第二步:创建依赖于源容器的容器
停止并新建容器,用于抢占c202的IP
启动c202及c203
容器与镜像之间的关系:
docker client 向docker daemon发起创建容器的请求
docker daemon查找有无客户端需要的镜像
如无,则到容器的镜像仓库中下载需要的镜像
拿到容器镜像后,启动容器
6.1.1打包操作系统的根目录
6.1.2把获取的根打包文件导入Docker Host中
6.1.3使用基础镜像启动容器
6.2.1使用commit提交镜像
在基础镜像运行的容器中安装应用,此例使用httpd
使用commit命令对正在运行的容器提交为一个应用镜像
使用应用镜像
6.2.2使用Dockerfile创建应用镜像
Dockfile原理
在Dockerfile定义所要执行的命令,使用docker build创建镜像,过程中会按照Dockerfile所定义的内容打开临时性容
器(使用docker commit进行提交),把Dockerfile文件中的命令全部执行完成,就得到了一个容器应用镜像。
执行命令越多,最终得到的容器应用镜像越大,所以要做优化
Dockerfile关键字
- FROM(指定基础/image)
- MAINTAINER(用来指定镜像创建者信息)
- RUN (运行命令)
- CMD(设置container启动时执行的操作)
- ENTRYPOINT(设置container启动时执行的操作)
- USER(设置container容器的用户)
- EXPOSE(指定容器需要映射到宿主机器的端口)
- ENV(用于设置环境变量)
- ADD(从src复制文件到container的dest路径)
- VOLUME(指定挂载点)
- WORKDIR(切换目录)
6.2.2.1Dockerfile应用案例
1、通过Dockerfile创建一个可以在启动容器时就直接启动httpd应用的镜像
步骤:
-
创建一个目录,用于存储Dockerfile所使用的文件
-
在此目录中创建Dockerfile文件及制作镜像所使用到的文件
-
在此此目录中使用docker build创建镜像(读取Dockerfile文件)
-
使用创建的镜像启动容器
思考:
- 基础镜像是谁?centos7u6
- 安装httpd
- yum -y install httpd
- 安装完成后如何启动httpd? 编写一个把httpd启动的脚本文件
- 把httpd放在前端执行还是后端执行?前端
- 暴露端口?tcp80
- 添加一个测试文件,用于验证httpd是否可用?
步骤:
1.创建目录
2.进入目录并创建用于启动httpd的脚本文件
使用docker build创建镜像,注意命令最后有一个点,点表示当前目录
使用上述创建的应用容器启动容器
验证容器及httpd是否可用
在容器查看IP
替代原网站内容案例
2、把nginx应用容器化
要求:
1、通过基础镜像做nginx应用镜像
2、使用nginx应用镜像启动容器时,nginx要求启动
3、验证nginx服务是否启动
步骤:
1、使用哪一个基础 centos:latest
2、需要使用epel YUM源
3、安装nginx
4、修改nginx配置文件,主要用于关闭daemon后台运行
5、验证使用的测试页面
创建目录
创建测试文件
启动容器验证nginx服务是否自动开启
6.2.3容器镜像在docker host存储位置
从图中可以看出除了最上面的一层为读写层之外,下面的其他的层都是只读的镜像层,并且除了最下面的一层外,其
他的层都有会有一个指针指向自己下面的一层镜像。
Docker 的容器镜像和容器本身的数据都存放在服务器的 /var/lib/docker/ 这个路径下。不过不同的linux发行版存储
方式上有差别,比如,在ubuntu发行版上存储方式为AUFS,CentOS发行版上的存储方式为Overlay或Overlay2。
Overlay及Overlay2原理
OverlayFS将单个Linux主机上的两个目录合并成一个目录。这些目录被称为层,统一过程被称为联合挂载。
OverlayFS底层目录称为lowerdir, 高层目录称为upperdir。合并统一视图称为merged。当需要修改一个文件时,
使用CoW将文件从只读的Lower复制到可写的Upper进行修改,结果也保存在Upper层。在Docker中,底下的只读层
就是/image,可写层就是Container。
overlay2是overlay的改进版,只支持4.0以上内核添加了Multiple lower layers in overlayfs的特性,所以overlay2可
以直接造成muitiple lower layers不用像overlay一样要通过硬链接的方式(最大128层) centos的话支持3.10.0-514及
以上内核版本也有此特性,所以消耗更少的inode
6.3.1创建自己的仓库
命令行登录docker报错
执行以下命令
6.3.2镜像上传,下载
给需要上传到公有仓库的容器镜像打标记
上传成功
下载
6.3.3配置镜像加速器
永久配置方法
第一步:修改/usr/lib/systemd/system/docker.service
第二步:在/etc/docker/daemon.json,改了之后有点慢啊
第三步:重启docker daemon
第四步:验证加速器是否可用
作用
在局域内使用
方便与其它系统进行集成
上传下载大镜像时
创建用于挂载至registry镜像启动的仓库中,便于容器镜像持久保存
启动容器获取镜像仓库
验证是否用可
修改daemon.json
#在其它主机中使用此镜像仓库
#第一步修改:/usr/lib/systemd/system/docker.service
#第二步创建:/etc/docker/daemon.json
#添加内容: “insecure-registries”: [“http://192.168.12.22:5000”]
#第三步:重启 systemctl daemon-reload;systemctl restart docker
#第四步:下载容器镜像
docker pull 192.168.12.22:5000/centos:v1
7.2.1添加用户
entrypoint:入口点
有报错终止
7.3.1工具准备
1.使用docker-compose工具进行启动
2.准备安装docker-compose有工具-pip
3.pip类似于yum,用于批量安装python模块及解决python模块依赖
pip工具准备
docker-compose工具准备
安装失败一直报错
执行以下
在执行安装
7.3.2获取harbor
解压
启动安装
访问:admin/123456
http://192.168.12.22/harbor/sign-in
新建项目
7.3.2.1镜像上传下载操作
在docker宿主机配置非https连接,因为docker用https通讯,所以还需要做证书,太麻烦。配置"insecure-registries": [“harbor服务器IP”]来使用http通讯
在docker宿主机登下载一个测试镜像,并tag成 harborIP/项目名/镜像名:TAG
7.3.2.2登陆服务器,并push上传镜像
登录有报错
docker-compose ps查看有挂掉的
重启服务解决
登录成功
push镜像
7.3.2.3浏览器界面验证
docker宿主机想要pull上传的镜像,可以这样做
删除镜像再重新从harbor仓库上下载
下载,可以复制pull 命令