目录
案例:利用docker save将nginx镜像导出磁盘,然后再通过load加载回来
案例:创建并进入redis容器,并执行redis-cli客户端命令,存入num=888
案例:创建一个nginx容器,修改容器内的html目录内的index.html内容
镜像名称一般分为两部分组成:[repository]:[tag]
在没有指定tag时,默认是latest,代表最新版本的镜像
查看镜像:docker images
格式:docker images [OPTIONS][REPOSITORY[:TAG]]
参数:
-a、--all 显示所有图像(默认情况下隐藏中间图像)
--digedts 显示摘要
-f、 --filter filter 根据提供的条件过滤输出
--format string 使用Go模板精确打印图像
--no-trunc 不截断输出
-q、--quiet 仅显示图像ID
删除镜像:docker rmi
格式:docker rmi [OPTIONS]IMAGE [IMAGE...]
参数:
-f、 --force 强制删除图像
--no-prune不删除未标记的父项
从服务拉取镜像:docker pull
格式:docker pull [OPTIONS]NAME[:TAG|@DIGEST]
参数:
-a、 --all-tags 下载存储库中的所有标记图像
--disable-content-trust 跳过图像验证(默认为true)
--platform string 如果服务器支持多平台,则设置平台
q、 --quit 抑制详细输出
推送镜像到服务:docker push
格式:docker push [OPTIONS]NAME[:TAG]
参数:
-a,--all-tags 推送存储库中所有已标记的图像。
--disable-content-trust 跳过图像签名(默认为True)。
-q,--quiet 禁止详细输出
保存镜像为一个压缩包:docker save
格式:docker save [OPTIONS]IMAGE [IMAGE..]
参数:
-o,--output string 写入文件,而不是STDOUT
加载压缩包为镜像:docker load
格式:docker load [OPTIONS]
参数:
-i、 --input string 读取tar存档文件,而不是STDIN
-q、--quiet抑制负载输出
注意:查询对应命令的详细格式和参数在对应参数后面加上--help即可查询
1、首先去镜像仓库搜索nginx镜像,地址:
Docker Hub Container Image Library | App Containerizationhttps://hub.docker.com/2、根据查看的镜像名称,拉取自己需要的镜像,通过命令:docker pull nginx
3、通过命令:docker images查看拉取到的镜像
1、利用docker save导出镜像到磁盘
docker save -o nginx.tar nginx:latest
1.5、利用docker rmi删除本地的nginx:latest
docker rmi nginx:latest
2、使用docker load加载镜像
docker load -i nginx.tar
去docker hub查看Nginx的容器运行命令
docker run --name containerName -p 80:80 -d nginx
命令解读:
● docker run:创建并运行一个容器
● --name:给容器起一个名字,比如叫containeName
● -p:将宿主机端口与容器端口映射,冒号左侧是宿主机端口,右侧是容器端口
● -d:后台运行容器
● nginx:镜像名称,例如nginx
查看容器日志的命令:docker logs
t添加 -f 参数可以持续查看日志
查看容器状态:docker ps
添加-a参数查看所有状态的容器
删除容器:docker rm
不能删除运行中的容器,除非添加 -f 参数
进入容器:docker exec
命令是docker exec -it [容器名][要执行的命令]
-it:给当前进入容器创建已给标准输入、输出终端,允许我们与容器交互
exec命令可以进入容器修改文件,但是在容器内修改文件不推荐
1、到DockerHub搜索Redis镜像,找到需要的版本,并拉取下来,并利用docker run命令运行Redis容器
docker run --name redis -p 6379:6379 -d redis redis-server --appendonly yes
2、进入redis容器
docker exec -it redis bash
3、执行redis-cli客户端命令
redis-cli
4、设置数据num=888
set num 666
数据卷(volume):是一个虚拟目录,指向宿主机文件系统中的某个目录
数据卷的作用:将容器与数据分离,解耦合,方便操作容器内数据,保证数据安全
数据卷操作的基本语法如下:
docker volume [COMMAND]
docker volume命令是数据卷操作,根据命令后跟随的command来确定下一步的操作:
create 创建一个volume
inspect 显示一个或多个volume的信息
ls 列出所有的volume
prune 删除未使用的volume
rm 删除一个或多个指定的volume
1、创建数据卷
docker volume create html
2、查看所有数据
docker volume ls
3、查看数据卷详细信息卷
docker volume inspect html
创建容器时,可以通过-v 参数来挂载一个数据卷到某个容器目录
docker run \ 创建并运行容器
--name mn \ 给容器起个名字叫mn
-v html:/root/html \ 把html数据卷挂载到容器内的/root/html这个目录中
-p 8080:80 \ 把宿主机的8080端口映射到容器内的80端口
nginx \ 镜像名称
1、创建容器并挂载数据卷到容器内的html目录
docker run --name mn -v html:/usr/share/nginx/html -p 80:80 -d nginx
2、进入html数据卷所在位置,并修改html内容
- # 查看html数据卷的位置
- docker volume inspect html
- # 进入该目录
- cd /var/lib/docker/volumes/html/_data
- # 修改文件
- vi index.html
数据卷挂载方式:
-v volumeName:/targetContainerPath
如果容器运行时volume不存在,会自动被创建出来
docker run的命令可以通过-v参数挂载文件或目录到容器:
1、-v volume名:容器内目录
2、-v 宿主机文件:宿主内文件
3、-v 宿主机目录:容器内目录
数据卷挂载与目录直接挂载
数据卷挂载耦合度低,由docker来管理目录,但是目录较深,不好找
目录挂载耦合度高,需要我们自己管理目录,不过目录容易寻找查看