Docker学习

Docker学习

Docker的思想

为什么这个世界上会有Docker这种东西?

因为java已经到了微服务的阶段了,会有很多的运维,部署,还需要弹性伸缩性好。所以就有了Docker。

传统的项目要想发个jar包或war时,还得对环境有要求,咱机器上需要装上jdk,tomcat。。。

每个不同的服务,都需要去专业的对待,必须要了解它,你才能整成功。

docker就会把jar或war包+环境配置=整体包,这个整体包就可以做成标准的集装箱。

java可以一次编译,处处运行;docker可以一次打包,处处部署。

docker是go语言实现,基于Linux的虚拟化技术切入的。

Linux系统=内核+文件系统
Linux虚拟化技术=复用原内核+自己定制文件系统

对比传统虚拟机总结
在这里插入图片描述

Docker架构

在这里插入图片描述

Images镜像就是jar,war或redis,mysql他们打出来的镜像包,其实就是个文件包。这些镜像放到一个数据集里面,把它创建成一个服务包时,他就变成了一个容器(Container)。

Docker基本概念

三个部件:镜像(Image)、容器(Container)、仓库(Repository)

镜像:Docker 提供了一个很简单的机制来创建镜像或者更新现有的镜像,用户甚至可以直接 从其他人那里下载一个已经做好的镜像来直接使用。

容器:容器是从镜像创建的运行实例。它可以被启动、开始、停止、删除。每个容器都是相互 隔离的、保证安全的平台。

仓库:仓库是集中存放镜像文件的场所。可分为公开仓库(Public)和私有仓库(Private)两种形式。当用户创建了自己的镜像之后就可以使用 push 命令将它上传到公有或者私有仓库,这样下次在另外一台机器上使用这个镜像时候,只需要从仓库上 pull 下来就可以了。

我们创建的所有跑的镜像都需要有一个地方来存,像git仓库或maven仓库一样,docker也需要有个仓库来存(镜像仓库)。每一个镜像都可以创建出一个容器,一个镜像可以创建多个容器。如果容器里面有了一些修改,可以按当前容器的模板返回回来做成一个镜像(提交),提交我们一般都不怎么用。

在这里插入图片描述

容器、镜像的运行关系

镜像类似Class类,容器类似new对象

在这里插入图片描述

镜像总结

Docker的两大技术:1、Linux的容器方面技术 2、docker镜像技术

在这里插入图片描述

容器使用

容器是独立运行的一个或一组应用,以及它们的运行态环境

在这里插入图片描述

仓库使用

docker官方仓库: https://hub.docker.com
-------- 自由注册,邮件激活
Docker pull/search/login/push/tag
Tag: 标记本地镜像,将其归入某一仓库
Push: 推送镜像到仓库 --需要登陆
Search:在仓库中查询镜像 – 无法查询到tag版本
Pull: 下载镜像到本地
Login:登陆仓库

私有仓库使用

下载registry镜像:
docker pull registry
-----可配置加速器加速下载

启动:
docker run -d --name reg -p 5000:5000 registry
设置http传输:systemctl daemon-reload | systemctl restart docker

docker tag hello-world http://192.168.244.5:5000/hello-world
docker push 192.168.244.5:5000/hello-world
查询:curl http://192.168.244.5:5000/v2/_catalog | http://192.168.244.5:5000/v2/hello-world/tags/list

Docker初体验

安装Docker

1、查询安装过的包
yum list installed | grep docker
docker-engine.x86_64 17.03.0.ce-1.el7.centos @dockerrepo
2、删除安装的软件包
yum -y remove docker-engine.x86_64
3、删除镜像/容器等
rm -rf /var/lib/docker

CentOS7

CentOS7 系统 CentOS-Extras库中已带 Docker,可以直接安装:

$ sudo yum install docker        ##不是最新版本

在这里插入图片描述

#最新版安装
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
sudo yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docke r-ce.repo
sudo yum install docker-ce

查看docker版本

docker version
docker info

启动docker

sudo service docker start

设置随系统启动

sudo chkconfig docker on
docker run hello-world ##进入 docker 世界

在这里插入图片描述

Docker基本操作

容器操作

docker [run|start|stop|restart|kill|rm|pause|unpause]

run/create[镜像名]: 创建一个新的容器并运行一个命令

start/stop/restart[容器名]:启动/停止/重启一个容器

