补充课-docker(两次课)
分类: springboot 专栏: springboot3.0新教材 标签: docker
2024-03-05 17:30:45 629浏览
前言:
(1)每一款软件产品都是从开发到上线,从操作系统,到运行环境,再到应用配置。很多互联网公司都不得不面对的是开发和运维之间的协作,在各个软件版本的迭代后,不同版本环境的兼容,对于运维人员来说有很大的考验。
(2)环境配置如此麻烦,换一台机器就要重新来一次 ,浪费人力物力。于是很多大牛在思考,能不能从根本上解决问题,软件可以携带环境安装?也就是说,在运维人员安装部署的时候,能不能把原始环境一模一样地复制过来。
logo含义
鲸鱼背上有集装箱
蓝色的大海----宿主机 CentOS或win7
鲸鱼----docker
集装箱----容器实例 from 来自我们的镜像模板
为啥要用docker
减轻运维的工作量,解决“在我的机器上可以正常工作,在你的机器上不能正常工作”的问题。
举例:在使用Docker前相当于搬家,把之前屋子里的所有东西完完全全的搬进一个新的房子,但环境以及发生了改变。在使用Docker后,相当于搬楼,连带房子一起搬走。
https://blog.csdn.net/u011507134/article/details/125562398
docker的三要素:
镜像:Docker 镜像是一个特殊的文件系统,除了提供容器运行时所需的程序、库、资源、配置等文件外,还包含了一些为运行时准备的一些配置参数(如匿名卷、环境变量、用户等)。镜像不包含任何动态数据,其内容在构建之后也不会被改变。
容器:容器的实质是进程,但与直接在宿主执行的进程不同,容器进程运行于属于自己的独立的命名空间容器可以被创建、启动、停止、删除和暂停等等,说到镜像与容器之间的关系,可以类比面向对象程序设计中的类和实例。
仓库:镜像构建完成后,可以很容易的在当前宿主机上运行,但是,如果需要在其它服务器上使用这个镜像,我们就需要一个集中的存储、分发镜像的服务,Docker Registry 就是这样的服务。一个 Docker Registry 中可以包含多个仓库;每个仓库可以包含多个标签;每个标签对应一个镜像,其中标签可以理解为镜像的版本号。
docker的基本使用
安装并启动
步骤如下:
- 检查系统内核版本。确保CentOS 7系统的内核版本高于3.10,可以通过命令`uname -r`查看当前的内核版本。
- 使用root权限登录CentOS。确保yum包更新到最新,使用命令
sudo yum update
- 卸载旧版本的Docker(如果安装过旧版本的话)。使用命令`sudo yum remove docker docker-common docker-selinux docker-engine`。
- 安装必要的软件包。使用命令`sudo yum install -y yum-utils device-mapper-persistent-data lvm2`。
- 设置Docker的yum源。可以使用阿里云的镜像源,使用命令`sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo`或`sudo yum-config-manager --add-repohttp://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo`。
- 查看所有仓库中所有Docker版本,并选择特定版本安装。使用命令`sudo yum list docker-ce --showduplicates | sort -r`。
- 安装Docker。使用命令`sudo yum install docker-ce`,如果需要指定版本安装,可以使用命令`sudo yum install docker-ce-18.03.1.ce-1.el7.centos`。
- 启动并加入开机启动。使用命令`sudo systemctl start docker`和`sudo systemctl enable docker`。
- 验证安装是否成功。使用命令`docker version`,如果显示client和service两部分,表示Docker安装启动都成功了
配置阿里云加速
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://zerfqcke.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
安装镜像
例如:安装rabbitmq
docker pull rabbitmq:3.7.7-management
安装MySQL
docker pull mysql:8.0.11
安装redis
docker pull redis:5.0.9
下载镜像地址:
https://hub.docker.com/ 可能访问不了,需要翻墙
搜索镜像
例如搜:elasticsearch
docker search elasticsearch
查看所有镜像
docker images
删除镜像
docker rmi $(docker images -q)
docker rmi 镜像的名字
创建容器并启动
docker run
举例1:MySQL
docker run -p 3306:3306 --name latest_mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql
举例2:创建并启动redis容器
docker run --name redis -p 6379:6379 -v /mydata/redis/data:/data -v /mydata/redis/conf/redis.conf:/etc/redis/redis.conf -d redis redis-server /etc/redis/redis.conf
举例3:创建并启动rabbitmq
docker run -d -p 15672:15672 -p 5672:5672 --name mq 镜像ID
解释: -d是后台运行的意思 -p是端口映射(前面是宿主机的端口,后面是容器的端口号) --name:容器的名字
查看运行中的容器
docker ps
查看所有容器(含未运行的)
dockers ps -a
启动容器
docker start
关闭容器
docker stop `docker ps -aq --filter name=starapi`
关闭某个容器:
docker stop 容器名字
删除容器
docker rm $(docker ps -a -q)
docker rm 容器名字
进入容器中运行相关软件的指令
由于是docker进行安装,所以找不到执行mysql指令的命令,是放在容器中的。
正确执行命令应该是:
docker exec -it mysql01 /bin/bash #执行docker容器的mysql,这里容器名是mysql01
之后就可以进入MySQL容器,mysql也可以用了
mysql -u root -p #进入容器名为mysql01的mysql
退出:exit
进入redis容器:
docker exec -it b29c902ee63d redis-cli
查看日志
docker logs -f 8a5fca6e67b1
镜像迁移
了解一下
https://blog.csdn.net/u011507134/article/details/125562398
使用docker部署
1.Docker开启远程连接
- 编辑docker.service文件,添加-H tcp://0.0.0.0:2375参数
vi /usr/lib/systemd/system/docker.service
- 重启docker
systemctl daemon-reload
service docker restart
- 测试端口连接是否正常
curl http://localhost:2375/version
2.编写Dockerfile
什么是Dockerfile
Dockerfile可以认为是Docker镜像的描述文件,是由一系列命令和参数构成的脚本。
主要作用是用来构建docker镜像的构建文件。
FROM openjdk:17
EXPOSE 81
VOLUME /tmp
#email.jar这里的名字必须跟你打包生成的名字要一致
ADD target/email.jar /email.jar
ENTRYPOINT ["java", "-jar", "email.jar"]
FROM 命令
基于哪个镜像进行构建新的镜像,在构建时会自动从docker hub拉取base镜像,必须作为Dockerfile的第一个指令出现
VOLUME 命令 [ˈvɒljuːm]
用来定义容器运行时可以挂载到宿主机的目录
ADD 命令
用来从context上下文复制新文件、目录或远程文件url,并将它们添加到位于指定路径的映像文件系统中
ENTRYPOINT命令
用来指定容器启动时执行命令
3.idea配置访问远程docker
4.打jar
5.运行Dockerfile
好博客就要一起分享哦!分享海报
此处可发布评论
评论(0)展开评论
展开评论
您可能感兴趣的博客