零基础入门Docker

** 如有错误,感谢指正**

如有错误,感谢指正,请私信博主,有辛苦红包,拜“一字之师”。

请根据目录寻找自己需要的段落

导语:本博客为个人整理Java学习记录帖,如有错误,感谢指正。系统学习,欢迎持续关注,后续陆陆续续更新~
Java 交流qq群 383245788。群内有一些资源和大佬,欢迎进来交流。

本文旨在学习交流,个人Docker学习心得

全文参照1:菜鸟教程
全文参照2:docker官网

Docker技术应用与实战

1、 Docker的安装和介绍

1. 没有docker的世界

  1. 场景一===》节省项目环境部署时间
    问题:每次部署项目到测试、生产等环境,都要部署一大推以来的软件,工具,花费很长时间。
    使用docker可以实现一次构建多次部署,一劳永逸
  2. 场景二===》环境一致性
    问题:程序在我这里跑跑得好好的,在你那怎么就不行呢?
    版本一致性:包括操作系统、数据库、中间件的版本,被测系统的版本。
    配置一致性:系统(操作系统/数据库、中间件/被测试系统)参数的配置一致。
  3. 场景三===》持续集成(devops)
    问题:老板突然说5分钟后在服务器上演示一下项目的最新成果,你能做到嘛?
  4. 场景四—微服务于容器
  5. 场景五—弹性伸缩

2. Docker是什么

Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从 Apache2.0 协议开源。
官方团队对Logo的解释: 「The logo is a Whale carrying a stack of containers. It is on itsway to deliver those to you」

为什么是"集装箱技术"

定义: Docker是一个开源的应用容器引擎,开发者可以打包他们的应用及依赖到一个可移植的容器中,发布到流行的Linux机器上,也可实现虚拟化

Docker,其实就是可以打包程序和运行环境,把环境和程序一起发布的容器。
其他人到你的程序后可以直接运行,避免出现一次编译到处调试的尴尬局面~
主要为了解决:

”在我机器是正常的 为什么到你的机器就不正常了“ 的问题

3. 容器和虚拟机

Docker与虚拟化

  • 虚拟化技术定义
    Virtual Machine(又名VM) 虚拟化,是指通过虚拟化技术将一台计算机虚拟为多台逻辑计算机。在一台计算机上同时运行多个逻辑计算机,每个逻辑计算机可运行不同的操作系统,并且 应用程序都可以在相互独立的空间内运行而互不影响,从而显著提高计算机的工作效率。
    简单的说,「虚拟化」,顾名思义,就是「虚拟」的,是「假」的,是形而上的,是观念上、逻辑上的划分。

Docker和虚拟机比喻

  • 什么是物理机
    一栋房子
  • 什么是虚拟机
    一个个家
  • 什么是Docker
    一个家里面的一个个卧室

4. Docker概念

Docker技术的三大核心概念,分别是:

  • 镜像(Image)
  • 容器 (Container)
  • 仓库 (Repository)

Docker的两句口号

  • 「Build, Ship and Run (搭建,发送,运行)」
  • 「Build once,Run anywhere (搭建一次,运行到任何地方)」

镜像

我们可以将 Docker 镜像理解为包含应用程序以及其相关依赖的一个基础文件系统(存储着我们的程序和数据文件等等信息,镜像层可以理解为基本的镜像,可以通过组合多个镜像层生成一个新的镜像;也可以将一个镜像可以作为一个镜像层,成为组合别的镜像的一份子),在 Docker 容器启动的过程中,它以只读的方式被用于创建容器的运行环境。

容器

容器和镜像一样,也是若干层的叠加,唯一区别是所有只读层的最上面一层,是一层可读可写层,可以记住这个简单的公式:容器 = 容器镜像 + 可读可写层
前面说镜像的时候我们有提到它是一个静态文件系统,那么既然容器跟它一样,所以,镜像跟容器都是一个静态概念,但是,容器是可以run起来的,当容器run起来时,就会成为一个被称作运行态容器的东西
运行态容器(run container)是由静态容器(可读写的静态文件系统)、一个隔离的进程空间、以及运行于其中的程序进程所组成。我们通常用docker run运行起来的其实就是运行态容器,而使用docker stop停止后的容器,就是静态容器。

Docker改变了什么?

  • 面向产品:产品交付
  • 面向开发:简化环境配置
  • 面向测试:多版本测试
  • 面向运维:环境一致性
  • 面向架构:自动化扩容

