第11节:Docker基本操做
1、镜像相关命令
- 镜像名称一般分两部分组成:[repository]:[tag]。
- 在没有指定tag时,默认是latest,代表最新版本的镜像。
比如mysql:5.7 mysql指的是repository,5.7是tag。
docker builder构建一个镜像
dicker images 查看本地镜像
docker rmi xxx 删除镜像
docker push 推送镜像到远程仓库
docker pull 拉取镜像
docker save保存镜像为压缩包
docker load 加载压缩包为镜像
2、使用
1、首先去镜像仓库搜索nginx镜像,比如https://registry.hub.docker.com/
可以进去查看我们可以获取的一些信息
2、根据查看到的镜像信息,拉取指定版本,或者最新的
sudo docker pull nginx
3、查看本地镜像
sudo docker images
其他命令:
sudo docker save -o nginx.tar nginx:latest #保存为tar
sudo docker rmi nginx:latest #删除
sudo docker load -i nginx.tar #加载tar为镜像
docker load --help #查看load命令
3、容器命令
3.1、创建运行一个Nginx容器
docker run --name containerName -p 80:80 -d nginx
命令解读:
- docker run :创建并运行一个容器
- –name : 给容器起一个名字
- -p :将宿主机端口与容器端口映射,冒号左侧是宿主机端口,右侧是容器端口
- -d:后台运行容器
- nginx:镜像名称,例如nginx
3.2、查看日志
docker logs -f xxx
查看名字为xxx的容器日志
3.3、进入刚才的容器
docker exec -it mn bash
命令解读:
- docker exec :进入容器内部,执行一个命令
- -it : 给当前进入的容器创建一个标准输入、输出终端,允许我们与容器交互
- mn :要进入的容器的名称
- bash:进入容器后执行的命令,bash是一个linux终端交互命令
exit是退出
3.4、进入nginx html目录
cd /usr/share/nginx/html
修改index.html
sed -i 's#Welcome to nginx#hello#g' index.html
sed -i 's#<head>#<head><meta charset="utf-8">#g' index.html
不推荐在容器中修改文件,很不方便。
3.5、总结
每个命令都可以使用在后面加–help来查看用法。
比如docker ps --help可以知道,docker ps -a 命令可以查看所有的容器,docker ps只能看大运行的容器。
nginx容器启动后,localhost访问成功。
4、容器与数据耦合问题
4.1、存在的问题
4.2、数据卷
数据卷(volume)是一个虚拟目录,指向宿主机文件系统中的某个目录。
我们可以将容器中的文件绑定到数据卷,这样,不同的容器就能共享相同的文件了。
4.3、操做数据卷
docker volume [COMMAND]
#docker volume命令是数据卷操作,根据命令后跟随的command来确定下一步的操作:
create 创建一个volume
inspect 显示一个或多个volume的信息
ls 列出所有的volume
prune 删除未使用的volume
rm 删除一个或多个指定的volume
1、创建数据卷
2、列出所有数据卷
3、显示数据卷信息
Mountpoint:指的是真实的目录
4、删除未使用的数据卷
5、挂载数据卷
我们在创建容器时,可以通过 -v 参数来挂载一个数据卷到某个容器目录
docker run \ #docker run :就是创建并运行容器--name mn \ #--name mn :给容器起个名字叫mn-v html:/root/html \ #-v html:/root/htm :把html数据卷挂载到容器内的/root/html这个目录中-p 8080:80 #-p 8080:80 :把宿主机的8080端口映射到容器内的80端口nginx \ #nginx :镜像名称
我们先把之前创建的容器都删除了,然后创建新的:
可以看到,容器中的文件跑到了真实的目录下:
这样就可以用vi修改了。而且其他容器也能共享这些文件。
6、宿主机目录挂载
6.1、差异
之前是将容器目录挂载到数据卷下,这种方式是交给docker管理,目录比较深。
我们还可以直接挂载到我们指定的目录下。
6.2、操作
目录挂载与数据卷挂载的语法是类似的:
-v [宿主机目录]:[容器内目录]
-v [宿主机文件]:[容器内文件]比如:
docker run --name mn -p 80:80 -v /home/dev/nginx/:/usr/share/nginx/html/ -d nginx
自己测试,这样不会自动创建出文件。
7、自定义镜像
7.1、镜像结构
镜像是分层结构,每一层称为一个Layer
- BaseImage层:包含基本的系统函数库、环境变量、文件系统
- Entrypoint:入口,是镜像中应用启动的命令
- 其它:在BaseImage基础上添加依赖、安装程序、完成整个应用的安装和配置
7.2、什么是Dockerfile
Dockerfile就是一个文本文件,其中包含一个个的指令(Instruction),用指令来说明要执行什么操作来构建镜像。每一个指令都会形成一层Layer。
指令 | 说明 | 示例 |
---|---|---|
FROM | 指定基础镜像 | FROM centos:6 |
ENV | 设置环境变量,可在后面指令使用 | ENV key value |
COPY | 拷贝本地文件到镜像的指定目录 | COPY ./mysql-5.7.rpm /tmp |
RUN | 执行Linux的shell命令,一般是安装过程的命令 | RUN yum install gcc |
EXPOSE | 指定容器运行时监听的端口,是给镜像使用者看的 | EXPOSE 8080 |
ENTRYPOINT | 镜像中应用的启动命令,容器运行时调用 | ENTRYPOINT java -jar xx.jar |
更新详细语法说明,请参考官网文档: https://docs.docker.com/engine/reference/builder
第11节:Docker基本操做相关推荐
- 【重识云原生】第六章容器6.1.8节——Docker核心技术UnionFS
<重识云原生系列>专题索引: 第一章--不谋全局不足以谋一域 第二章计算第1节--计算虚拟化技术总述 第二章计算第2节--主流虚拟化技术之VMare ESXi 第二章计算第3节--主流虚拟 ...
- 《Adobe Acrobat DC经典教程》—第1章1.11节在阅读模式下查看PDF文件
本节书摘来自异步社区<Adobe Acrobat DC经典教程>一书中的第1章1.11节在阅读模式下查看PDF文件,作者[美]Lisa Fridsma(丽莎 弗里斯玛) , Brie Gy ...
- 给新手的 11 个 Docker 免费上手项目
点击上方 好好学java ,选择 星标 公众号 重磅资讯.干货,第一时间送达 今日推荐:腾讯推出高性能 RPC 开发框架 个人原创100W+访问量博客:点击前往,查看更多 作者:老K玩代码 来源:to ...
- 测试需要的的linux命令,(面试必备)软件测试人员必备Linux命令操做(初级基础)...
1 目录与文件操做 1.1 ls(初级) 使用权限:全部人 功能 : 显示指定工做目录下以内容(列出目前工做目录所含之档案及子目录). 参数 : -a 显示全部档案及目录 (ls内定将档案名或目录名称 ...
- python 接口自动化的sql验证_基于Python的接口自动化实战-基础篇之pymysql模块操做数据库...
引言 在进行功能或者接口测试时经常须要经过链接数据库,操做和查看相关的数据表数据,用于构建测试数据.核对功能.验证数据一致性,接口的数据库操做是否正确等.所以,在进行接口自动化测试时,咱们同样绕不开接 ...
- 《Docker进阶与实战》——3.3节Docker image的组织结构
<Docker进阶与实战>--3.3节Docker image的组织结构 华章计算机 2017-05-02 1191浏览量 简介: 本节书摘来自华章社区<Docker进阶与实战> ...
- SAP PS 第11节 收入类项目结果分析及结算
SAP PS 第11节 收入类项目结果分析 1 收入类项目结果分析 1.1 OKG1定义结果分析码 1.2 OKG2定义版本信息,成本控制范围+RA版本 1.2.1 定义结果RA成本要素 1.2.2 ...
- Django的多表查询操做
今日内容概要 1 > 神奇的双下划线查询 1 > 查询年龄大于20的用户 2 > 查询年龄是18.22.25的用户 3 > 查询年龄在18到26之间的用户 4 > 查询姓 ...
- win10找不到oracle11g客户端,win10操做系统下oracle11g客户端/服务端的下载安装配置卸载总结...
注意:如今有两种安装的方式sql 1. oracle11g服务端(64位)+oracle客户端(32位)+plsql(32位)数据库 2. oracle11g服务端(32位)+plsql(32位)wi ...
最新文章
- mysql干货——数据库字符集和校对规则详解
- 报名 | 基于大数据的中国城市技术社会治理探索
- ElementUI中的el-table怎样实现绑定对象数组时每一列不同控件的动态数据绑定
- Discuz! 7.2以下版本及各uc产品api接口Get webshell漏洞
- CTF工具-gdb插件peda,pwndbg安装
- css3弹性盒子、媒体查询、多列布局
- windows bat 设置代理上网脚本bat
- Day38 python基础--并发编程基础-IO模型
- 【飞行器】基于matlab GUI四旋翼飞行器PID控制仿真【含Matlab源码 1279期】
- 校园edu无网络访问解决方案
- 百度文库付费文档完整查看_无需付费直接下载百度文库!
- Wireshark: Getting Started
- Android沉浸式体验适配方案
- python爬取xici的免费代理、并验证(重点、清楚)
- awk 中使用 OFS.
- 如何更换荣耀MagicBook Pro开机启动logo
- 创客匠人用户分组:用户定向运营,不浪费一滴流量
- Android源码编译及替换成自己编译的linux内核
- 桂 林 理 工 大 学实 验 报 告实验四 选择结构程序设计
- 维特比算法C++实现
热门文章
- 最大回撤python_最大回撤,最大回撤恢复时间与最大回撤持续期
- 22考研初试410数一145上岸上海交通大学819经验分享
- 【OpenCV入门教程之十一】 形态学图像处理(二):开运算、闭运算、形态学梯度、顶帽、黑帽合辑
- 基于51单片机的电子钟万年历LCD1602显示
- qt编译出错 /usr/bin/ld 找不到 -lGL cannot find -lGL
- display tearing小结
- 舔一舔 · 肌霸Kafka
- html中qq号码怎么写,qq号码免费申请6位号的方法
- mac 清理 -OmniDiskSweeper
- 【大数据】Hadoop生态系统及其组件