docker

什么是docker?

docker是一款容器引擎,可以一键安装软件和环境配置

docker的优势

1.可移植性:docker容器在任何支持docker的环境中运行
2.可伸缩性:docker可以根据负载的变化进行快速扩展和收缩
3.隔离性:docker容器提供了隔离的运行环境,不同容器中运行的应用程序互相隔离,避免了容器之间的干扰。

docker和虚拟机的区别

image

docker的架构

image

docker的安装和卸载

  • 检查系统版本,确定是CentOS7.x及其以上版本,老版本Docker很多补丁不支持更新
    cat /etc/redhat-release
  • 检查环境,安装gcc和g++
	yum -y install gcc
	yum -y install gcc-c++
  • 安装一些必要的系统工具
    yum install -y yum-utils device-mapper-persistent-data lvm2
  • 添加软件源信息(设置镜像地址)
    yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
  • 更新yum软件包索引并安装Docker-CE
    yum makecache fast
    yum install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

docker服务相关的命令

点击查看代码
# 查看docker服务的运行状态
systemctl status docker

# 启动docker服务
systemctl start docker

# 关闭docker服务
systemctl stop docker

# 重启docker服务
systemctl restart docker

配置镜像加速器

  • 创建文件daemon.json
    vim /etc/docker/daemon.json
  • 文件中添加如下内容
{ 
  "registry-mirrors":["https://registry.dockermirror.com"] 
}
  • 更多的国内镜像网站
点击查看代码
0.优先选用★
https://registry.dockermirror.com

1.Docker中国区官方镜像
https://registry.docker-cn.com

2.网易
http://hub-mirror.c.163.com
 
3.中国科技大学
https://docker.mirrors.ustc.edu.cn

docker镜像操作

# 命令: 
docker pull

# 格式: tag表示的镜像的标签,也可以理解为就是镜像的版本
docker pull 镜像名称[:tag]		

# 示例1: 默认拉取的是最新的redis镜像
docker pull redis		

# 示例2: 拉取redis7.0.10镜像,一个镜像到底存在哪些标签,需要上docker hub中进行查看
docker pull redis:7.0.10	  

查看本地的镜像

docker images

单词的意思

1、repository: 镜像来源仓库名称
2、tag:        镜像标签
3、image id:   镜像id
4、created:    创建时间
5、size:       镜像的大小

删除本地的镜像(-f强制删除)

docker rmi -f 镜像名:版本号/镜像ID

docker容器的操作

查询容器

docker ps  (-a)    # ps表示查询正在运行的容器,加上-a表示显示所有的容器
docker ps  -q      # 表示查询容器的id

创建容器

两种创建的方法一种是交互性容器(创建的时候展示命令窗口),一种叫守护型容器(创建的时候基于后台运行)

#交互性容器
docker run -it  --name=容器的名字 镜像的名字:版本号 /bin/bash
#守护型容器
docker run -di  --name=容器的名字 镜像的名字:版本号  (守护型不需要/bin/bash)
-i: 表示运行容器
-d:创建容器后不会自动登录容器
-t: 表示容器运行后会进入命令行
--name :为创建的容器命名
-v:表示目录映射关系(前者是宿主机目录,后者是映射到宿主机上的目录)最好做目录映射,在宿主机上做修改,然后共享到容器上。
-p:表示端口映射,前者是宿主机端口,后者是容器内的映射端口

交互性容器第一次退出,会完全退出,不会在后台运行,进入交互性容器后exit退出(没有容器会拉去容器)
但要是有这个容器,再次使用start命令进入容器,用exit退出后,交互性容器会在后台运行

容器服务管理

docker stop 容器名称/容器id      # 关闭容器
docker start  容器名称/容器id    # 启动容器
docker restart 容器名称/容器id   # 重启容器

删除容器

命令: docker rm
格式:docker rm 容器名称/容器的id							#  删除容器
示例:docker rm mycentos10							 #  删除mycentos10容器
#注意:上述的命令只能删除已经关闭的容器,如果想删除正在运行的容器,可以通过添加 **-f 参数**进行实现。

删除所有容器

docker rm $(docker ps -aq)

进入容器

命令:docker exec
格式:docker exec [OPTIONS] CONTAINER COMMAND [ARG...]
常见的参数选项:												  
-t, --tty														# 分配一个虚拟终端,通常和-i参数一起使用
-i,--interactive												# 把交互界面一直保留,通常和-t参数一起使用

