01.docker安装、配置、常用命令、dockerfile、镜像上传下载和Harbor仓库搭建

   日期:2024-12-26    作者:gdjason112 移动:http://3jjewl.riyuangf.com/mobile/quote/54229.html
 
 
 

若有报错编辑报错文件添加这个

01.docker安装、配置、常用命令、dockerfile、镜像上传下载和Harbor仓库搭建

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

如果想使用/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文件)

  • 使用创建的镜像启动容器

思考

  1. 基础镜像是谁?centos7u6
  2. 安装httpd
  3. yum -y install httpd
  4. 安装完成后如何启动httpd? 编写一个把httpd启动的脚本文件
  5. 把httpd放在前端执行还是后端执行?前端
  6. 暴露端口?tcp80
  7. 添加一个测试文件,用于验证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 命令


 

特别提示:本信息由相关用户自行提供,真实性未证实,仅供参考。请谨慎采用,风险自负。


举报收藏 0评论 0
0相关评论
相关最新动态
推荐最新动态
点击排行
{
网站首页  |  关于我们  |  联系方式  |  使用协议  |  隐私政策  |  版权隐私  |  网站地图  |  排名推广  |  广告服务  |  积分换礼  |  网站留言  |  RSS订阅  |  违规举报  |  鄂ICP备2020018471号