三Docker实用篇_镜像操作&容器操作

Posted 上善若水

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了三Docker实用篇_镜像操作&容器操作相关的知识,希望对你有一定的参考价值。

一、镜像操作

1.1、镜像名称

首先来看下镜像的名称组成:

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

    这里的mysql就是repository,5.7就是tag,合一起就是镜像名称,代表5.7版本的MySQL镜像。

1.2、镜像命令

常见的镜像操作命令如图:

可以通过docker --help命令查看,docker相关命令的使用方法。

比如查看镜像docker images命令的使用方法

1.3、案例1—拉取、查看镜像

需求:从DockerHub中拉取一个nginx镜像并查看

  1. 首先去镜像仓库搜索nginx镜像,比如:https://registry.hub.docker.com/
  2. 根据查看到的镜像名称,拉取自己需要的镜像,通过命令:docker pull nginx
  3. 通过命令:docker images查看拉取到的镜像

1.4、案例2—保存、导入镜像

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

  1. 利用docker xx --help命令查看docker savedocker load的语法
    例如:查看save命令用法,可以输入命令:docker save --help

    命令格式:docker save -o [保存的目标文件名称] [镜像名称]
  2. 使用docker save导出镜像到磁盘
    运行命令:
    docker save -o nginx.tar nginx:latest
  3. 使用docker load加载镜像
    先删除本地的nginx镜像:
    docker rmi nginx:latest
    然后运行命令,加载本地文件:
    docker load -i nginx.tar

1.5、练习

需求:去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文件

二、容器操作

2.1、容器相关命令

容器操作的命令如图:

容器保护三个状态:

  • 运行:进程正常运行
  • 暂停:进程暂停,CPU不再运行,并不释放内存
  • 停止:进程终止,回收进程占用的内存、CPU等资源

其中:

  • docker run:创建并运行一个容器,处于运行状态
  • docker pause:让一个运行的容器暂停
  • docker unpause:让一个容器从暂停状态恢复运行
  • docker stop:停止一个运行的容器
  • docker start:让一个停止的容器再次运行
  • docker rm:删除一个容器

2.2、案例—创建并运行一个容器

创建并运行nginx容器的命令:
docker run --name containerName -p 80:80 -d nginx

命令解读:

  • docker run:创建并运行一个容器
  • --name:给容器起一个名字,比如叫做:mynginx
  • -p:将宿主机端口与容器端口映射,冒号左侧是宿主机端口,右侧是容器端口
  • -d:后台运行容器
  • nginx:镜像名称,例如:nginx

这里的-p参数,是将容器端口映射到宿主机端口。
默认情况下,容器时隔离环境,我们直接访问宿主机的80端口,肯定访问不到容器中的nginx。
现在,将容器的80与宿主机的80关联起来,当我们访问宿主机的80端口时,就会被映射到容器的80,这样就能访问到nginx了:

参考文档:

  1. 通过nginx镜像,创建nginx容器
    docker run --name mynginx -p 80:80 -d nginx
  2. 查看运行的容器
  3. 测试,访问nignx
  4. 查看日志

2.3、案例—进入容器,修改文件

需求:进入nginx容器,修改html文件内容,添加"北京,欢迎您!"

  1. 进入容器。进入我们刚刚创建的nginx容器的命令为:
    docker exec -it mynginx bash

命令:

  • docker exec:进入容器内部,执行要给命令
  • -it
  • mynginx:要进入的容器的名称
  • bash:进入容器后执行的命令,bash是一个Linux终端交互命令
  1. 进入nginx的HTML所在目录 /usr/share/nginx/html
    参考官方文档:

    容器内部会模拟一个独立的Linux文件系统,看起来如同一个Linux服务器一样:
    nginx的环境、配置、运行文件全部都在这个文件系统中,包括我们要修改的html文件。
    查看DockerHub网站中的nginx页面,可以知道nginx的html目录位置在/usr/share/nginx/html
    我们执行命令,进入该目录:
  2. 修改index.html的内容
    容器内没有vi命令,无法直接修改,我们用下面的命令来修改:
    sed -i -e 's#Welcome to nginx#北京,欢迎您!#g' -e 's#<head>#<head><meta charset="utf-8">#g' index.html

    再次通过浏览器访问自己的虚拟机地址,例如我的是:http://192.168.184.110/,即可看到结果
  3. 其它命令演示

2.5、小结

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

  • --name:指定容器名称
  • -p:指定端口映射
  • -d:让容器后台运行

查看容器日志的命令:

  • docker logs
  • 添加 -f 参数可以持续查看日志

查看容器状态:

  • docker ps
  • docker ps -a 查看所有容器,包括已经停止的

三、练习

需求:创建并运行一个redis容器,并且支持数据持久化

  1. 到DockerHub搜索redis镜像
  2. 查看redis镜像文档中的帮助信息
  3. 利用docker run命令运行一个redis容器
  4. 进入redis容器
  5. 执行redis-cli客户端命令
  6. 设置数据 num = 666

以上是关于三Docker实用篇_镜像操作&容器操作的主要内容,如果未能解决你的问题,请参考以下文章

docker 实践三:操作容器

Docker篇之一Docker镜像及容器

虚拟化技术—docker容器—安装篇

docker--镜像操作

Linux运维容器篇 docker基础操作和网络模型

Linux运维容器篇 docker基础操作和网络模型