示例1:docker exec -it mycentos10 /bin/bash				# 进入到容器中同时打开一个shell窗口

其他命令

docker logs -f 容器名称/容器的id						# 查询容器内进程日志,-f参数表示实时监控日志信息
docker inspect 容器名称/容器的id						# 查看容器的详情信息
docker cp 											 # 完成容器和宿主机之间的文件copy

示例1: docker logs -f redis01				   # 实时查看redis01这个容器中的日志信息
示例2: docker inspect redis01				   # 查看容器的详情信息,主要就是:目录映射情况、端口映射情况、ip地址
示例3: docker cp a.txt redis01:/root		   # 把宿主机中a.txt文件拷贝到redis01的root目录中
示例4: docker cp redis01:/root/a.txt .       # 把容器中的root目录下的a.txt文件拷贝到宿主机中当前目录中

备份迁移

对某一个容器修改完毕以后,我们可以把最新的容器部署到其他的环境中。

docker commit 容器名称/容器的id 镜像名称			  # 把docker容器保存成一个镜像
docker save -o 镜像tar文件名称 镜像名称/镜像id		 # 把镜像保存为tar文件
docker load -i 镜像名称							  # 把tar文件恢复成为一个镜像

docker数据卷操作

数据卷是什么?

是docker提供的一个虚拟目录,这个虚拟目录会对应宿主机上的一个真实目录,在创建容器的时候可以将这个数据卷挂载(绑定)到容器中的某一个目录下,那么此时在该目录下所产生的数据就会存储到宿主机的目录下,实现了容器和宿主机之间的文件共享

数据卷常见的命令

1.查看数据卷

docker volume ls

2.创建数据卷

docker volume create 数据卷名称

3.查询数据卷详情

docker volume inspect 数据卷名称

4.删除数据卷

docker volume rm 数据卷名称  # 删除指定的数据卷

5.数据卷的挂载

格式: -v 数据卷名称:容器目录
示例:docker run -d --name=redis02 -p 6380:6379 -v redis-data:/data redis:7.0.10

注意事项:

  • 如果数据卷没有提前创建好,那么在创建容器的时候会自动创建对应的数据卷

  • 数据卷挂载的时候数据卷名称前面没有/

  • 容器目录不存在会自动创建

  • 数据卷目录如果不为空,此时会使用数据卷目录内容覆盖容器目录内容

  • 数据卷目录如果为空,容器目录不为空,此时就会使用容器目录内容覆盖数据卷目录

6.目录挂载

格式: -v 宿主机目录:容器目录
示例:docker run -d --name redis03 -p 6381:6379 -v /redis-data:/data redis:7.0.10

注意事项:

  • 如果宿主机目录没有提前创建好,那么在创建容器的时候会自动创建对应的宿主机目录

  • 宿主机目录挂载的时候宿主机目录名称前面有/

  • 容器目录不存在会自动创建

  • 宿主机目录如果不为空,此时会使用宿主机目录内容覆盖容器目录内容

  • 宿主机目录如果为空,容器目录不为空,此时就会使用容器目录内容清空掉

SpringBoot项目部署

把一个Spring Boot项目使用docker进行部署,以减少整个项目的维护成本

dockerfile

dockerfile就是一个文本文件,在这个文本文件中可以使用docker所提供的一些指令来指定我们构建镜像的细节,后期就可以使用这个dockerfile文件来构建自己的镜像。

dockerfile文件内容一般分为4部分:

1、基础镜像信息(必选)

2、维护者信息(可选)

3、镜像操作指令(可选)

4、容器启动时执行的指令(可选)

常用命令

指令 用法 作用
FROM FROM image_name:tag 指定一个构建镜像的基础源镜像,如果本地没有就会从公共库中拉取,没有指定镜像的标签会使用默认的latest标签,可以出现多次,如果需要在一个dockerfile中构建多个镜像。
MAINTAINER MAINTAINER user_name 描述镜像的创建者,名称和邮箱
RUN RUN "command" "param1" "param2" 用来执行一些命令,可以写多条
ENV ENV key value 设置容器的环境变量,可以写多条。
ADD ADD source_dir/file 将宿主机的文件复制到容器内,如果是压缩文件,则复制后自动解压
ENTRYPOINT ENTRYPOINT "command" "param1" "param2" 用来指定容器启动时所执行的命令
posted @ 2024-10-25 21:41  xxxLin  阅读(19)  评论(0编辑  收藏  举报