Docker基本操作和相关命令

一、镜像相关命令

  • 镜像名称一般分两部分组成:[repository]:[tag]
  • 在没有指定tag时,默认是latest,代表最新版本的镜像
    镜像操作有哪些?
  • docker images 查看镜像
  • docker rmi 删除镜像
  • docker pull 拉取镜像
  • docker push 推送镜像
  • docker save 保存镜像
  • docker load 加载镜像
  • docker xx --help 查看命令如何使用
    Docker基本操作和相关命令_第1张图片

二、容器相关命令

  • docker run + 镜像名称 运行容器
  • docker pause 暂停
  • docker unpause 恢复运行
  • docker stop 停止运行
  • docker start 重新开始运行
  • docker exec 进入容器执行命令,命令是docker exec -it [容器名] [要执行的命令],exec命令可以进入容器修改文件,但是在容器内修改文件是不推荐的,一是不方便,二在容器中的修改没有记录。
  • docker logs 查看容器运行日志,添加 -f 参数可以持续查看日志
  • docker ps 查看所有运行的容器及状态,添加-a参数查看所有状态的容器
  • docker rm 删除容器,不能删除运行中的容器,除非添加 -f 参数
    Docker基本操作和相关命令_第2张图片
    案例1:创建运行一个Nginx容器
    步骤一:去docker hub查看Nginx的容器运行命令
docker run --name containerName -p 80:80 -d nginx

命令解读:

  • docker run :创建并运行一个容器
  • –name : 给容器起一个名字,比如叫做mn
  • -p :将宿主机端口与容器端口映射,冒号左侧是宿主机端口,右侧是容器端口
  • -d:后台运行容器
  • nginx:镜像名称,例如nginx
    在这里通过宿主机的ip + 80端口 就可以访问容器的80端口,访问到nginx。

案例2:进入Nginx容器,修改HTML文件内容,添加“传智教育欢迎您”
步骤一:进入容器。进入我们刚刚创建的nginx容器的命令为:

docker exec -it mn bash

命令解读:

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

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

cd /usr/share/nginx/html

步骤三:修改index.html的内容,这里用不了vi命令,容器中没有。

sed -i 's#Welcome to nginx#传智教育欢迎您#g' index.html
sed -i 's###g' index.html

案例三:创建并运行一个redis容器,并且支持数据持久化
步骤一:到DockerHub搜索Redis镜像
步骤二:查看Redis镜像文档中的帮助信息
步骤三:利用docker run 命令运行一个Redis容器

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

在这里插入图片描述
案例四:进入redis容器,并执行redis-cli客户端命令,存入num=666

步骤一:进入redis容器

docker exec -it redis bash

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

redis-cli

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

set num 666

在这里插入图片描述

三、数据卷相关命令

1. 容器与数据耦合的问题:
Docker基本操作和相关命令_第3张图片
所以必须想办法解决容器与数据耦合的问题,所以就需要学习数据卷。
数据卷(volume)是一个虚拟目录,指向宿主机文件系统中的某个目录。
Docker基本操作和相关命令_第4张图片
2. 数据卷的作用:
将容器与数据分离,解耦合,方便操作容器内数据,保证数据安全。
3. 数据卷操作:

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

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

docker volume create html

步骤二:查看所有数据

docker volume ls

在这里插入图片描述

步骤三:查看数据卷详细信息卷

docker volume inspect html

Docker基本操作和相关命令_第5张图片
4. 挂载数据卷:
我们在创建容器时,可以通过 -v 参数来挂载一个数据卷到某个容器目录。
例如:docker run --name mn -v html:/root/html -p 8080:80 nginx

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

案例1:创建一个nginx容器,修改容器内的html目录内的index.html内容
需求说明:上个案例中,我们进入nginx容器内部,已经知道nginx的html目录所在位置/usr/share/nginx/html ,我们需要把这个目录挂载到html这个数据卷上,方便操作其中的内容。
步骤:

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

ps: 如果容器运行时数据卷volume不存在,docker会帮我们自动创建出来。

5. docker run 挂载宿主机文件或目录到容器中:

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

  • -v volume名称:容器内目录
  • -v 宿主机文件:容器内文件
  • -v 宿主机目录:容器内目录
    数据卷挂载与目录直接挂载的比较:
  • 数据卷挂载耦合度低,由docker来管理目录,但是目录较深,不好找。
  • 目录挂载耦合度高,需要我们自己管理目录,不过目录容易寻找查看。

你可能感兴趣的:(微服务,docker,java,spring,boot,spring,cloud)