Docker轻松上手

本文介绍了Docker的基础知识,包括其与虚拟机的区别、基本组成、安装过程以及简单使用,如Docker commit、容器数据卷和Dockerfile的创建。Docker简化了应用部署,实现了开发和运维的高效协作,通过镜像和容器实现资源的高效利用。

什么是Docker?

1.Docker是一个基于`go`语言并遵从`apache2.0`开源协议的一个`LXC`的高级容器引擎。
2.`Linux container `是一种内核虚拟化技术,可以提供轻量级的虚拟化,同时也是docker的底层技术支持。
3.Docker的核心思想就是隔离,打包装箱!每个箱子都是互相隔离的。

为什么需要Docker?

1.开发:解决环境问题。
2.运维:方便管理项目。
3.企业:迅速及安全的交付项目。

Docker能干什么?

比较Docker和虚拟机技术的不同:

1.传统虚拟以机,虚拟出一条硬件,运行一个完整的操作系统,然后在这个系统上安装和运行软件
2.容器内的应用直接运行在宿主机的内容,容器是没有自己的内核的,也没有虚似我们的硬件,所以就轻便
3.每个容器间是互相隔离,每个容器内都有一个属于自己的文件系统,互不影响。

DevOps(开发、运维)
应用更快速的交付和部署
传统:一堆帮助文档,安装程序
Docker:打包镜像发布测试,一键运行

更便捷的升级和扩缩容
使用了Docker之后,我们部署应用就和搭积木一样!
项目打包为一个镜像,扩展服务器A!服务器B

更简单的系统运维
在容器化之后,我们的开发,测试环境都是高度一致的。

更高效的计算资源利用:
Docker是内核级别的虚拟化,可以再一个物理机上可以运行很多的容器实例!服务器的性能可以被压榨到极致。

Docker的基本组成

在这里插入图片描述
镜像(image):

docker镜像就好比是一个模板,可以通过这个模板来创建容器服务,tomcat镜像==>run=>tomcat(01容器(提供服务器),
通过这个镜像可以创建多个容器(最终服务运行或者项日运行就是在容器中的)。

容器(container):

Docker利用容器技术,独立运行一个或者一个组应用,通过镜像来创建的。
启动,停止,删除,基本命令!
且就可以把这个容器理解为就是一个简易的linux系统

仓库(repository):

仓库就是存放镜像的地方!
仓库分为公有仓库和私有仓库!
Docker Hub(默认是国外的)
阿里云.…都有容器服务器(配置镜像加速!)

安装Docker

部署安装

环境准备

操作系统IP地址selinux和firewalld
Centos 7192.168.1.20关闭

使用仓库(repository)安装

1.设置docke仓库

$ sudo yum install -y yum-utils \
 device-mapper-persistent-data \
 lvm2
 
$ sudo yum-config-manager \
 --add-repo \
 http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

2.修改docker-ce.repo

	baseuel=https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/centos/7.9/x86_64/test/Packages/ce/linux/centos/7.9/x86_64/stable/

3.安装Docker CE
	sudo yum install docker-ce docker-ce-cli containerd.io -y

4.自启动Docker
	sudo systemctl start docker && sudo systemctl enable docker

5.验证安装是否正确
	docker run hello-world

6.卸载docker
	#1、卸载依赖
		yum remove docker-ce docker-ce-cli containerd.io
	#2、删除资源
		rm -rf /var/lib/docker

配置阿里云仓库加速

sudo mkdir -p /etc/docker

sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors":["https://qiyb9988.mirror.aliyuncs.com"]
}
EOF

systemctl daemon-reload && systemctl restart docker

底层原理

Docker是什么工作的?

Docker是一个Client-Server结构的系统,Docker的守护进程运行在主机上。通过Socket从客户端访问!