kill [容器名]: 直接杀掉容器,不给进程响应时间

rm[容器名]:删除已经停止的容器

pause/unpause[容器名]:暂停/恢复容器中的进程

docker [ps|inspect|exec|logs|export|import]

ps:查看容器列表(默认查看正在运行的容器,-a 查看所有容器)

inspect[容器名]:查看容器配置元数据

exec -it [容器名] /bin/bash:进入容器环境中交互操作

logs --since=“2019-02-01” -f --tail=10 [容器名]:查看容器日志

cp path1 [容器名]****:path 容器与主机之间的数据拷贝

export -o test.tar [容器名] / docker export [容器名]>test.tar : 文件系统作为一个 tar 归档文件

import **test.tar [镜像名:版本号]😗*导入归档文件,成为一个镜像

镜像操作

docker images|rmi|tag|build|history|save|load]

images:列出本地镜像列表

rmi [镜像名:版本]:删除镜像

tag [镜像名:版本] [仓库]/[镜像名:版本]:标记本地镜像,将其归入某一仓库

build -t [镜像名:版本]

[path]:Dockerfile 创建镜像

history [镜像名:版本]: 查看指定镜像的创建历史

save -o xxx.tar [镜像名:版本] / save [镜像名:版本]>xxx.tar : 将镜像保存成 tar 归档文件

load –input xx.tar / docker load<xxx.tar : 从归档文件加载镜像

history 命令查看镜像层

例:docker history hello-world

在这里插入图片描述

查看镜像文件

镜像存放在 imagedb 里 一般在 image/overlay2/imagedb/content/sha256 下

在这里插入图片描述

交互式创建容器并进入

在这里插入图片描述

docker run -it --name centos centos /bin/bash(前台进程)

------------------------exit 退出也关闭容器; Ctrl+P+Q 退出不关闭容器

在这里插入图片描述

后台启动容器:

docker run -d --name nginx nginx

进入已运行的容器:

docker exec -it nginx /bin/bash

查看容器的元数据: docker inspect nginx

绑定容器端口到主机:

docker run -d -p 8080:80 --name nginx nginx:latest

挂载主机文件目录到容器内:

docker run -dit -v /root/peter_dir/:/pdir --name cent centos

复制主机文件到容器内:

docker cp anaconda-ks.cfg cent:/var

数据管理

在这里插入图片描述

Dockerfile使用

dockerfile是一个文本格式的配置文件,用户可以使用Dockerfile快速创建自定义镜像。

dockerfile的指令分为两种:构建指令和设置指令。构建命令:用于构建镜像的时候执行的,不会在该镜像上的容器里执行。
设置命令:用于设image的属性,将会在运行的容器里执行。

在这里插入图片描述

Dockerfile指令集
1 FROM
第一条指令必须为FROM指令,用于指定基础镜像。
2 MAINTAINER
指定维护者信息。
3 RUN
会在shell终端运行命令。
4 EXPOSE
格式为 EXPOSE [ …],声明容器需要暴露的端口号。
-----------镜像启动可以通过 –P 或 -p 进行端口映射的绑定。
5 ENV
指定一个环境变量,可以被后续的RUN引用,并且在容器中记录该环境变量。
6 ADD
该命令将复制指定的到容器中的。
-------其中可以是Dockerfile所在目录的一个相对路径;也可以是tar文件(自动解压)。
7 VOLUME
格式为 VOLUME [path]。
--------创建一个可以从本地主机或其他容器挂载点,一般用来存放需要保持的数据。
8 USER
指定运行容器时的用户名,后续的RUN也会指定该用户。
9 WORKDIR
指定工作空间,后续命令都在此目录下执行。
10 CMD
的绑定。
5 ENV
指定一个环境变量,可以被后续的RUN引用,并且在容器中记录该环境变量。
6 ADD
该命令将复制指定的到容器中的。
-------其中可以是Dockerfile所在目录的一个相对路径;也可以是tar文件(自动解压)。
7 VOLUME
格式为 VOLUME [path]。
--------创建一个可以从本地主机或其他容器挂载点,一般用来存放需要保持的数据。
8 USER
指定运行容器时的用户名,后续的RUN也会指定该用户。
9 WORKDIR
指定工作空间,后续命令都在此目录下执行。
10 CMD
11 ENTRYPOINT

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值