Docker学习笔记

学习网站:https://www.bilibili.com/video/BV1og4y1q7M4/?spm_id_from=333.337.search-card.all.click&vd_source=a2fb572e74dbef472b2142c24f8ad295

官网地址:https://www.docker.com/

docker安装帮助文档地址:https://docs.docker.com/engine/install/centos/

仓库地址:https/hub.docker.com/

告诉自己:高级开发重金难求,低级开发满大街都是。

一、基础

1.Docker概述(2023.04.17)

传统部署:程序员开发项目-》打包成jar包-》给运维人员部署-》线上环境依赖需要一个个部署。
在容器技术未出来之前,我们都是使用虚拟机技术(在Windows系统中安装一个Vmware,通过这个软件可以虚拟出来一台或多台电脑,好处是虚拟出来的电脑跟真实电脑差不多,但是它相当占用内存资源)

模拟电脑虚拟机技术核心区块划分示例图:
在这里插入图片描述
虚拟机技术缺点:

  1. 资源占用率十分高
  2. 冗余步骤多
  3. 启动很慢

docker部署:程序员开发项目-》打包成jar包(携带docker环境部署镜像信息)-》运维直接根据携带的docker镜像信息直接部署启动项目。

便捷之处:

  • 镜像就包含所有环境依赖内容,十分轻巧,可直接启动,省时省力.(原因:使用容器化技术)

容器化技术:容器化技术不是模拟一个完整的操作系统。

在这里插入图片描述
比较docker和虚拟机技术的不同:

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

使用容器化技术有什么优点:

  • 应用更快的交付与部署
  • 更便捷的升级和扩缩容
  • 更简单的运维系统
  • 更高效的计算资源利用

2.Docker安装

2.1.docker架构图

在这里插入图片描述

2.2.docker核心名词了解

镜像(image)
docker镜像好比一个模板,可以通过这个模板来创建容器服务(Tomcat镜像-》run-》Tomcat01容器),通过这个镜像可以创建多个容器,最终服务运行或项目运行都是在容器中。

容器(container)
Docker利用容器技术,独立运行一个或者一个组应用。包含启动、停止、删除等基本命令。(可以把容器理解为一个简易的Linux系统)

仓库(repository)
仓库是存放镜像的地方。分为公有仓库和私有仓库。

2.3.环境准备
  1. 需要有购买的云服务器一台
  2. 使用类似XShell连接云服务器操作
2.4.版本查看

系统内核是3.10以上

// 输入指令:uname -r
4.18.0-348.7.1.el8_5.x86_64

系统版本

// 输入指令:cat /etc/os-release
NAME=“CentOS Linux”
VERSION=“8 (Core)”
ID=“centos”
ID_LIKE=“rhel fedora”
VERSION_ID=“8”
PLATFORM_ID=“platform:el8”
PRETTY_NAME=“CentOS Linux 8 (Core)”
ANSI_COLOR=“0;31”
CPE_NAME=“cpe:/o:centos:centos:8”
HOME_URL=“https://www.centos.org/”
BUG_REPORT_URL=“https://bugs.centos.org/”
CENTOS_MANTISBT_PROJECT=“CentOS-8”
CENTOS_MANTISBT_PROJECT_VERSION=“8”
REDHAT_SUPPORT_PRODUCT=“centos”
REDHAT_SUPPORT_PRODUCT_VERSION=“8”

2.5.安装

docker安装帮助文档地址:https://docs.docker.com/engine/install/centos/

2.5.1.卸载旧的版本
yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-engine

在这里插入图片描述

2.5.2.下载安装包
yum install -y yum-utils

在这里插入图片描述

2.5.3.设置镜像地址

推荐使用阿里云镜像配置:

yum-config-manager \
    --add-repo \
    http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

在这里插入图片描述

默认是从国外的,下载速度会非常慢(不建议使用这种方式):

yum-config-manager \
    --add-repo \
    https://download.docker.com/linux/centos/docker-ce.repo

在这里插入图片描述

2.5.4.更新yum软件包索引
yum makecache fast

在这里插入图片描述

2.5.5.安装dokcer(docker-ce社区版-免费,ee企业版)
yum install docker-ce docker-ce-cli containerd.io

在这里插入图片描述

2.5.6.启动docker
systemctl start docker

在这里插入图片描述

2.5.7.判断是否安装启动成功
docker version

