• 【SpringCloud-学习笔记】Docker基本操作


    1. 镜像相关命令

    • 镜像名称一般分两部分组成:[repository]:[tag]。
    • 在没有指定tag时,默认是latest,代表最新版本的镜像
      在这里插入图片描述

    2. 镜像操作命令

    在这里插入图片描述

    3. 案例:从DockerHub中拉取一个nginx镜像并查看

    1. 首先去镜像仓库搜索nginx镜像,比如DockerHub:
      在这里插入图片描述
    2. 根据查看到的镜像名称,拉取自己需要的镜像,通过命令:docker pull nginx
      在这里插入图片描述
    3. 通过命令:docker images 查看拉取到的镜像
      在这里插入图片描述

    4. 案例:利用docker save将nginx镜像导出磁盘,然后再通过load加载回来

    步骤一:利用docker xx --help命令查看docker save和docker load的语法

    步骤二:使用docker save导出镜像到磁盘

    步骤三:使用docker load加载镜像

    5. 总结

    镜像操作有哪些?

    • docker images
    • docker rmi
    • docker pull
    • docker push
    • docker save
    • docker load

    6. 练习:去DockerHub搜索并拉取一个Redis镜像

    1. 去DockerHub搜索Redis镜像
    2. 查看Redis镜像的名称和版本
    3. 利用docker pull命令拉取镜像
    4. 利用docker save命令将 redis:latest打包为一个redis.tar包
    5. 利用docker rmi 删除本地的redis:latest
    6. 利用docker load 重新加载 redis.tar文件

    7. 容器相关命令

    在这里插入图片描述

    8. 案例:创建运行一个Nginx容器

    步骤一:去docker hub查看Nginx的容器运行命令

    docker run --name containerName -p 80:80 -d nginx
    
    • 1

    命令解读:
    docker run :创建并运行一个容器
    –name : 给容器起一个名字,比如叫做mn
    -p :将宿主机端口与容器端口映射,冒号左侧是宿主机端口,右侧是容器端口
    -d:后台运行容器
    nginx:镜像名称,例如nginx
    在这里插入图片描述

    9. 总结

    docker run命令的常见参数有哪些?

    • –name:指定容器名称
    • -p:指定端口映射
    • -d:让容器后台运行
      查看容器日志的命令:
    • docker logs
    • 添加 -f 参数可以持续查看日志
      查看容器状态:
    • docker ps

    10. 案例:进入Nginx容器,修改HTML文件内容,添加“我是超级码里喵”

    步骤一:进入容器。进入我们刚刚创建的nginx容器的命令为:

    docker exec -it mn bash 
    
    • 1

    命令解读:
    docker exec :进入容器内部,执行一个命令
    -it : 给当前进入的容器创建一个标准输入、输出终端,允许我们与容器交互
    mn :要进入的容器的名称
    bash:进入容器后执行的命令,bash是一个linux终端交互命令

    步骤二:进入nginx的HTML所在目录 /usr/share/nginx/html

    cd /usr/share/nginx/html
    
    • 1

    步骤三:修改index.html的内容

    sed -i 's#Welcome to nginx#我是超级码里喵#g' index.html
    sed -i 's#<head>#<head><meta charset="utf-8">#g' index.html
    
    • 1
    • 2

    11. 总结

    查看容器状态:

    • docker ps
    • 添加-a参数查看所有状态的容器
      删除容器:
    • docker rm
    • 不能删除运行中的容器,除非添加 -f 参数
      进入容器:
    • 命令是docker exec -it [容器名] [要执行的命令]
    • exec命令可以进入容器修改文件,但是在容器内修改文件是不推荐的

    12. 练习:创建并运行一个redis容器,并且支持数据持久化

    步骤一:到DockerHub搜索Redis镜像
    步骤二:查看Redis镜像文档中的帮助信息
    步骤三:利用docker run 命令运行一个Redis容器

    docker run --name redis -p 6379:6379 -d redis redis-server --appendonly yes
    
    • 1

    在这里插入图片描述

    13. 练习:进入redis容器,并执行redis-cli客户端命令,存入num=666

    步骤一:进入redis容器

    docker exec -it redis bash
    
    • 1

    在这里插入图片描述
    步骤二:执行redis-cli客户端命令

    redis-cli
    
    • 1

    在这里插入图片描述
    步骤三:设置数据num=666

    set num 666
    
    • 1

    在这里插入图片描述

    14. 数据卷

    容器与数据耦合的问题
    在这里插入图片描述
    数据卷(volume)是一个虚拟目录,指向宿主机文件系统中的某个目录。
    在这里插入图片描述

    15. 操作数据卷

    数据卷操作的基本语法如下:

    docker volume [COMMAND]
    
    • 1

    docker volume命令是数据卷操作,根据命令后跟随的command来确定下一步的操作:

    • create 创建一个volume
    • inspect 显示一个或多个volume的信息
    • ls 列出所有的volume
    • prune 删除未使用的volume
    • rm 删除一个或多个指定的volume

    16. 案例:创建一个数据卷,并查看数据卷在宿主机的目录位置

    1. 创建数据卷
    docker volume create html
    
    • 1
    1. 查看所有数据
    docker volume ls
    
    • 1
    1. 查看数据卷详细信息卷
    docker volume inspect html
    
    • 1

    在这里插入图片描述

    17. 总结

    数据卷的作用:

    • 将容器与数据分离,解耦合,方便操作容器内数据,保证数据安全

    数据卷操作:

    • docker volume create
    • docker volume ls
    • docker volume inspect
    • docker volume rm
    • docker volume prune

    18. 挂载数据卷

    我们在创建容器时,可以通过 -v 参数来挂载一个数据卷到某个容器目录

    举例说明:

    docker run \
      --name mn \
      -v html:/root/html \
      -p 8080:80
      nginx \
    
    • 1
    • 2
    • 3
    • 4
    • 5

    docker run :就是创建并运行容器
    – name mn :给容器起个名字叫mn
    -v html:/root/htm :把html数据卷挂载到容器内的/root/html这个目录中
    -p 8080:80 :把宿主机的8080端口映射到容器内的80端口 nginx :镜像名称

    19. 案例:创建一个nginx容器,修改容器内的html目录内的index.html内容

    需求说明:上个案例中,我们进入nginx容器内部,已经知道nginx的html目录所在位置/usr/share/nginx/html ,我们需要把这个目录挂载到html这个数据卷上,方便操作其中的内容。
    提示:运行容器时使用 -v 参数挂载数据卷
    步骤:

    1. 创建容器并挂载数据卷到容器内的HTML目录
    docker run --name mn -v html:/usr/share/nginx/html -p 80:80 -d nginx
    
    • 1
    1. 进入html数据卷所在位置,并修改HTML内容
    # 查看html数据卷的位置
    docker volume inspect html
    # 进入该目录
    cd /var/lib/docker/volumes/html/_data
    # 修改文件
    vi index.html
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    20. 总结

    数据卷挂载方式:

    • -v volumeName: /targetContainerPath
    • 如果容器运行时volume不存在,会自动被创建出来

    21. 案例:创建并运行一个MySQL容器,将宿主机目录直接挂载到容器

    提示:目录挂载与数据卷挂载的语法是类似的:

    • -v [宿主机目录]:[容器内目录]
    • -v [宿主机文件]:[容器内文件]
      实现思路如下:
    1. 在将课前资料中的mysql.tar文件上传到虚拟机,通过load命令加载为镜像
    2. 创建目录/tmp/mysql/data
    3. 创建目录/tmp/mysql/conf,将课前资料提供的hmy.cnf文件上传到/tmp/mysql/conf
    4. 去DockerHub查阅资料,创建并运行MySQL容器,要求:
      • 挂载/tmp/mysql/data到mysql容器内数据存储目录
      • 挂载/tmp/mysql/conf/hmy.cnf到mysql容器的配置文件
      • 设置MySQL密码

    22. 数据卷挂载的方式对比

    在这里插入图片描述

    23. 总结

    1. docker run的命令中通过 -v 参数挂载文件或目录到容器中:
    • -v volume名称:容器内目录
    • -v 宿主机文件:容器内文件
    • -v 宿主机目录:容器内目录
    1. 数据卷挂载与目录直接挂载的
      • 数据卷挂载耦合度低,由docker来管理目录,但是目录较深,不好找
      • 目录挂载耦合度高,需要我们自己管理目录,不过目录容易寻找查看
  • 相关阅读:
    2023华为杯数学建模D题第三问-碳排放路径优化(能源消费结构调整的多目标优化模型构建详细过程+模型假设(可复制))
    图扑软件智慧云展厅,开启数字化展馆新模式
    Unity脚本API—Transform 变换
    【LeetCode热题100】--153.寻找旋转排序数组中的最小值
    《网络编程》关于 UNIX网络编程 卷1 的 unp.h 和源码编译问题
    掌控习惯-学习总结
    手机备忘录可以设置密码吗 能锁屏加密的备忘录
    web3 React dapp中编写balance组件从redux取出并展示用户资产
    使用赋值方法画图形
    使用Scala和Sttp库编写爬虫程序
  • 原文地址:https://blog.csdn.net/qq_30999361/article/details/126206539