补充课-docker(两次课)

飞一样的编程
飞一样的编程
擅长邻域:Java,MySQL,Linux,nginx,springboot,mongodb,微信小程序,vue

分类: springboot 专栏: springboot3.0新教材 标签: docker

2024-03-05 17:30:45 629浏览

docker学习

前言:

(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的基本使用

安装并启动

步骤如下:

  1. 检查系统内核版本。确保CentOS 7系统的内核版本高于3.10,可以通过命令`uname -r`查看当前的内核版本。
  2. 使用root权限登录CentOS。确保yum包更新到最新,使用命令
sudo yum update
  1. 卸载旧版本的Docker(如果安装过旧版本的话)。使用命令`sudo yum remove docker docker-common docker-selinux docker-engine`。
  2. 安装必要的软件包。使用命令`sudo yum install -y yum-utils device-mapper-persistent-data lvm2`。
  3. 设置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`。
  4. 查看所有仓库中所有Docker版本,并选择特定版本安装。使用命令`sudo yum list docker-ce --showduplicates | sort -r`。
  5. 安装Docker。使用命令`sudo yum install docker-ce`,如果需要指定版本安装,可以使用命令`sudo yum install docker-ce-18.03.1.ce-1.el7.centos`。
  6. 启动并加入开机启动。使用命令`sudo systemctl start docker`和`sudo systemctl enable docker`。
  7. 验证安装是否成功。使用命令`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开启远程连接

  1. 编辑docker.service文件,添加-H tcp://0.0.0.0:2375参数
vi /usr/lib/systemd/system/docker.service

  1. 重启docker
systemctl daemon-reload
service docker restart
  1. 测试端口连接是否正常
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展开评论

暂无评论,快来写一下吧

展开评论

您可能感兴趣的博客

客服QQ 1913284695