DockerServer接收到Docker-Client的![在这里插入图片描述](https://img-blog.csdnimg.cn/070cf5062b534aef8b8137c33140bee0.png)
指令,就会执行这个命令!

在这里插入图片描述
Docker为什么比VM快?
1、Docker有着比虚拟机更少的抽象层。
2、Docker利用的是宿主机的内核,vm需要是Guest OS。

可视化界面

什么portainer?

Docker图形化界面管理工具!提供一个后台面板供我们操作!
docker run -d -p 8088:9000 \
--restart=always -v /var/run/docker.sock:/var/run/docker.sock --privileged=true portainer/portainer

访问测试:http/ip:8088/
通过它来访问了

Docker 简单使用

Docker commit

docker commit提交容器成为一个新的副本
#命令和git原理类似
docker commit-m="提交的描述信息,"-a="作者" 容器id 目标镜像名:[TAG]

实战测试

启动一个默认的tomcat,发现这个默认的tomcat是设有webapps应用,镜像的原因,官方的镜像默认webapps下面是设有文件的!

我自己拷贝进去了基本的文件

将我们操作过的容器通过commit提交为一个镜像!我们以后就使用我们修改过的镜像即可,这就是我们自己的一个修改的镜像

在这里插入图片描述

容器数据卷

什么是数据卷?

数据卷是docker特有的一个特殊目录,用来让docker里的容器将目录映射到主机目录,实现数据持久化。

为什么使用数据卷?

主要目的是为了数据的持久化,防止突然意外造成的数据损失,次要目的是可以不用进容器就能修改容器里的配置,达到高效化和高容错,毕竟容器不小心配置错误了就进不去容器了,服务也不能开启。

容器数据卷的特点

卷中数据的更改可以直接生效
数据卷可在容器之间共享或重用数据
数据卷中的更改不会包含在镜像的更新中
数据卷的生命周期一直持续到没有容器使用它为止

数据卷实现

格式:
-v 容器目录:挂载到的主机目录

示例:
docker run -it -v /home/ceshi:/home centos /bin/bash

启动起来时候我们可以通过docker inspect容器id查看

实战测试MySQL保存数据
 docker run -d -p 3310:3306 -v /home/mysql/conf:/etc/mysql/conf.d -v /home/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 --name mysql01 mysql:5.7

数据卷容器
多个主机共享宿主机的目录,流程为docker1挂载到宿主机,docker2挂载docker1,docker3挂载docker1

命令
--volumes-from 

示例
开启第一台容器
	 docker run -d -p 3310:3306 -v /home/mysql/conf:/etc/mysql/conf.d -v /home/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 --name mysql01 mysql:5.7

开启第二台容器并挂载到第一台容器上
	docker run -it -d -p 3311:3306 -e MYSQL_ROOT_PASSWORD=123456 --name mysql02 --volumes-from mysql01 mysql:5.7

开启第第三台容器并挂载到第一台容器上
	docker run -it -d -p 3312:3306 -e MYSQL_ROOT_PASSWORD=123456 --name mysql03 --volumes-from mysql01 mysql:5.7

任何容器在共享目录读写的数据都会保存并共享

Docker file

什么是 Dockerfile?

Dockerfile 是用来构建 Docker 镜像的构建文件, 是由一系列的命令和参数构成的脚本

Dockerfile指令

FROM				#基础镜镜像,一切从这里开始构建
MAINTAINER			#镜像是谁写的,姓名+邮箱
RUN					#镜像构建的时候需要运行的命令
ADD					#步骡:tomcat镜像,这个tomcat压缩包!添加内容
WORKDIR				#镜像的工作目录
VOLUME				#挂载的目录
EXPOSE				#保留端口配置
CMD					#指定这个容器启动的时候要运行的命令,只有最后一个会生效,可被替代
ENTRYPOINT			#指定这个容器启动的时候要运行的命令,可以追加命令
ONBUILD				#当构建一个被继承DockerFile这个时候就会运ONBUILD的指令。触发指令。
COPY				#类似ADD,将我们文件拷贝到镜像中
ENV					#构建的时候设置环境变量!

构建自己的centos

创建构建文件
mkdir mycentos

FROM centos
MAINTAINER sudo<2984826209@qq.com>
ENV MYPATH /usr/local
WORKDIR $MYPATH
RUN yum -y install vim
RUN yum -y install net-tools
EXPOSE 80
CMD echo SMYPATH
CMD echo "----end----"
CMD /bin/bash

编译构建文件
docker build -f mycentos -t mycentos:0.1 .

查看构建文件
docker history mycentos:0.1 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值