Docker整理

Docker 解决“软件跨环境迁移问题”

开发环境:dev

测试环境:sit(test)

客户验收环境:uat/preprod(预生产)

生产环境:prod

Docker概念:1.是一个开源的应用容器引擎2013年初

2.基于go语言实现

3.Docker可以让开发者打包他们的应用以及依赖包到一个轻量级别可移值发布到任何linux机器上

4.容器是完全使用沙箱机制,相互隔离

5.容器性能开销极低

6.docker从17.03版本之后分为CE社区版本和EE企业版本

总结:docker是一种容器技术,解决软件跨环境迁移的问题

Docker 架构

Clients hosts registries

  1. 镜像images:docker镜像,就相当于是一个root文件系统。

  1. 容器container:镜像images和容器container的关系,就是面向对象程序设计中类和对象一样,镜像是静态定义,容器是镜像运行时的实体,容器可以被创建、启动、停止、删除、暂停等。

  1. 仓库repository:仓库可以看成一个代码控制中心用来保存镜像

配置Docker镜像加速器

1.USTC:中科大

2.阿里云(选择阿里云最快)

3.网易云

4.腾讯云

Docker命令

Docker服务相关的命令

  1. 启动docker服务

Systemctl start docker.service

  1. 停止docker服务

Systemctl stop docker.service

  1. 重启docker服务

Systemctl restart docker.service

  1. 查看docker服务状态

Systemctl status docker.service

  1. 开机启动docker服务

Systemctl enable docker.service

Docker镜像相关命令

  1. 查看镜像

docker images

docker images -q

  1. 搜索镜像

docker search

  1. 拉取镜像(下载)

docker pull

  1. 删除镜像

docker rmi id

删除所有镜像

Docker rmi `docker images -q`

Docker 容器相关命令(必须掌握)

查看容器

docker ps(查看运行时容器)

docker ps -a(查看所有容器)

创建容器

-i 代表一直运行,没有客户端连接就关闭

-t 分配一个伪终端

-d 后台运行容器(守护式)

--name= 启动名字

/bin/bash 进入容器内部

docker run -di --name

退出容器

exit

进入容器

docker exec -it 容器id /bin/bash (交互式容器)

启动容器

docker start 名字

停止容器

docker stop 名字

删除容器

docker rm 名字

docker rm `docker ps -aq`

查看容器信息

docker inspect 名字

更新参数

docker update

启动docker 自动启动容器

--restart=always

查看日志命令

Docker logs

Docker数据卷(文件目录(文件))

思考:

  1. docker容器删除后,在容器中产生的数据也会随之销毁

  1. docker容器和外部机器可以直接交换文件吗

  1. 容器之间想要进行数据交互

数据卷概念:

数据卷是宿主机中的一个目录或者文件

当容器目录和数据卷目录绑定后,对方的修改会立即同步

一个数据卷可以被多个容器同时挂载

一个容器也可以被挂载多个数据卷

数据卷作用:

容器数据持久化

外部机器和容器间接通信

容器之间数据交换

配置数据卷:

创建启动容器时,使用-v参数设置数据卷

--privileged=true 解决挂载目录没有权限问题

docker run -v 宿主机(虚拟机)目录(文件):容器内目录(文件)

注意事项:

  1. 目录必须为绝对路径

  1. 如果目录不存在,会自动创建

  1. 可以挂载多个数据卷

数据卷容器:

思考:多容器进行数据交换

  1. 多个容器挂载同一个数据卷

  1. 数据卷容器

配置数据卷

  1. 启动数据卷容器:-v参数设置数据卷

docker run -it --name=name -v /volume --privileged=true 镜像名称

  1. 创建启动容器使用--volumes-from参数设置数据卷

应用部署:

Mysql 部署

实现步骤:

  1. 搜索镜像

  1. 拉取镜像

  1. 创建容器

  1. 操作容器

容器内的网络服务和外部机器不饿能直接访问

外部机器和宿主机可以直接通信

宿主机和容器可以直接通信

端口映射

-e(evn) 配置

Dockerfile

Docker镜像原理:

1.Docker镜像是由特殊的文件系统叠加而成

2.最低端是bootfs,并使用宿主机的bootfs

3.第二层是root文件系统rootfs称为baseimages

  1. 然后在往上可以叠加其他的镜像文件

  1. 统一文件系统(Union File System)技术能够将不同的层整合成一个文件系统,为这些层提供了一个统一的视角,只存在一个文件系统。

  1. 一个镜像可以放在另一个镜像上面。位于下面的镜像称为父镜像,最底部的镜像成为基础镜像

7.当一个镜像启动容器时,docker会在最顶端加载一个读写文件系统作为容器

(复用)

docker镜像本质是:

分层的文件系统

Docker中centos镜像为什么只有200MB,而一个centos操作系统iso文件要几个G:

Centos的iso镜像包含bootfs和rootfs,而docker的centos镜像复用操作系统的bootfs只有rootfs和其他镜像层

Docker中一个tomcat镜像为什么有500MB,而一个tomcat安装包只有70MB

由于docker中镜像是分层的tomcat虽然只有70MB单他需要依赖于父镜像和基础镜像,所有整个对外暴漏的tomcat镜像大小500的MB

操作系统的组成部分:

进程调度

进程通信

内存管理

设备管理

文件管理:linux文件系统由bootfs和rootfs两部分组成

网络通信

作业控制

Bootfs:包含bootloader(引导加载程序)和kernel(内核)

Rootfs:root文件系统,包含的就是典型linux系统中的/dev,/proc,/bin,/etc等标准目录和文件

不同的linux发行版本,bootfs基本一样,而rootfs不同

Docker 镜像制作:

  1. 容器转为镜像

容器转镜像-> 转压缩文件->压缩文件转镜像->启动容器

docker commit 容器id 镜像名称:版本号

docker save -o 压缩文件名称 镜像名称:版本号

Docker load -i 压缩文件名称

  1. Dockerfile

Dockerfile是一个文本文件

包含一条条的指令

  1. 定义父镜像:FROM centos:7

  1. 定义作者信息MAINTAINER作者

  1. 执行安装vim命令 RUN yum install -y vim

  1. 定义默认的工作目录WORKDIR/usr

  1. 定义容器启动执行命令cmd /bin/bash

  1. 构建docker build -f (指定文件位置) -t(设置信的镜像名称 版本 )

启动springboot项目

  1. 定义父镜像FROM java:8

  1. 定义作者信息MAINTAINER作者

  1. 将jar包添加到容器 ADD 全拼.jar app.jar

  1. 定义容器启动执行命令cmd java -jar app.jar

  1. 构建docker build -f (指定文件位置) -t(设置信的镜像名称 版本 )

查看日志:

docker logs -f -t --tail -f 容器名字

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值