从零开始学Docker-Day4(回顾)

docker理念

解决了运行环境和配置问题的软件容器,方便做持续集成并有助于整体发布的容器虚拟化技术

从零开始学Docker-Day4(回顾)_第1张图片

Docker三件套

镜像(image)

Docker镜像就是一个只读的模版。镜像可以用来创建Docker容器,一个镜像可以创建很多个容器。它也相当于是一个root文件系统。比如官方镜像centos:7就包含了完整的一套centos:7最小系统的root文件系统。相当于容器的”源代码“

容器(container)

可以把容器看做成是一个简易版的linux环境(包括root用户权限,进程空间,用户空间和网络空间等)和运行在其中的应用程序

仓库(repository)

集中存放镜像文件的场所,类似与github仓库,存放各种git项目的地方,Docker公司提供的官方registry被称为Docker Hub,存放各种镜像模版的地方。

仓库分为公开仓库(Public)和私有仓库(Private)

从零开始学Docker-Day4(回顾)_第2张图片

run干了什么

从零开始学Docker-Day4(回顾)_第3张图片

为什么docker比vm虚拟机快

从零开始学Docker-Day4(回顾)_第4张图片

新镜像推送私服库案例

1.下载镜像docker registry

docker pull Registry

2.运行私有库Registry,相当于本地有个私有docker hub

docker run -id registry /bin/bash

3.案例演示穿件一个新镜像,ubuntu安装ifconfig命令

apt-get update

apt-get install 命令

4.curl验证私服仓库上有什么镜像

curl -XGET http://192.168.21.200:5000/v2/_catalog

5.将新镜像myubuntu:1.2修改为符合私服规范的Tag

docker tag myubuntu:1.2 192.168.21.200:5000/myubuntu:1.2

6.修改配置文件使其支持http

vim /etc/docker/daemon.json

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

修改完成之后如果不生效的话重启docker

7.push推送到私服库

docker push 192.168.21.200:5000/myubuntu:1.2

8.curl验证私服库上有什么镜像

curl -XGET http://192.168.21.200:5000/v2/_catalog

9.pull到本地并运行

把原来的镜像删除时候

docker pull 192.168.21.200:5000/myubuntu:1.2

然后docker images 在此查看本地镜像

Docker容器卷

坑!

Docker挂载主机目录访问如果出现cannot open directory Permission denied
解决办法:在挂载目录后多加一个--privileged=turn参数

挂载目录的情况被默认为是不安全的行为。在Selinux里面挂载目录被禁止掉了,权限不够

从零开始学Docker-Day4(回顾)_第5张图片

数据卷是什么

有点类似于我们redis里面的rdb和aof文件

将docker容器内的数据保存进宿主机的磁盘中

卷就是一个目录或文件,存在于一个或多个容器中,由docker挂载到容器,但不属于联合文件系统,因此能够绕过Union File System 提供一些用于持续存储或共享数据的特性。

卷的设计目的就是数据的持久化,完全独立于容器的生存周期,因此Docker不会在容器删除时删除其挂载的数据卷

运行一个带有容器卷存储功能的容器实例

docker run -it--privileged=ture -v /宿主机的绝对路径目录:/容器内目录 镜像名

将运用与运行的环境打包镜像,run后形成容器实例运行,但是我们对数据的要求希望是持久化的

Docker容器产生的数据,如果不备份,那么当容器实例删除后,容器内的数据自然也就没有了。为了能保存数据在docker中我们使用卷

特点:

1.数据卷可以在容器之间共享或重用数据

2.卷中的更改可以直接实时生效,

3.数据卷中的更改不会包含在镜像的更新中

4.数据卷的生命周期一直持续到没有容器使用它为止

容器卷的案例

1.宿主机vs容器之间映射添加容器卷

直接命令添加

#命令 docker run -it --privileged=ture -v /宿主机绝对路径目录:/容器内目录 镜像名

公式:

#查看数据卷是否挂载成功

#容器和宿主机之间数据共享

2.读写规则映射添加说明

读写(默认)

docker run -it -v/宿主机绝对路径目录:/容器内目录:rw 镜像名

默认同上案例,默认就是rw

只读

容器实例内部被限制,只能读取不能写

docker run -it -v/宿主机绝对路径目录:/容器内目录:ro 镜像名

3.卷的继承和共享

宿主vs容器之间映射添加容器卷

读写规则映射添加说明

卷的继承和共享

容器1完成和宿主机的映射

docker run -it -v /mydocker/u:/tmp/u --name=x1 ubuntu /bin/bash

容器2继承容器1的卷规则

docker run -it --volumes-from x1 --name=x2 ubuntu

Docker上安装常用软件

从零开始学Docker-Day4(回顾)_第6张图片

总体步骤

搜索 拉取 查看 启动 停止 移除

docker安装tomcat

docker hub 上面查找 tomcat镜像

因为我们之前已经配置了阿里云的镜像,所以我们直接早本地上搜索就行

docker search tomcat # 本地搜索我们需要的镜像

docker pull tomcat #然后下载我们需要的版本,我这里选择的是默认版

docker images tomcat #查看是否有拉取到tomcat

使用tomcat镜像创建容器实例(也叫运行镜像)
docker run -it  -p 8080:8080 tomcat  
# -p 小写,主机端口:docker容器端口
# -P 大写  随机分配端口
# -i 交互
#	t 终端
# d:后台
访问猫首页

这里访问是404 ,把容器内的webapps删了

mv webapps.dist webpps 文件在这个里面

这个太麻烦了 还需要手动修改 这个时候我们用下面的

免修改版说明

docker pull billygoo/tomcat8-jdk8

docker run -d -p 8080:8080 --name mytomcat8 billygoo/tomcat8-jdk8

你可能感兴趣的:(docker,容器,运维)