docker学习笔记

docker

1.什么是docker

docker就是可以装东西的容器,就像杯子可以装水,笔筒可以放笔,书包可以放书一样;你可以把hello-word放进docker,可以把应用放进docker。是世界领先的容器化平台。
docker官网https://www.docker.com/

2.docker思想:

1)集装箱。不管在哪,运行都一样。
2)标准化 运输方式、存储方式、API接口
Docker的标准化让快速扩展,弹性伸缩变的简单
Docker提供了一系列的RESTFUL API接口,包含了对Docker也就是对应用的控制,其中包括停止 查看 删除等等
3)隔离
最底层的技术实际上是一种linux的一种内核的限制机制,叫做LXC,LXC是一种轻量级的容器虚拟化技术,最大效率的隔离了进程和资源,通过cgroup namespace等限制隔离进程组所使用的物理资源,如CPU I/O Memory等等。这个机制早在7、8年之间就已经加入到了linux内核技术当中了

一个程序正常的运行起来,需要的基本条件,
底层的从操作系统
JDK
Tomcat
数据库
配置文件

docker解决了什么问题?
Docker解决了运行环境不一致所带来的问题,
死循环程序导致内存不够,硬盘不足,
双11,服务器撑不住了

3.docker的核心技术

Build —> 构建镜像(从仓库中取出镜像使用命令直接运行)
Ship —> 运输仓库(装有各种镜像,变成容器)
Run —> 运行容器(运行镜像)

镜像 images
Docker镜像的每一层文件系统是只读的,然后把每一层加载完成之后,这些文件都会被看做是同一个目录,相当于只有一个文件系统,Docker的这种文件系统就被称之为镜像,

在这里插入图片描述

从本质上面来说,Docker就是一系列的文件,可以包括我们的应用的程序的文件,我们应用的环境的文件,Docker把这些文件保存在了本地,既然保存了,那么是以什么样的格式进行保存的呢?说到镜像的存储格式,就要说到linux的一个存储技术,叫做联合文件系统,Union FS,它是一种分层的文件系统,它可以将不同的目录挂到同一个虚拟的文件系统下面,通过这样一种方式,联合文件系统就可以实现文件的分成,比如test1可以看做是第一层,test2可以看做是第二层,每一层有每一层自己的文件,Docker镜像就是利用了这种分层的概念来实现镜像储存。

容器 container
容器的本质就是一个进程,只有最上面一层是可写的,下面的都是只读。一个可运行的动态文件系统,是镜像的实例

容器的本质就是一个进程,当我们的程序运行起来的时候,势必要写一些日志,文件等等,或者是对系统的某一些文件做了一些修改,这是大部分程序都有的一个需求,所以容器在最上面创建了一个可读可写的文件系统,如果程序在运行的过程当中要写一个镜像当中的文件,因为镜像的每一层是只读的,所以它在写某一个文件之前,会把这个文件的这一层拷贝到文件的最上层,然后再对它进行修改,修改了完成之后,当我们的应用读一个文件的时候,它会从最顶层开始进行查找,如果没有,才会找最下一层,因为我们的这个文件已经被拷到了最上一层

仓库
docker官方的 hub.docker.com
网易蜂巢地址:c.163.com
https://c.163yun.com/hub#/m

先把docker镜像传到仓库,再由目的地去仓库把镜像拉过去。由中央服务器提供仓库
在这里插入图片描述

在这里插入图片描述

4.docker 的安装

可以在mac、linux 、windows。这里略过

5.docker的初体验

第一个docker镜像
拿取镜像 docker pull [options] NAME[:TAG]
查看本机的镜像 docker images [options] [repository[:TAG]]

在这里插入图片描述

运行容器 docker run [options] image[:TAG] [COMMAND] [ARG…]
在这里插入图片描述

在这里插入图片描述
docker run流程:
客户端向docker daemon发送一条pull命令,docker daemon会先在本机查找镜像,如果没找到则去远程仓库里找,然后把镜像下载到本地,下载回来后通过一定的方式将镜像运行起来,变成docker容器。

6.docker运行nginx镜像

持久运行的容器
前台挂起&后台运行
进入容器的内部

在这里插入图片描述

docker pull hub.c.163.com/library/nginx:latest
在这里插入图片描述
访问http://localhost:8080/
在这里插入图片描述

有的时候需要进入容器内部;docker exec -it xxx bash
在这里插入图片描述
-i :即使没有附加也保持STDIN 打开
-t :分配一个伪终端

ls
ps -ef
ps -ef提示找不到ps命令,由于在容器里面没有安装ps命令
在nginx容器中执行以下命令安装ps组件:
apt-get update && apt-get install procps

7.docker的网络

网络类型
host 模式:和宿主机公用一块网卡
brige模式:有两套网络系统,所以需要湍口映射
端口映射
在这里插入图片描述

在这里插入图片描述
-P 大P代表随机端口

在这里插入图片描述

在这里插入图片描述

8.制作自己的镜像

Dockerfile
docker build

from hub.c.163.com/library/tomcat

MAINTAINER xiaohu xxx@163.com

COPY jpress-web-newest.war /usr/local/tomcat/webapps

docker build .
注意下面的.是当前的目录。
也就是docker file的存放目录

docker build -t jpress:latest .

docker run -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 -e MYSQL_DATABASE=jpress hub.c.163.com/library/mysql

docker restart xxxx

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值