c语言在线编程网站,黑马it培训班出来现状,如何做视频网站不侵权,一页网站Docker的定义
1.什么是Docker
Docker是一个快速交付应用、运行应用的技术#xff1a;
可以将程序及其依赖、运行环境一起打包为一个镜像#xff0c;可以迁移到任意Linux操作系统运行时利用沙箱机制形成隔离容器#xff0c;各个应用互不干扰启动、移除都可以通过一行命令完…Docker的定义
1.什么是Docker
Docker是一个快速交付应用、运行应用的技术
可以将程序及其依赖、运行环境一起打包为一个镜像可以迁移到任意Linux操作系统运行时利用沙箱机制形成隔离容器各个应用互不干扰启动、移除都可以通过一行命令完成方便快捷
2.为什么要用Docker
例如一个项目中部署时需要依赖于node.js、Redis、RabbitMQ、MySQL等这些服务部署时所需要的函数库、依赖项各不相同甚至会有冲突。给部署带来了极大的困难。
而Docker·为了解决依赖的兼容问题的采用了两个手段 将应用的Libs函数库、Deps依赖、配置与应用一起打包 将每个应用放到一个隔离容器去运行避免互相干扰 这样打包好的应用包中既包含应用本身也保护应用所需要的Libs、Deps无需再操作系统上安装这些自然就不存在不同应用之间的兼容问题了。
Docker如何解决开发、测试、生产环境有差异的问题
Docker镜像中包含完整运行环境包括系统函数库仅依赖系统的Linux内核因此可以在任意Linux操作系统上运行
Docker的基本操作
1 Docker命令
常见的镜像操作命令如图
举例 需求从DockerHub中拉取一个nginx镜像并查看
1首先去镜像仓库搜索nginx镜像比如DockerHub: 2根据查看到的镜像名称拉取自己需要的镜像通过命令docker pull nginx 3通过命令docker images 查看拉取到的镜像
保存、导入镜像 命令格式
docker save -o [保存的目标文件名称] [镜像名称]1使用docker save导出镜像到磁盘
运行命令
docker save -o nginx.tar nginx:latest结果如图 2使用docker load加载镜像
先删除本地的nginx镜像
docker rmi nginx:latest然后运行命令加载本地文件
docker load -i nginx.tar结果 2 容器相关命令
容器操作的命令如图 容器保护三个状态
运行进程正常运行暂停进程暂停CPU不再运行并不释放内存停止进程终止回收进程占用的内存、CPU等资源
其中 docker run创建并运行一个容器处于运行状态 docker pause让一个运行的容器暂停 docker unpause让一个容器从暂停状态恢复运行 docker stop停止一个运行的容器 docker start让一个停止的容器再次运行 docker rm删除一个容器
举例 创建并运行nginx容器的命令
docker run --name containerName -p 80:80 -d nginx命令解读
docker run 创建并运行一个容器–name : 给容器起一个名字比如叫做mn-p 将宿主机端口与容器端口映射冒号左侧是宿主机端口右侧是容器端口-d后台运行容器nginx镜像名称例如nginx
这里的-p参数是将容器端口映射到宿主机端口。
默认情况下容器是隔离环境我们直接访问宿主机的80端口肯定访问不到容器中的nginx。
现在将容器的80与宿主机的80关联起来当我们访问宿主机的80端口时就会被映射到容器的80这样就能访问到nginx了
我们可以通过docker logs 容器名字 来查看日志 先利用镜像产生容器然后再对容器进行命令执行模式 exit退出容器 docker stop 容器名称停掉容器名称直接死掉 docker ps默认查看运行中的容器 docker ps -a查看所有容器 docker start 容器名字开始容器停掉的容器再开始 总结 docker exec -it 容器名字 命令是进入容器后修改文件因为容器是隔离性的所以我们不能使用vi命令非常不方便修改而且修改时没有日志记录的
数据卷
出现问题多个容器修改困难 解决方案
我们可以利用数据卷是一个虚拟目录将容器挂载到数据卷上而数据卷映射文件系统
所以我们改动主机的文件系统那么容器就会改变因为容器挂载到了数据卷上-映射在主机文件系统上
主机文件系统位置在创建数据卷的时候就自动设置了数据卷相当于代理帮你自动设置位置实际上跟你你设置的数据卷名字有关
容器挂载数据卷位置通过创建容器的-v参数设置 容器删除数据卷不会被删这样有利于数据的保存与维护直接改变数据卷也就是可以通过主机修改数据——容器升级较为安全
操作数据卷常见命令 作用
将容器与数据分离降低耦合方便操作容器内的数据-通过主机进行操作方便数据维护升级——容器删除数据卷依然在
注意
docker volume prune相当于强制删除卷未使用
docker volume rm xx指定删除
练习数据卷操作 挂载数据卷 如果此时我将数据卷删除的话创建容器直接设置数据卷挂载位置,docker非常智能会自动创建没有的数据卷
练习创建并且运行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 目录挂载与数据卷挂载的区别