• Docker的基本操作


    三、Docker的基本操作

    先来两张图,可以当做笔记复习用:

    图1、Docker镜像的常用操作指令:
    在这里插入图片描述
    图2、Docker容器的常用操作指令:
    在这里插入图片描述

    了解Docker操作镜像之前,首先普及一下镜像的命名规范:
    镜像名称一般由两部分组成:[repository]:[tag],例如8.0版本的mysql,就是 mysql:8.0,而如果我们没有指定tag的话,那么默认是最新版本

    镜像操作命令:

    命令描述
    docker build根据Dockerfile构建本地镜像
    docker pull从镜像服务器拉取镜像
    docker push将本地镜像推送到镜像服务器
    docker images查看本地镜像
    docker rmi删除镜像
    docker save将本地镜像保存为一个压缩包
    docker load将压缩包加载成一个镜像

    要想详细查看某个命令的用法,可以使用 docker [相应命令] --help 进行查看,例如,我想知道 docker save 的用法,那么我可以使用命令 docker save --help,如下:
    在这里插入图片描述
    文档告诉我们,docker save 后面可以跟options,而该options的可选项就是最下面的 Options,这里只有一个 -o,这个 -o 表示把他写到一个文件来替代输出到控制台。然后后面是镜像文件的名称(记得命名规范:[repository]:[tag])。

    下面,我们就试着跑一下吧。
    首先是,从镜像服务端拉取镜像(点击这里进入DockerHub官网)。我们以Nginx为例:

    在这里插入图片描述
    点击,进入上图中的Docker官方镜像页面,可以看到他告诉我们可以使用指令docker pull nginx直接拉取最新版的Nginx官方镜像文件。
    在这里插入图片描述
    如果要指定某个版本可以往下拉,有一个Supported tags and respective Dockerfile links,里面的版本都是可以指定下载的,这里我们指定一下,下载那个1.22版本。
    在这里插入图片描述
    在Linxu中使用命令docker pull nginx:1.22进行镜像文件的拉取。
    在这里插入图片描述
    然后我们输入docker images查看我们本地的镜像文件。
    在这里插入图片描述
    然后我们再使用命令docker save -o nginx1.22.tar nginx:1.22拷贝我们的nginx1.22镜像文件成一个压缩包。(可以看到,我们打包了一个叫nginx1.22.tar的压缩包)
    在这里插入图片描述
    然后我们先使用命令docker rmi nginx:1.22删除本地的nginx:1.22的镜像文件,然后再用docker images命令查看现在的本地镜像,确保真的有把刚才的nginx:1.22镜像删除干净:
    在这里插入图片描述
    接着,我们使用命令docker load -i nginx1.22.tar解压我们刚才的nginx1.22.tar成镜像。然后使用docker images查看当前的本地镜像如下:
    在这里插入图片描述

    容器操作命令:

    介绍容器的操作命令前,首先我们介绍一个容器的三个状态。

    • 运行:占用CPU资源和内存资源
    • 暂停:暂存到内存,但不再分配CPU资源
    • 停止:杀死进程(不再分配内存和CPU资源)
    命令描述
    docker run创建容器,此时容器处于运行状态
    docker pause暂停容器(运行 -> 暂停)
    docker unpause恢复容器的运行状态(暂停 -> 运行)
    docker stop停止容器(运行 -> 停止)
    docker start再次运行容器(停止 -> 运行)
    docker rm删除容器
    docker ps查看所有运行的容器和容器的状态
    docker logs查看容器的运行日志
    docker exec进入容器执行命令

    案例一、创建并运行Nginx容器
    这里由于启动容器的命令比较长,建议在DockerHub官网查看他是怎么运行容器的。我们要启动Nginx容器,我们就找到Nginx镜像,然后再到它里面,往下拉,找到标题为How to use this image的内容。
    这里以一句比较简单的为例,并解释下其中的参数:

    docker run --name tmp-nginx-container -p 80:80 -d nginx
    
    • 1
    • docker run:表示的是启动容器
    • –name tmp-nginx-container:表示该容器名,我们打算叫他tmp-nginx-container
    • -p 8090:80:表示将宿主机端口与容器端口进行映射,冒号左侧表示宿主机端口号,冒号右侧表示容器端口号,即当用户访问宿主机的8090端口时,就映射到容器的80端口。
    • -d nginx:表示我们以nginx:lastest(默认为:lastest)为镜像

    因此,我们现在如果要启动一个nginx1.22的容器,名称我们就叫myNginx,使用宿主机的8090端口号映射到容器的80端口号,那么命令如下:

    docker run --name myNginx -p 8090:80 -d nginx:1.22
    
    • 1

    在这里插入图片描述
    此时,我们使用命令docker ps可以看到容器成功运行。
    在这里插入图片描述
    然后,我们让防火墙把宿主机的8090端口号开放出来。

    #防火墙开启8090端口号
    firewall-cmd --add-port=8090/tcp --permanent
    #防火墙重新加载配置
    firewall-cmd --reload
    #查看当前防火墙开放的端口号
    firewall-cmd --list-all
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    在这里插入图片描述

    此时,我们就可以使用宿主机的ip地址加8090端口号访问我们的Nginx容器了。

    例如,如果你的宿主机的ip地址是 192.168.10.11,那么你就访问 192.168.10.11:8090,如果看到这个页面,那么就说明访问成功了。
    在这里插入图片描述
    此时,我们还可以使用命令docker logs [容器名]来查看我们容器的日志信息,如果要跟踪日志,那么就使用docker logs -f [容器名]命令。

    针对上面的例子,我们要查看我们的容器的日志就应该使用命令:

    docker logs myNginx
    
    • 1

    在这里插入图片描述
    如果我们要监听/跟踪我们的日志,那么我们就使用命令

    docker logs -f myNginx
    
    • 1

    案例二、进入Nginx容器,修改HTML文件内容,添加“Hello,World!”
    进入容器命令如下:

    docker exec -it myNginx bash
    
    • 1

    命令解读:

    • docker exec :进入容器内部,执行一个命令

    • -it : 给当前进入的容器创建一个标准输入、输出终端,允许我们与容器交互

    • myNginx:要进入的容器的名称

    • bash:进入容器后执行的命令,bash是一个linux终端交互命令

    进入容器后,我们使用命令 ls 可以看到容器内的结构像一个Linux服务器一样,前面解释过Docker会把库还有依赖什么都打包进来,作为一个镜像,所以他其实是由Docker模拟出来的一个独立的Linux文件系统,如下:
    在这里插入图片描述
    我们使用命令cd usr/share/nginx/html/进入Nginx的“欢迎页面” 的目录,并使用命令sed -i -e 's#Welcome to nginx#Hello,World!#g' -e 's###g' index.html修改页面的显示结果。然后用我们服务器的ip地址加端口号再次访问我们的Nginx,结果如下:
    在这里插入图片描述
    然后我们可以使用命令exit;退出我们的容器。

    使用命令docer pause myNginx暂停我们的容器(暂停容器,使用命令docker ps仍然可以看到容器,但是在状态后面会有一个括号将Pause括起来),如果想要启动被暂停的容器,只需要使用命令docker unpause myNginx即可。
    在这里插入图片描述
    如果我们使用docker stop myNginx直接停止我们的容器的话,那么我们用docker ps是看不到此时的容器的,必须得用docker ps -a进行查看才行。被stop的容器要想再次启动,就得使用命令docker start myNginx
    在这里插入图片描述
    在这里插入图片描述
    如果在运行docker start myNginx的时候出现以下报错信息:
    在这里插入图片描述
    那么重启一下我们的docker,命令如下:

    systemctl restart docker
    
    • 1

    然后,再使用命令docker start myNginx 重新启动我们的 myNginx 容器即可。

  • 相关阅读:
    JD商品详情API
    使用 Docker 部署 instantbox 轻量级 Linux 系统
    响应式精美列表商城卡密自动发卡源码
    maven篇6:maven打包
    IDEA如何导入jar包
    电容笔用什么品牌?电容笔10大品牌排行榜
    C++基础语法(类于对象下)
    SpringMvc学习之旅与Thymeleaf的常用用法
    SpringBoot配置文件
    可管理链接仪表板Bender
  • 原文地址:https://blog.csdn.net/weixin_44741023/article/details/126593620