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
  • 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

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

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

在这里插入图片描述

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

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

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

docker logs myNginx

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

docker logs -f myNginx

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

docker exec -it myNginx bash

命令解读:

  • 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#<head>#<head><meta charset="utf-8">#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

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值