在这里插入图片描述

2.5.8.下载镜像hello-world案例
docker run hello-world

在这里插入图片描述

docker run hello-world命令运行流程图:
在这里插入图片描述
docker是怎么工作的?(底层原理)
在这里插入图片描述

2.5.9.查看当前服务器镜像
docker images

在这里插入图片描述

2.6.删除docker
2.6.1.删除依赖
yum remove docker-ce docker-ce-cli containerd.io
2.6.2.删除资源
rm -rf /var/lib/docker

3.Docker命令

帮助文档地址:https://docs.docker.com/engine/reference/commandline/

3.1.帮助命令
docker version	#显示docker的版本信息
docker info		#显示docker的系统信息,包括镜像和容器的数量
docker 命令	--help	#帮助命令
3.2.镜像命令
docker images		#查看所有本机上的镜像

在这里插入图片描述

docker images -a		#列出所有镜像
docker images -aq		#列出所有镜像id
docker search mysql		#搜索镜像(mysql)
docker pull mysql		#下载镜像(mysql,默认下载最新版本)
docker pull mysql:5.7	#下载镜像(mysql,指定版本下载)
docker rmi -f 镜像id	#删除指定的镜像
docker rmi -f 镜像id 镜像id 镜像id 镜像id		#删除多个镜像
docker rmi -f $(docker images -aq)			#删除全部镜像
systemctl restart docker	#重启docker镜像

a ==> all(所有-镜像)
q ==> query id(查询id)
rmi ==> remove image(删除镜像)
f ==> file(文件)

3.3.容器命令

说明:我们有了镜像才可以创建容器,Linux环境下下载一个centos镜像来测试学习

docker pull centos	#下载centos镜像
docker run -it centos /bin/bash	#测试,启动并进入容器
exit	#从容器中退回主机(停止容器)
Ctrl + P + Q	#退出容器不停止
docker ps	#查看运行中的容器
docker rm 容器id	#删除指定容器id,不能删除正在运行的容器,如果要强制删除,使用docker rm -f $(docker ps -aq)
docker rm -f $(docker ps -aq)	#删除所有容器
docker ps -a -q|xargs docker rm	#删除所有容器
docker start 容器id		#启动容器
docker restart 容器id	#重启容器
docker stop 容器id		#停止当前正在运行的容器
docker kill 容器id		#强制停止当前正在运行的容器
docker logs -tf --tail 10 容器id	#显示某个容器的最近10条日志
docker logs -tf --tail 10 容器id	#显示某个容器的最近10条日志
docker top 容器id	#查看容器中的进程信息
docker inspact 容器id	#查看容器的元数据信息(所有容器相关数据)
docker exec -it 容器id /bin/bash	#进入容器后开启一个新的终端,可以在里面操作(常用)
docker attach 容器id	#进入容器正在执行的终端,不会启动新的进程,无法在里面操作(少用)
touch test.java		#在容器中新建文件
docker cp 容器id:/文件路径/文件名.后缀 /主机文件路径/文件名.后缀	#文件从容器中拷贝到主机中
docker cp /主机文件路径/文件名.后缀 容器id:/文件路径/文件名.后缀	#文件从主机中拷贝到容器中
cd mnt	#进入jar服务所在父文件目录
java -jar jar包名.jar  &	#在容器中启动jar服务(服务后台运行)
ps -aux|grep java	#查询当前容器中运行的进程信息
kill -9 进程id	#终止某个进程
tail -f nohup.out	#实时查看控制台日志信息
tail -n 500 nohup.out	#查看最新控制台500行日志信息

it ==> 使用交互方式运行(即,可输入指令、会自动执行输入指令功能)
d ==> 后台方式运行
p ==> 主机端口和容器内的端口映射(例如:-p 8084:8080 => 8084为外网可访问端口,8080项目启动实际运行端口。这样处理的好处是,当你容器内的端口被其他服务使用了,可以映射一个未被使用的端口号)
tf ==> time-fomat,加上这个,日志显示就会加上时间戳(如:2023-04-23T13:23:05.961372171Z)
--tail number ==> 要显示的日志条数
& ==> 服务后台运行,不会因为当前控制台退出而结束

创建复杂的镜像:

docker run -itd
–privileged
-p 8086:8080
-p 33081:3306
–name test2

在这里插入图片描述
在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值