5. Docker安装

  • 系统环境
序号 软件 版本
1 CentOS 8
2 Linux内核 3.8之上
  • 关闭防火墙
systemctl stop firewalld.service
  • 关闭selinux
vim /etc/selinux/config
// 修改 SELINUX=disabled
  • 安装依赖包
yum install -y yum-utils device-mapper-persistent-data lvm2
  • 安装aliyun镜像下载
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
  • 安装docker引擎
yum install docker-ce docker-ce-cli containerd.io
// 如果报错,执行下面指令
// rpm -q podman
// dnf remove podman
// yum erase podman(容器管理工具) buildah (容器镜像)
  • 启动docker
systemctl start docker
  • 设置docker自启动
systemctl enable docker
  • 测试docker是否安装成功
docker run hello-world
  • 配置阿里云镜像加速
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
   
"registry-mirrors": ["https://vmdgahdo.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

2、 Docker镜像和容器

帮助命令

// 显示docker的版本信息
docker version
// 显示docker 的系统信息,包括镜像和容器的数量
docker info
// 帮助命令
docker 命令 --help

镜像命令

在 Docker 的术语里,一个只读层被称为镜像,一个镜像是永久不会变的。

  • 查看镜像
docker images
  • 镜像搜索
docker serach
  • 镜像下载
docker pull 镜像名:[tag]
  • 删除镜像
docker rmi 源名字
docker rmi image id

容器命令

当我们有了镜像,才可以创建容器, 下载一个centos镜像来学习

  • 新建容器并启动
docker run [可选参数] image
// # 常用参数
// --name #创建容器名字用来区分容器
// -d #后台交互式运行
// -it #使用交互方式运行, 进入容器查看内容
// -p #指定容器端口号 -p 8080:8080
// -p 主机端口:容器端口
// -P #随机指定端口号
// # 启动容器
  • 列出容器
docker ps // 列出当前运行的容器
  • 退出
// # 如果docker容器在启动的时候没有加 -d 参数
exit // # 会直接停止同期并退出
Ctrt + p + q // # 容器不停止 并退出
  • 删除容器
docker rm 容器id // # 删除指定容器 如果不能删除 强制删除 rm -r
  • 启动与停止容器
docker start 容器id // # 启动容器
docker stop 容器id // # 停止容器
docker rm 容器id // # 删除容器
docker restart 容器id // # 重新启动容器
docker kill 容器id // # 强制性停止当前容器

其他命令

docker run -d 镜像名字
  • 查看日志
docker logs -tf --tail 10 c6
  • 查看容器中的进行信息
docker top 容器id
  • 查看镜像元数据
docker inspect 容器id
  • 进入容器
// 方式一
docker exec -it /bin/bash 容器id // #开启一个新的终端, 常用
// 方法二
docker attach 容器id // # 进入容器正在执行的终端, 不会开启新的进程
  • 从容器拷贝文件到主机上
docker cp 容器id:容器内路径 目录路径

小结

DockerCommandsDiagram

Docker实践

  • Docker安装Nginx
    安装步骤
// 1. 查看nginx镜像
docker search nginx
// 2. 下载nginx镜像
docker pull nginx
// 3. 运行nginx镜像
docker run -d --name mynginx -p 3344:80 nginx

端口绑定:

-p 80:80
  • Docker安装Tomcat
    安装步骤
// 1. 查看tomcat 镜像
docker search tomcat
// 2. 下载tomcat镜像
docker pull tomcat
// 3. 运行tomcat镜像
docker run -it --rm tomcat:9.0
// --rm 测试容器 我们这个容器运行完之后就自动删除

启动tomcat容器

 docker run -d --name mytomcat -p 3355:8080 tomcat:9.0
 docker ps
 docker exec -it 1a /bin/bash
 // 以下命令是在镜像内执行
 # ls
 # cd webapps
 # ls
 # rm -rf webapps
 # mv webapps.dist/ webapps
 # exit
 docker ps -a
 docker restart 1a
  • Docker安装Mysql
    安装步骤
// 1. 查看镜像
docker search mysql:5.7
// 2. 下载镜像
docker pull mysql:5.7
// 3. 启动镜像
docker run --name mysql -d -p 3307:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql:5.7
// -p 我们以后使用3307 端口来访问mysql 为了防止黑客攻击
// -e 配置环境变量
// MYSQL_ROOT_PASSWORD 设置容器内mysql root 密码
  • Docker安装Redis
    安装步骤
// 1. 搜索镜像
docker search redis
// 2. 下载镜像
docker pull redis
// 3. 启动镜像
docker run --name my-redis -d redis

3、 Docker容器数据卷

什么是Docker数据卷

Docker中的数据可以存储在类似于虚拟机磁盘的介质中,在Docker中称为数据卷(Data Volume)

  • 思考
    Docker容器删除后,在容器中产生的数据还在吗?
    Docker容器和外部机器可以直接交换文件吗?
    容器之间能进行数据交互?
  • 数据卷概念
    数据卷是宿主机中的一个目录或文件.
    当容器目录和数据卷目录绑定后,对方修改会立即同步.
    一个数据卷可以同时被多个容器同时挂载.
    一个容器也可以被挂载多个数据卷.
  • 数据卷作用
    容器数据持久化
    外部机器和容器间接通信
    容器之间数据交换

一句话总结: 卷技术就是为了实现数据的持久化和同步操作,容器间也是数据共享。

  • 配置数据卷
docker run ..... -v 宿主机目录(文件):容器内目录(文件)
// 注意事项
// 1. 目录必须是绝对路径
// 2. 如果目录不存在则会自动创建
// 3. 可以挂载多个数据卷

Volume的基本使用

  • 管理卷
docker volume create edc-nginx-vol // 创建一个自定义容器卷
docker volume ls // 查看所有容器卷
docker volume inspect edc-nginx-vol // 查看指定容器卷详情信息
  • 使用指定卷容器

有了自定义容器卷,我们可以创建一个使用这个数据卷的容器,这里我们以nginx为例:

docker run -d -it --name=edc-nginx -p 8800:80 -v edc-nginx-vol:/usr/share/nginx/html nginx

其中,-v代表挂载数据卷,这里使用自定数据卷edc-nginx-vol,并且将数据卷挂载到/usr/share/nginx/html (这个目录是yum安装nginx的默认网页目录)。
如果没有通过-v指定,那么Docker会默认帮我们创建匿名数据卷进行映射和挂载

企业级Mysql实战

  • 实战Mysql数据卷
docker run -d -p 3306:3306 -v /opt/mysql/conf:/etc/mysql/conf.d -v /opt/mysql/data:/var/lib/mysql 
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
嗨!对于Docker零基础入门到精通,我可以给你一些指导。首先,让我们从Docker的基础开始。 1. 安装Docker:首先,你需要在你的机器上安装Docker。你可以去Docker官方网站上下载适合你操作系统的版本,并按照官方文档中的说明进行安装。 2. Docker镜像和容器Docker使用镜像和容器来管理应用程序和服务。镜像是一个只读的模板,它包含了构建应用程序所需的所有文件和配置。容器是基于镜像创建的运行实例,它可以被启动、停止、删除等操作。 3. Dockerfile:Dockerfile是一个包含了一系列命令的文本文件,用于自动化构建Docker镜像。通过编写Dockerfile,你可以定义构建镜像所需的环境、依赖和配置。 4. Docker命令:习一些常用的Docker命令是非常重要的。这些命令可以帮助你管理镜像、容器、网络等。一些常用的命令包括:`docker run`(运行容器),`docker build`(构建镜像),`docker stop`(停止容器)等。你可以通过查阅Docker官方文档来了解更多命令的详细用法。 5. Docker Compose:Docker Compose是一个用于定义和管理多个Docker容器的工具。它使用YAML文件来配置应用程序的服务、网络、卷等。通过使用Docker Compose,你可以轻松地启动、停止和管理多个容器。 6. Docker网络:Docker提供了不同类型的网络,用于连接和通信容器。你可以使用默认的桥接网络,也可以创建自定义网络。此外,Docker还支持外部网络和容器之间的链接。 7. Docker卷:Docker卷是用于持久化数据的机制。通过使用卷,你可以将容器内的数据存储到宿主机上的特定位置,从而实现数据的持久化和共享。 这些是Docker入门的一些基本概念和工具。一旦你熟悉了这些基础知识,你可以进一步Docker的高级特性,如Docker Swarm(用于集群管理)、Docker Registry(用于镜像存储和分发)等。 希望这些信息对你有所帮助!如果你有更具体的问题,我会尽力回答。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

墨竹菊

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值