栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

Docker基本操作

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Docker基本操作

目录

 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下多了很多数据


目录挂载与数据卷挂载的区别 

 

 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/881970.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号