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基本操做相关推荐

  1. 【重识云原生】第六章容器6.1.8节——Docker核心技术UnionFS

    <重识云原生系列>专题索引: 第一章--不谋全局不足以谋一域 第二章计算第1节--计算虚拟化技术总述 第二章计算第2节--主流虚拟化技术之VMare ESXi 第二章计算第3节--主流虚拟 ...

  2. 《Adobe Acrobat DC经典教程》—第1章1.11节在阅读模式下查看PDF文件

    本节书摘来自异步社区<Adobe Acrobat DC经典教程>一书中的第1章1.11节在阅读模式下查看PDF文件,作者[美]Lisa Fridsma(丽莎 弗里斯玛) , Brie Gy ...

  3. 给新手的 11 个 Docker 免费上手项目

    点击上方 好好学java ,选择 星标 公众号 重磅资讯.干货,第一时间送达 今日推荐:腾讯推出高性能 RPC 开发框架 个人原创100W+访问量博客:点击前往,查看更多 作者:老K玩代码 来源:to ...

  4. 测试需要的的linux命令,(面试必备)软件测试人员必备Linux命令操做(初级基础)...

    1 目录与文件操做 1.1 ls(初级) 使用权限:全部人 功能 : 显示指定工做目录下以内容(列出目前工做目录所含之档案及子目录). 参数 : -a 显示全部档案及目录 (ls内定将档案名或目录名称 ...

  5. python 接口自动化的sql验证_基于Python的接口自动化实战-基础篇之pymysql模块操做数据库...

    引言 在进行功能或者接口测试时经常须要经过链接数据库,操做和查看相关的数据表数据,用于构建测试数据.核对功能.验证数据一致性,接口的数据库操做是否正确等.所以,在进行接口自动化测试时,咱们同样绕不开接 ...

  6. 《Docker进阶与实战》——3.3节Docker image的组织结构

    <Docker进阶与实战>--3.3节Docker image的组织结构 华章计算机 2017-05-02 1191浏览量 简介: 本节书摘来自华章社区<Docker进阶与实战> ...

  7. SAP PS 第11节 收入类项目结果分析及结算

    SAP PS 第11节 收入类项目结果分析 1 收入类项目结果分析 1.1 OKG1定义结果分析码 1.2 OKG2定义版本信息,成本控制范围+RA版本 1.2.1 定义结果RA成本要素 1.2.2 ...

  8. Django的多表查询操做

    今日内容概要 1 > 神奇的双下划线查询 1 > 查询年龄大于20的用户 2 > 查询年龄是18.22.25的用户 3 > 查询年龄在18到26之间的用户 4 > 查询姓 ...

  9. win10找不到oracle11g客户端,win10操做系统下oracle11g客户端/服务端的下载安装配置卸载总结...

    注意:如今有两种安装的方式sql 1. oracle11g服务端(64位)+oracle客户端(32位)+plsql(32位)数据库 2. oracle11g服务端(32位)+plsql(32位)wi ...

最新文章

  1. mysql干货——数据库字符集和校对规则详解
  2. 报名 | 基于大数据的中国城市技术社会治理探索
  3. ElementUI中的el-table怎样实现绑定对象数组时每一列不同控件的动态数据绑定
  4. Discuz! 7.2以下版本及各uc产品api接口Get webshell漏洞
  5. CTF工具-gdb插件peda,pwndbg安装
  6. css3弹性盒子、媒体查询、多列布局
  7. windows bat 设置代理上网脚本bat
  8. Day38 python基础--并发编程基础-IO模型
  9. 【飞行器】基于matlab GUI四旋翼飞行器PID控制仿真【含Matlab源码 1279期】
  10. 校园edu无网络访问解决方案
  11. 百度文库付费文档完整查看_无需付费直接下载百度文库!
  12. Wireshark: Getting Started
  13. Android沉浸式体验适配方案
  14. python爬取xici的免费代理、并验证(重点、清楚)
  15. awk 中使用 OFS.
  16. 如何更换荣耀MagicBook Pro开机启动logo
  17. 创客匠人用户分组:用户定向运营,不浪费一滴流量
  18. Android源码编译及替换成自己编译的linux内核
  19. 桂 林 理 工 大 学实 验 报 告实验四 选择结构程序设计
  20. 维特比算法C++实现

热门文章

  1. 最大回撤python_最大回撤,最大回撤恢复时间与最大回撤持续期
  2. 22考研初试410数一145上岸上海交通大学819经验分享
  3. 【OpenCV入门教程之十一】 形态学图像处理(二):开运算、闭运算、形态学梯度、顶帽、黑帽合辑
  4. 基于51单片机的电子钟万年历LCD1602显示
  5. qt编译出错 /usr/bin/ld 找不到 -lGL cannot find -lGL
  6. display tearing小结
  7. 舔一舔 · 肌霸Kafka
  8. html中qq号码怎么写,qq号码免费申请6位号的方法
  9. mac 清理 -OmniDiskSweeper
  10. 【大数据】Hadoop生态系统及其组件