接着上面一篇:三文搞懂学会Docker容器技术(上)

三文搞懂学会Docker容器技术(中)

7,Docker容器目录挂载

7.1 简介

容器目录挂载:

我们可以在创建容器的时候,将宿主机的目录与容器内的目录进行映射,这样我们就可以实现宿主机和容器目录的双向数据自动同步;

7.2 作用

前面学过cp命令来实现数据传递,这种方式比较麻烦;

我们通过容器目录挂载,能够轻松实现代码上传,配置修改,日志同步等需求;

7.3 实现

语法:

docker run -it -v  /宿主机目录:/容器目录 镜像名

多目录挂载

docker run -it -v /宿主机目录:/容器目录 -v /宿主机目录2:/容器目录2  镜像名

注意:

如果你同步的是多级目录,可能会出现权限不足的提示;

这是因为Centos7中的安全模块selinux把权限禁掉了,我们需要添加  --privileged=true 来解决挂载的目录没有权限的问题;

7.4 挂载目录只读

docker run -it -v  /宿主机目录:/容器目录:ro 镜像名

8,Docker迁移与备份

8.1 概述

我们开发的时候,经常自定义镜像,然后commit提交成镜像到本地仓库,但是我们发布到客户服务器的时候,可以用前面讲得搞到hub官方,或者阿里云,但是有些机密性的项目,是禁止公网存储的,所以我们只能通过docker镜像备份和迁移实现;

8.2 实现

备份镜像:

docker save -o 备份镜像的名称  源镜像名称:tag版本

docker save -o mytomcat7.1.tar java1234/tomcat7:7.1

恢复镜像:

docker load -i 镜像文件

docker load -i mytomcat7.1.tar

9,DockerFile详解

9.1 DockerFile简介

Dockerfile是由一系列命令和参数构成的脚本,这些命令应用于操作系统(centos或者Ubuntu)基础镜像并最终创建的一个新镜像;

我们前面讲过的用手工的方式,修改配置文件,或者添加,删除文件目录的方式,来构建一种新镜像;这种手工方式麻烦,容易出错,而且不能复用;

我们这里讲Dockerfile,用脚本方式来构建自动化,可复用的,高效率的创建镜像方式,是企业级开发的首选方式;

再软件系统开发生命周期中,采用Dockerfile来构建镜像;

1、对于开发人员:可以为开发团队提供一个完全一致的开发环境;

2、对于测试人员:可以直接拿开发时所构建的镜像或者通过Dockerfile文件构建一个新的镜像开始工作;

3、对于运维人员:在部署时,可以实现应用的无缝移植。

9.2 DockerFile常用指令

FROM image_name:tag 定义了使用哪个基础镜像启动构建流程
MAINTAINER user_info 声明镜像维护者信息
LABEL key value 镜像描述元信息(可以写多条)
ENV key value 设置环境变量(可以写多条)
RUN command 构建镜像时需要运行的命令(可以写多条)
WORKDIR path_dir 设置终端默认登录进来的工作目录
EXPOSE port 当前容器对外暴露出的端口
ADD source_dir/file dest_dir/file 将宿主机的文件复制到容器内,如果是一个压缩文件,将会在复制后自动解压
COPY source_dir/file dest_dir/file 和ADD相似,但是如果有压缩文件是不能解压
VOLUME 创建一个可以从本地主机或其他容器挂载的挂载点,一般用来存放数据库和需要保持的数据等
CMD 指定容器启动时要运行的命令,假如有多个CMD,最后一个生效
ENTRYPOINT 指定容器启动时要运行的命令
ONBUILD 当构建一个被继承的Dockerfile时运行的命令,父镜像在被子镜像继承后父镜像的onbuild被触发。可以把ONBUID理解为一个触发器。

10,Docker私有仓库

10.1 简介

Docker私有仓库主要是企业内部用来存放镜像的仓库,相对官方仓库以及阿里云仓库,具有更高的保密安全级别;

10.2 私有仓库搭建

第一步:拉取私有仓库镜像 (私有仓库程序本身就是一个镜像)

docker pull registry

第二步:启动私有仓库容器

docker run -di --name=myRegistry -p 5000:5000 registry

第三步:测试

http://192.168.1.112:5000/v2/_catalog

看到这个 说明启动OK。因为仓库里还没有镜像,所以就是空的;

第四步:etc/docker 修改daemon.json,让docker信任私有仓库地址

"insecure-registries": ["192.168.1.112:5000"]

第五步:修改配置后重启docker;

systemctl restart docker

10.3 私有仓库测试

第一步:标记此镜像为私有仓库的镜像

docker tag tomcat:7 192.168.1.112:5000/mytomcat7

第二步:上传镜像到私有仓库

docker push 192.168.1.112:5000/mytomcat7

此时私有仓库里已经有了这个镜像;

第三步:删除192.168.1.112:5000/mytomcat7本地仓库镜像

docker rmi -f 192.168.1.112:5000/mytomcat7

第四步:从私有仓库拉取192.168.1.112:5000/mytomcat7镜像,并运行;

docker run -it -p 8080:8080 192.168.1.112:5000/mytomcat7

第五步:浏览器运行 http://192.168.1.112:8080测试

------------------------------------------------------------------------------------------------------------------------------

作者:java1234_小锋

出处:https://www.cnblogs.com/java688/p/13174647.html

版权:本站使用「CC BY 4.0」创作共享协议,转载请在文章明显位置注明作者及出处。

------------------------------------------------------------------------------------------------------------------------------

