目录
Docker命令
基于镜像创建容器,完成容器操作
练习:将镜像保存在一个文件中,然后再重新生成镜像
案例:创建并且运行Nginx容器
我们可以通过docker logs 容器名字 来查看日志
对于容器的命令
总结:
容器命令练习
数据卷
场景
操作数据卷常见命令
练习:创建数据卷,并且查看数据卷在当前宿主机的位置
挂载数据卷
如果此时我将数据卷删除的话,创建容器直接设置数据卷挂载位置,会怎么样?
创建并且运行mysql容器,将宿主机目录挂载到容器(目录挂载)
目录挂载与数据卷挂载的区别
记录一次bug
之前在docker安装完成后 ,docker -v可查看版本,但是systemctl start docker报错,状态也为failed,我们需要将daemon.json文件后缀名改为daemon.conf,然后重启docker即可
Docker命令
Docker就相当于一个岛屿,每次有请求都会它 都会派出一个鲸鱼去承载
docker build:用户主动去构造镜像(相当于集装箱),鲸鱼承载它然后送到岛屿,也就是本地
docker pull:岛屿(本地)从远程(镜像服务器:阿里云...)拉取镜像到本地
docker push:本地将镜像传到镜像服务器上
docker save:本地岛屿将镜像打包保存为一个文件
docker load:将打包的文件加载为镜像送到本地岛屿
练习:
基于镜像创建容器,完成容器操作
容器三种状态:运行、暂停、停止
暂停:容器进程被储存起来,cpu不再调度,内存被保存起来
停止:直接回收,直接kill掉当前进程,当重新生成时(start),是一个全新的进程
命令:
docker exec:进入容器执行命令
docker logs:查看容器运行日志,一些比较细节的地方
docker ps:查看运行的容器状态
docker rm 指定容器:删除容器
练习:将镜像保存在一个文件中,然后再重新生成镜像
1.将镜像保存在一个文件中:docker save -o nginx.tar nginx:latest
2.然后我们将镜像nginx移除:docker rmi nginx:latest
3.我们再通过之前保存的文件重新生成镜像放在本地岛屿中:docker load -i nginx.tar
案例:创建并且运行Nginx容器
使用指南:在DockerHub中可以找到Nginx容器运行命令-docker run --name xxx -p xx:80 -d nginx
注意:
容器是具有隔离性的,不对外开放
解决:
通过端口映射暴露给用户,让用户访问CentOs系统,从而映射到Nginx容器——>映射的端口在左边,右边是容器端口;
命令解读:基于最新版本nginx创建一个容器,名字是xxx,作一个宿主机端口和容器端口的映射,让他能够后台运行
执行run命令,生成容器唯一id
生成容器docker -run命令参数
我们可以通过docker logs 容器名字 来查看日志
我们通过端口映射生成容器之后,我们可以进行访问,访问后通过docker logs查看日志;
里面有个参数-f,加上后会实现持续日志输出
对于容器的命令
1. 先利用镜像产生容器,然后再对容器进行命令执行模式
2.替换容器中静态页面
exit退出容器
docker stop 容器名称:停掉容器名称,直接死掉
docker ps:默认查看运行中的容器
docker ps -a:查看所有容器
docker start 容器名字:开始容器,停掉的容器再开始
docker rm 容器名称:杀死暂停中的容器
docker rm -f 容器名字:强杀容器
总结:
补充:
docker exec -it 容器名字 命令:是进入容器后修改文件,因为容器是隔离性的,所以我们不能使用vi命令,非常不方便修改,而且修改时没有日志记录的;
容器命令练习
持久化启动redis容器
步骤:
数据卷
场景
出现问题:多个容器修改困难
解决:
我们可以利用数据卷(是一个虚拟目录),将容器挂载到数据卷上,而数据卷映射文件系统:
所以我们改动主机的文件系统,那么容器就会改变:因为容器挂载到了数据卷上->映射在主机文件系统上;
主机文件系统位置:在创建数据卷的时候就自动设置了(数据卷相当于代理帮你自动设置位置),实际上跟你你设置的数据卷名字有关;
容器挂载数据卷位置:通过创建容器的-v参数设置
容器删除,数据卷不会被删,这样有利于数据的保存与维护(直接改变数据卷,也就是可以通过主机修改数据——>容器升级),较为安全;
操作数据卷常见命令
作用:
将容器与数据分离,降低耦合,方便操作容器内的数据(->通过主机进行操作),方便数据维护升级——>容器删除,数据卷依然在;
注意:
docker volume prune相当于强制删除卷(未使用)
docker volume rm xx:指定删除
练习:创建数据卷,并且查看数据卷在当前宿主机的位置
挂载数据卷
我们在创建容器时,可以利用-v参数来设置容器的挂载
在宿主机中对容器中的内容进行更改(通过数据卷的映射)
如果此时我将数据卷删除的话,创建容器直接设置数据卷挂载位置,会怎么样?
docker非常智能会自动创建没有的数据卷
先删除数据卷以及容器
然后我们通过docker run启动通过镜像创建容器,并且通过-v参数绑定容器挂载的数据卷,并设置挂载位置:这个位置上的内容usr/share/nginx/html里面的就会通过数据卷映射到宿主机上
我们通过docker volume inspect html:发现宿主机上创建了html数据卷,我们进入挂载点发现里面有容器内容
创建并且运行mysql容器,将宿主机目录挂载到容器(目录挂载)
步骤:
通过mysql镜像启动mysql容器,设置主机挂载目录的位置以及容器挂载的位置(一一对应的感觉,没有代理帮你管理,自己设置两边的位置)
docker run --name mysql -p 3308:3306 -v /tmp/mysql/conf/hmy.cnf:/etc/mysql/conf.d/hmy.cnf -v /tmp/mysql/data:/var/lib/mysql -d mysql:5.7.25
然后可以发现data下多了很多数据
目录挂载与数据卷挂载的区别



