目录
镜像操作
镜像操作命令
案例
练习
容器操作
运行一个Nginx容器
命令解读
拓展
案例
总结
练习 运行redis容器
数据卷(容器数据管理)
数据卷的基本语法
案例
作用:
挂载数据卷
案例
案例 创建并运行Mysql容器,并进行挂载
数据卷挂载和文件目录挂载区别
镜像名称一般分两部分组成:[repository] : [tag]
在没有指定tag时,默认是latest,代表最新版本的镜像
1、首先去镜像仓库搜索nginx镜像,比如DockerHub:
2、根据查看到的镜像名称,拉取自己需要的镜像,通过命令:docker pull nginx,我拿nginx为例
3、通过命令:docker images 查看拉取到的镜像
总结:
docker images
docker rmi
docker pull
docker push
docker save
docker load
熟悉命令及操作流程以及踩坑
去DockerHub查看Nginx容器的运行命令
咱们使用这种,上面的比较复杂。
docker run :创建并运行一个容器
-name:给容器起一个名称
-p:将主机端口和容器端口映射,前面为主机端口
-d:后台运行
nginx:代表你要运行的镜像名称
docker logs:查看容器日志,想要跟踪日志的话,添加 -f 参数
docker ps,查看容器状态
1、进入容器
docker exec -it mn bash
2、修改html文件内容
进入html文件所在目录
cd /usr/share/nginx/html
修改,这里不能使用vi、vim命令了,docker把部分命令阉割了
sed -i 's#Welcome to nginx#白金翰欢迎您#g' index.html sed -i 's#
##g' index.html
docker ps 查看容器状态 ,但是默认只可以看到运行中的,想要查看所有的加上 -a参数。
docker rm 删除容器,但是不能删除运行中的容器,加上 -f 参数就可以强制删除。
exec命令可以进入容器修改文件,但是在容器内修改文件是不推荐的。
1、查看dockerHub中的redis镜像文档的帮助信息
2、执行命令
docker run --name redis -p 6379:6379 -d redis redis-server --appendonly yes
3、进入容器
docker exec -it redis redis-cli
4、下面的添加数据就和以前的一样了
使用set 、get就可以
容器与数据耦合的问题
1、不便于修改
2、数据不可复用
3、升级维护困难
数据卷是一个虚拟目录,指向宿主机文件系统中的某个目录。
docker volume [COMMAND]
create 创建一个colume
inspect 显示一个或多个colume的信息
ls 列出所有的volume
prune 删除未使用的volume
rm 删除一个或多个指定的volume
docker volume create html 创建数据卷
docker volume ls 查看所有数据
docker volume inspect html 查看数据卷详细信息卷
将容器与数据分离,解耦合,方便操作容器内数据,保证数据安全
我们在创建容器时,可以通过 -v 参数来挂载一个数据卷到某个容器目录
docker run \创建并运行容器
--name mn \给容器起个名字
-v html :/root/html 把html数据卷挂载到容器内的/root/html这个目录中
\
-p 8080:80 把宿主机的8080端口映射到容器内的80端口
nginx \镜像名称
创建容器并挂载数据卷到容器内的html目录
docker run --name mn -v htm:/usr/share/nginx/html -p 80:80 -d nginx
如果容器运行时不存在,数据卷会被自动创建出来
目录挂载与数据库挂载的语法是类似的。
-v [宿主机目录]:[容器内目录]
-v [宿主机文件]:[容器内文件]
1、加载mysql镜像。
2、创建数据目录文件 /tmp/mysql/data
3、创建配置文件目录 /tmp/mysql/conf
注意:
挂载/tmp/mysql/data到mysql容器内数据存储目录
挂载/tmp/mysql/conf/hmy.cnf到mysql容器的配置文件
设置MySQL密码
数据卷挂载耦合度低,由docker来管理目录,但是目录较浅,不好找
目录挂载耦合度高,需要我们自己管理目录,不过目录容易管理查看