Docker
https://i-blog.csdnimg.cn/direct/60d55ba72cce40559c62364d618712b8.png一、Docker概述
什么是Docker?
Docker 是一个开源的应用容器引擎,Docker 可以让开发者打包他们的应用以及依靠包到一个轻量级、可移植的容器中,然后发布到任何盛行的 Linux 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。更重要的是容器性能开销极低。
Docker直译过来为“搬运工”,就是搬运集装箱Container,Container可以装载任意范例的App,开发人员可以通过Docker将App变成一种标准化的,可移植的,自管理的组件,我们可以在任意主流操作系统中开发,调试和运行。
可以简单理解为一个轻量级的虚拟机,只虚拟所需要的运行环境,其他多余软件之类一概不要。
总结: docker是一种容器技术,解决软件跨环境迁移的问题。功能
打包:可以将软件运行所需依靠,第三方库,软件打包到一块,变成一个安装包。(背面会演示)
分发:可以把你打包好的“安装包”上传到一个镜像堆栈,其他人可以非常方便的获取和安装
部署:拿着“安装包”就可以一个下令运行起来你的应用,自动模拟出一摸一样的运行环境
二、Docker 架构
Docker使用客户端-服务器架构,此中包括多个关键组件,确保容器化应用的高效构建、管理和运行。 Docker客户端(client) 与 保卫进程(Docker daemon)举行对话,该保卫进程 完成了构建、运行和分发 Docker 容器的繁重工作。 Docker 容器通过 Docker 镜像来创建。
容器与镜像的关系类似于面向对象编程中的对象与类。
Docker面向对象容器对象镜像类 堆栈( Repository ): 是 docker 提供的一个用来保存镜像的堆栈。 镜像( Image ) : 镜像就是一个可执行的包 , 用来创建容器 ,docker中每每一个软件就是一个镜像。 容器( Container ): 容器是镜像运行时的实体。容器可以被创建、启动、制止、删除、停息等。 https://i-blog.csdnimg.cn/direct/c0f1ae8b353346fbb65a473e3349c9ba.png
Docker 架构的工作流程
[*]构建镜像:使用 Dockerfile 创建镜像。
[*]推送镜像到注册表:将镜像上传到 Docker Hub 或私有注册表中。
[*]拉取镜像:通过 docker pull 从注册表中拉取镜像。
[*]运行容器:使用镜像创建并启动容器。
[*]管理容器:使用 Docker 客户端下令管理正在运行的容器(例如检察日记、制止容器、检察资源使用情况等)。
[*]网络与存储:容器之间通过 Docker 网络连接,数据通过 Docker 卷或绑定挂载举行长期化。
三、Docker安装
笔者这里使用VMware创建虚拟机(CentOS 8)安装Docker,同时使用FinalShell工具通过SSH连接。
1.更新yum源
CentOS8已经制止维护,可能会出现错误,只要更换/etc/yum.repos.d目次下的源为可用源
2.安装yum-utils,配置镜像源
yum install-yyum-utils 3.设置更新镜像源
yum-config-manager \
--add-repo \
https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo 4.安装
yum install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin 5.查抄版本
docker -v https://i-blog.csdnimg.cn/direct/414fa6ca44c14796898af16c6dd58ece.png
如图即为安装成功
6.常用启动下令
启动下令
systemctl start docker 关闭下令
systemctl stop docker 设置开机自动启动
systemctl enable docker 7.配置镜像
在etc目次下创建docker目次
mkdir -p /etc/docker 进入该目次创建daemon.json配置
touch daemon.json 修改文件
vim daemon.json {
"registry-mirrors": [
"https://mirror.aliyuncs.com",
"https://mirror.ccs.tencentyun.com",
"https://mirror.baidubce.com",
"https://docker.mirrors.ustc.edu.cn",
"https://docker.nju.edu.cn",
"https://docker.m.daocloud.io",
"https://6ddblrw4.mirror.aliyuncs.com",
"https://<cloudflare-accelerator-url>"
]
}
这是一些镜像
Docker 官方和国内很多云服务商都提供了国内加速器服务,例如:
[*]科大镜像:https://docker.mirrors.ustc.edu.cn/
[*]网易:https://hub-mirror.c.163.com/
[*]阿里云:https://<你的ID>.mirror.aliyuncs.com
[*]七牛云加速器:https://reg-mirror.qiniu.com
当配置某一个加速器地址之后,若发现拉取不到镜像,请切换到另一个加速器地址。国内各大云服务商均提供了 Docker 镜像加速服务,发起根据运行 Docker 的云平台选择对应的镜像加速服务。
8.重载配置启动
重载配置
systemctl daemon-reload 重启
systemctl restart docker 四、Docker服务下令
1.镜像下令
镜像列表
docker images
删除本地镜像
docker rmi 镜像名/镜像id
从docker仓库拉取镜像到本地仓库
docker pull
从dockerfile构建镜像
docker build
保存镜像到本地,生成tar文件
docker save
载入本地镜像
docker load
推送镜像到服务器
docker push https://i-blog.csdnimg.cn/direct/c37e27d6a3a548478f86885dd663b063.pnghttps://i-blog.csdnimg.cn/direct/c010692a95384b12ad4a952af39ea6fb.png
2.容器下令
1.查看所有容器
docker ps -a
2.停止容器
docker stop 容器名/容器id
3.删除容器
docker rm 容器名/容器id
4. 启动容器
docker start 容器名/容器id
5.创建一个新的容器并运行
dockerrun 镜像名/镜像id https://i-blog.csdnimg.cn/direct/a1f9b232920d42c3a47ff09c0cca01d2.png
镜像和容器
镜像(Image):Docker将应用程序及其所需的依靠、函数库、环境、配置等文件打包在一起,称为镜像。
容器(Container):镜像中的应用程序运行后形成的进程就是容器,只是Docker会给容器做隔离,对外不可见。
五、Docker安装服务
安装mysql
1.下载镜像
docker pull 镜像名:版本号
docker pull mysql:8.0.33 2.安装
docker run -d -p 3306:3306 \
--name mysql \
--restart=always \
--privileged=true \
-e TZ=Asia/Shanghai \
-e MYSQL_ROOT_PASSWORD=root \
mysql:8.0.33
--name:指定容器名称
--restart=always 自动启动
--privileged=true 拥有特权
-p:指定端口映射
-d:让容器配景运行
3.进入容器
dockerexec-it 容器名/容器idbash 4.登录mysql
mysql-uroot-proot https://i-blog.csdnimg.cn/direct/cb87b9b22aea4ac19b8a2142698734f3.png
5.修改root账号加密方式
ALTER USER'root'@'%'IDENTIFIED WITH mysql_native_password BY'root'; 这一步开始,就可以从可视化数据库客户端登录访问了
IP为虚拟IP地址
https://i-blog.csdnimg.cn/direct/587649f570244ef788fc017bb075a3ea.png
6.退出
exit 安装Nginx
1.下载镜像
不指定版本号默认最新
docker pull nginx:1.24 2.安装
docker run -d -p 80:80 \
--name nginx \
--restart=always \
--privileged=true \
nginx:1.24 3.访问
虚拟IP:80https://i-blog.csdnimg.cn/direct/41fd531eac4e4273856bb316118d020b.png
进入容器内部,容器内部部署项目标目次为 /usr/share/nginx/html
docker exec -itnginxbash cd /usr/share/nginx/html 此时又有新的问题,如果我们想将自己的前端项目部署到容器中,
或者修改容器内的文件会很不方便.
这时需要在外部配置一个数据卷挂载文件.
数据卷挂载
数据卷,即一个虚拟目次,是容器内目次与宿主机目次之间映射的桥梁。
它将宿主机目次映射到容器内目次,方便我们操作容器内文件,或者方便迁移容器产生的数据。
在执行docker run下令时,使用-v数据卷:容器内目次可以完成数据卷挂载。
创建数据卷
mkdir -p /opt/nginx/html 安装
docker run -d -p 80:80 \
--name nginx \
--restart=always \
--privileged=true \
-v /opt/nginx/html:/usr/share/nginx/html \
nginx:1.24 此中 -v /opt/nginx/html 就是与容器中对应的一个在宿主机中的数据卷
我们只需要将文件部署到宿主机的/opt/nginx/html目次下即可
安装Tomcat/Redis
参考菜鸟教程,包学包会。
Docker安装Tomcat
Docker安装Redis
菜鸟教程
六、自定义镜像
当我们从 docker 镜像堆栈中下载的镜像不能满足我们的需求时,我们可以通过以下两种方式对镜像举行更改,使用 Dockerfile 指令来创建一个新的镜像
我们使用下令 docker build , 从零开始来创建一个新的镜像。为此,我们需要创建一个 Dockerfile 文件,此中包含一组指令来告诉 Docker 如何构建我们的镜像。
指令阐明示例FROM指定基础镜像java:8ADD拷贝当地文件到镜像的指定目次/demo.jar demo.jarEXPOSE指定容器运行时监听的端口,是给镜像使用者看的EXPOSE 8080ENTRYPOINT /CMD镜像中应用的启动下令,容器运行时调用ENTRYPOINT java -jar xx.jar 示例
1.将我们的springboot项目打包news.jar
2. 在linux中创建一个文件夹用来存放Dockerfile和jar包
mkdir /opt/news 3.将springboot打包后的jar文件上传到news目次中
4.创建一个名为Dockerfile的文件
FROM openjdk:8-jre
ADD/news.jarnews.jar
EXPOSE 8088
CMD java -jar news.jar 5.使用下令将dockerfile中配置的内容生成一个镜像
docker build-tnews . 6.运行自定义镜像
docker run -d -p 8088:8088 \
--name news8088 \
--restart=always \
news 7.访问
IP:8088
8.将自定义镜像下载到当地
进入要保存的目次,输入以下下令
docker save news > news.tar 9.载入当地镜像
docker load < news.tar https://i-blog.csdnimg.cn/direct/c2ae77eb20e44e00889fd131bd241b87.png
相关参考链接
1.菜鸟教程:Docker 教程 | 菜鸟教程 (runoob.com)
2.Docker官网:https://www.docker.com
3.csdn大神解读:Docker入门教程(非常具体)从零基础入门到精通,看完这一篇就够了
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页:
[1]