三文搞懂学会Docker容器技术(下)的更多相关文章

  1. 三文搞懂学会Docker容器技术(中)

    接着上面一篇:三文搞懂学会Docker容器技术(上) 6,Docker容器 6.1 创建并启动容器 docker run [OPTIONS] IMAGE [COMMAND] [ARG...] --na ...

  2. 三文搞懂学会Docker容器技术(上)

    1,Docker简介 1.1 Docker是什么? Docker官网: https://www.docker.com/ Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从Apache2. ...

  3. 一文搞懂各种 Docker 网络 - 每天5分钟玩转 Docker 容器技术(72)

    前面各小节我们先后学习了 Docker Overaly,Macvaln,Flannel,Weave 和 Calico 跨主机网络方案.目前这个领域是百家争鸣,而且还有新的方案不断涌现. 本节将从不同维 ...

  4. 第 8 章 容器网络 - 072 - 一文搞懂各种 Docker 网络

    Docker 起初只提供了简单的 single-host 网络,显然这不利于 Docker 构建容器集群并通过 scale-out 方式横向扩展到多个主机上. 跨主机网络方案: Docker Over ...

  5. 072、一文搞懂各种Docker网络 (2019-04-17 周三)

    参考https://www.cnblogs.com/CloudMan6/p/7587532.html   前面各个小节我们学习了 Docker Overlay .Macvlan .Flannel.We ...

  6. 【转帖】一文看懂docker容器技术架构及其中的各个模块

    一文看懂docker容器技术架构及其中的各个模块 原创 波波说运维 2019-09-29 00:01:00 https://www.toutiao.com/a6740234030798602763/ ...

  7. 一张表搞懂各种 Docker 监控方案 - 每天5分钟玩转 Docker 容器技术(86)

    前面我们已经介绍了ps/top/stats.Sysdig.Weave Scope.cAdvisor 和 Prometheus 多种容器监控工具和方案,是时候做一个比较了.下面将从五个方面来对比它们之间 ...

  8. 一文了解Docker容器技术的操作

    一文了解Docker容器技术的操作 前言一.Docker是什么二.Docker的安装及测试Docker的安装Docker的Hello world测试三.Docker的常见操作镜像的基本操作容器的基本操 ...

  9. 读懂 Deployment YAML - 每天5分钟玩转 Docker 容器技术(125)

    既然要用 YAML 配置文件部署应用,现在就很有必要了解一下 Deployment 的配置格式,其他 Controller(比如 DaemonSet)非常类似. 还是以 nginx-deploymen ...

随机推荐

  1. 【Ubuntu】Ubuntu中下载特定版本内核和设置某版本内核为默认启动内核

    0. 基本命令 uname -a # 查看当前所使用内核 dpkg -l | grep linux # dpkg后是lmn的l.查看当前操作系统的内核 dekg -l | grep linux-ima ...

  2. C语言/Linux命令行参数argc、argv[ ]详解

    1.void main(int argc,char *argv[]) argv[]:表示的是一个指针数组,一共有argc个元素,其中存放的是指向每一个参数的指针. argc:参数个数 2.以Linux ...

  3. Cypress系列(9)- Cypress 编写和组织测试用例篇 之 钩子函数Hook

    如果想从头学起Cypress,可以看下面的系列文章哦 https://www.cnblogs.com/poloyy/category/1768839.html Hook 就是常说的钩子函数,在 pyt ...

  4. F5忘记密码修改教程

    !!!首先查看系统版本,13版本和14版本修改密码方式不一致 首先介绍13版本修改密码 注:12版本也适用,11版本未测试,应该也可以,有问题欢迎留言) 1. 将终端连接到BIG-IP串行控制台端口. ...

  5. java方法句柄-----1.方法句柄类型、调用

    目录 方法句柄 1.方法句柄的类型 1.1MethodType类的对象实例的创建 1.1.1 通过指定参数和返回值的类型来创建MethodType.[显式地指定返回值和参数的类型] 1.1.2 通过静 ...

  6. api.versioning 版本控制 自动识别最高版本

    Microsoft.AspNetCore.Mvc.Versioning //引入程序集 .net core 下面api的版本控制作用不需要多说,可以查阅https://www.cnblogs.com/ ...

  7. golang内存逃逸

    golang程序变量会携带油一组校验数据,用来证明它的整个生命周期是否在运行时完全可知.如果变量通过了这些校验,它就可以在栈上分配.否则就说它逃逸了,必须在堆上分配     能引起变量逃逸到堆上的典型 ...

  8. Java实现 LeetCode 803 打砖块 (DFS)

    803. 打砖块 我们有一组包含1和0的网格:其中1表示砖块. 当且仅当一块砖直接连接到网格的顶部,或者它至少有一块相邻(4 个方向之一)砖块不会掉落时,它才不会落下. 我们会依次消除一些砖块.每当我 ...

  9. Java实现 蓝桥杯VIP 算法提高 质数的后代

    算法提高 质数的后代 时间限制:1.0s 内存限制:256.0MB 问题描述 在上一季里,曾提到过质数的孤独,其实从另一个角度看,无情隔膜它们的合数全是质数的后代,因为合数可以由质数相乘结合而得. 如 ...

  10. Java实现 蓝桥杯VIP 算法提高 栅格打印问题

    算法提高 栅格打印问题 时间限制:1.0s 内存限制:512.0MB 问题描述 编写一个程序,输入两个整数,作为栅格的高度和宽度,然后用"+"."-"和&quo ...