《 Docker 技术入门与实战 》读书笔记 ( CentOS 安装 Docker )

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到教程。

PS :个人所有读书笔记只记录个人想要的内容,很可能原书大量内容没有纳入笔记中... ... 

以下全文内容出自书目:《 Docker 技术入门与实战 》

1. Docker 镜像:一个只读模板,是创建容器的基础 。

2. Docker 容器:从镜像创建运行的实例 ,可以看作是一个简易版本的 Linux 系统环境 。

3. Docker 仓库:集中存放镜像文件的场所 。

4. Docker 目前只能运行在 64 位平台上,并要求内核版本不低于 3.10 (可用 uname -a 或者 cat /proc/version 查看自己内核详情)。

5. Ubuntu 安装 Docker :apt-get install -y docker-engine  ( 见书P12 ) 。

6. CentOS 安装 Docker :

7. docker 服务开启/重启方式:systemctl start docker.service   、 service docker restart  。

8. 查看 docker 版本信息:  docker version 。

9. 查看镜像 : docker images 

    -a : 列出所有镜像。--digests=true|false :列出镜像数字摘要,默认为否。-f ,--filter=[] : 过滤列出镜像,如 dangling=true 只显示没有被使用的镜像 。--format="TEMPLATE":控制输出格式,如 ID 代表 ID 信息, .Repository 代表仓库信息 。--no-trunc=true|false : 是否截断输出结果中太长的部分 。-q ,--quiet=true|false : 仅输出 ID ,默认为否 。

--------------------------------------  以下更新于2018.7.9  --------------------------------------

10.  查看镜像创建过程: docker history  镜像名。

11.  删除镜像: docker rmi 镜像名、镜像ID(当镜像只剩下一个 tag 时会彻底删除镜像,命令 docker images 可查看镜像)。

12. 查看所有容器 : docker ps -a 。

13. 镜像导出到本地文件:docker save -o xxx.tar 原镜像名。

14. 镜像导入: docker load <  镜像名 或 docker load --input  镜像名,如 docker load < xxx.tar 。

     ( A导出 + B导入 + run 可以把一个工程从服务器 A 拷贝到服务器 B 并部署运行,见第 20、21 点 。) 

15. 上传镜像到仓库 :docker push ,默认是上传到 Docker Hub 官方仓库 。

16. 创建容器 : docker  create 镜像名,参数如下:  (另一种创建方式见第 28 点。)

    -d:后台运行。-i:保持标准输入打开,默认为 false 。--net="bridge" :指定容器网络模式 。--rm=true :容器退出后自动删除 ( 不能和 -d 同时使用 )。-t: 分配一个伪终端,默认为 false 。-v | --volume=本机目录 : 容器目录 : 挂载主机上文件卷到容器 。--volume-from=[ ]  : 从其它容器挂载卷 。-w | --workdir=" "  : 容器的默认工作目录 。 -e | --env=[ ] :指定容器环境变量 。-h | --hostname=" "  : 指定容器内的主机名 。 --link=[ < name or id >:alias ] :链接到其它容器 。 --name=" " :指定容器名 。 

17. 终止运行中的容器 : docker stop 。

18. 进入容器以便可以执行任意命令: docker exec 容器名、id,如:docker exec -it 镜像id /bin/bash 。参数如下:

    --privileged=true :给执行命令以最高权限,默认为 false 。-u | --user=" " :执行命令的用户名或 ID 。-i : 开启标准输入 。 -t:分配伪终端,默认为 false 。

19 . 删除容器:docker rm ,参数如下:

    -f: 强行终止并删除运行中的容器 。-l | --link=false : 删除容器链接,但保留容器 。-v | --volumes=false :删除容器挂载的数据卷 。

20. 导出容器:docker export  。    

-o 指定导出的 tar 文件,也可以直接重定向实现

    如: docker export -o test.tar 容器名、id  或 docker export 容器名、id > test.tar 。

21. 导入已导出的 tar 文件生成镜像:docker import 。   

 -c | --change=[ ] 导入时执行对容器进行修改的 Dockerfile 。

    如: docker import test.tar  -test/ubuntu:v1.o 。

22. docker load 和 docker impoer 区别: 

 load 命令导入镜像存储文件到镜像库,将保存完整记录,体积大。import 命令导入一个快照到本地镜像库,会丢弃所有历史记录和元数据信息。   

23. 搭建本地私有仓库:docker run -d -p 5000:5000 registry ,见书 P49 。

这会自动下载并启动一个 registry 容器,创建本地的私有仓库 。     

 -v : 将镜像文件存放在本地指定路径,默认是将仓库创建在 /tmp/registry 目录下 。

如:docker run  -d  -p  5000:5000  -v  /opt/data/registry:tmp/registry  registry 则会将上传的镜像放到 /opt/data/registry 目录下 。

24. 数据卷是可供容器使用的特殊目录,它将主机操作目录直接映射进容器。

-v 可以在 docker run 运行的容器内创建一个数据卷。多次重复使用则创建多个数据卷。- p 是将容器服务暴露的端口,是自动映射到本地主机的临时端口 。   

如:docker run -d -p --name web -v /webapp train python app.py 

用镜像 train  创建了容器 web ,并创建了一个数据卷挂载到容器的 /webapp 目录 。

-v 也可以指定挂载一个本地已有目录到容器中去作为数据卷 。

挂载数据卷的默认权限是 读写,可以用 ro 指定为只读,这样容器对所挂载数据卷内的内容就不能修改了 。 

如: docker run -d -p --name web -v /src/webapp : /opt/web : ro  train python app.py 

上面是加载主机的 /src/webapp 目录到容器的 /opt/web 目录 ,并且是只读 。

// 25. 利用数据卷容器来迁移数据见书 P55 。

26. 安装 ping :apt-get install -yqq inetutils-ping 。

27. 通常 Dockerfile 分为四部分:基础镜像信息、维护者信息、镜像操作指令、容器启动时执行指令。

参数说明:

28. docker build 创建容器 :docker build Dockerfile文件名  。

    -t:指定生成镜像的标签名,即 tag 。-f:若 Dockerfile 不在当前路径下,可使用 -f 来指定 Dockerfile 路径 。

如: docker build -t sshd:docker .    最后一个“.”表示使用当前路径下的 Dockerfile 文件 。

// 29. docker 安装和使用各个操作系统见书 P71 。

30. 安装 openssh-server : apt-get install openssh-server -y 。

31. 查看端口占用: netstat -tunlp 。

// 32. Docker Web 服务与应用(Apache、Nginx、Tomcat、Jetty、LAMP、CMS)见书 P83 。 

33. 安装运行 mysql :( 使用官方镜像快速启动一个 mysql 服务实例 )

     docker run --name jy_mysql -e MYSQL_ROOT_PASSWORD=123 -d  mysql:latest 。

    执行完,mysql 就在 docker 中安装好了,可用 navicat 直接访问 。

    本地找不到的镜像会自动从Docker 仓库中下载最新版本。

    进入 mysql 容器: docker exec -it jy_mysql bash ,查看日志 :docker logs jy_mysql 。

34. 安装运行 MongoDB: docker run --name mongoDB -d mongo 。

35. 安装运行 Redis:docker run --name redis -d redis 。

36. 安装运行  memcache : docker run --name memcache -d memcached 。

// 37. 搭建 cassandra 集群见书 P109 。

          Docker 快速部署 RabbitMQ、Celery、Hadoop、Spark、Elasticsearch 见书P112 。

 

--------------------------------------  以下更新于2018.7.28  --------------------------------------

 

38.   Docker Compose安装命令:sudo pip install -U docker-compose。

-f | --file :指定 compose 模板文件,默认为 docker-compose.yml ,可多次指定。-p | --projrct-name:指定项目名称,默认使用所在目录名称为项目名。--x-networking :使用 docker 可插拨网络后端特性。--x-network-driver DRIVER :指定网络后端驱动,默认为 brige。-v | --version :输出版本并退出。--verbose :输出更多调试信息。

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/449017.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

数据结构:静态链表实现树的同构

写在最前面 按照课程讲解的思路来写&#xff0c;逻辑关系能够理解清楚了&#xff0c;但是实际运行起来实在是有问题&#xff0c;虽然在PTA上能够通过。但是我自己看不出问题来&#xff0c;并且&#xff0c;看了一遍又一遍仍然看不出来&#xff01;&#xff08;可能自己太笨。。…

中国人为什么学不会英语

英语永远也学不会! 这种抱怨和哀叹&#xff0c;大概在中国早已经司空见惯了。于是&#xff0c;有人开始计算学英语是多么大的浪费。 作为过来人&#xff0c;我对此深有体会。记得我当年也有过类似的绝望感。 但是&#xff0c;一位前辈安慰我说&#xff1a;你可以说你永远掌…

研究人员发现:基于文本的AI模型容易受到改述攻击

由于自然语言处理&#xff08;NLP&#xff09;的进步&#xff0c;越来越多的公司和组织开始利用AI算法来执行与文本相关的任务&#xff0c;例如&#xff1a;过滤垃圾邮件、分析社交媒体帖子和评论、评估简历以及检测假新闻。 但是&#xff0c;真的可以相信这些算法能够可靠地执…

解决 linux 下安装 node 报: command not found

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 注意&#xff1a;有时安装成功后,需要关闭xshell&#xff0c;重新启动。nvm才会生效。 1. 在 linux 下安装 node 提示 -bash: node: com…

阿里云官方网站免费套餐怎么抢

阿里云推出包含云服务器 ECS、负载均衡、云数据库 RDS、云数据库 Redis 版、云数据库 Mongodb 版、弹性公网 IP、CDN、对象存储 OSS、文件存储 NAS等40核心云产品&#xff0c;6个月免费使用何为免费套餐&#xff0c;其实就是让你先体验&#xff0c;觉得好用&#xff0c;易用&am…

1003 我要通过

1003 我要通过&#xff01; (20 分)“答案正确”是自动判题系统给出的最令人欢喜的回复。本题属于 PAT 的“答案正确”大派送 —— 只要读入的字符串满足下列条件&#xff0c;系统就输出“答案正确”&#xff0c;否则输出“答案错误”。 得到“答案正确”的条件是&#xff1a; …

在英特尔® 凌动™ 处理器上将 OpenGL* 游戏移植到 Android* (第一部分)

将游戏和其他使用大量 3D 图形的应用从 OpenGL 标准移植到 Google Android 设备&#xff08;包括构建在英特尔 凌动™ 微架构上的设备&#xff09;存在巨大的机遇&#xff0c;因为基于 OpenGL 的游戏、游戏引擎和其他传统软件易于获得&#xff1b;OpenGL 便于移植&#xff1b;而…

文件系统:使用 yum 安装软件包

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 一、yum命令的基本安装功能 [rootlocalhost ~]# man yum command is one of: * install package1 [package2] [...]&#xff1a; ins…

elasticsearch全局analyzer声明

2019独角兽企业重金招聘Python工程师标准>>> 问题 elasticsearch从2.4升级到5.6&#xff0c;elasticsearch.yml配置中有一些analyzer配置拷贝到新版本&#xff0c;启动报错 index :analysis :analyzer :lowercase_whitespace :type : customtokenizer : myTokenizer…

Parallels Desktop虚拟机无法关机提示“虚拟机处理器已被操作系统重置”

如果你在使用PD的时候遇到了这样子的弹窗&#xff0c;恭喜你篇博文可以帮助你&#xff0c;因为我刚刚也遇到了这个问题。如果有帮助可以点一下推荐按钮。 针对Windows电脑 启动虚拟机创建快照使用管理员权限运行命令提示符执行powercfg -h off重启试试成功了再删除快照即可修改…

linux下安装 ping 命令

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 使用docker仓库下载的ubuntu 14.04 镜像。里面精简的连 ping 命令都没有。google 百度都搜索不到ping 命令在哪个包里。 努力找了半天&…

扬尼斯定律:程序员的开发效率每6年提高一倍

我不断的听到各种关于“软件危机”的警言&#xff0c;以及关于软件开发缺少过程规范的批评。我做编程工作超过15年&#xff0c;我认为这些言论基本上都是错的&#xff1a;我确信我能在很短的时间里用如今的开发工具复制出15年前一个不错的程序员开发出的东西。 模仿摩尔定律和…

ApiBoot - ApiBoot Quartz 使用文档

ApiBoot Quartz ApiBoot内部集成了Quartz&#xff0c;提供了数据库方式、内存方式的进行任务的存储&#xff0c;其中数据库方式提供了分布式集群任务调度&#xff0c;任务自动平滑切换执行节点。 引用ApiBoot Quartz 在pom.xml配置文件内添加&#xff0c;如下配置&#xff1a; …

《算法竞赛进阶指南》0.4二分

102. 最佳牛围栏 农夫约翰的农场由N块田地组成&#xff0c;每块地里都有一定数量的牛,其数量不会少于1头&#xff0c;也不会超过2000头。 约翰希望用围栏将一部分连续的田地围起来&#xff0c;并使得围起来的区域内每块地包含的牛的数量的平均值达到最大。 围起区域内至少需要包…

Hibernate 自动创建表

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 1. 在 hibernate.cfg.xml 添加这句话&#xff0c;可以自动生成数据表 : <property name"hibernate.hbm2ddl.auto">upd…

程序员越老越优秀吗?

Peter Knego 向我们展示了一些有趣的东西&#xff1a; 官方数据&#xff1a;程序员年纪越大越出色、越稀有。他使用StackOverflow的声誉值和其它几个指标来印证他的观点。 他的总结是&#xff1a; 随着年龄的增加&#xff0c;程序员的数量急剧下降。程序员数量的峰值出现在2…

小程序学习(一):点击爱心变色 -- 最简单的事件实现

最近在学习小程序&#xff0c;想通过写文章来记录自己的学习历程&#xff0c;希望能做到每周都写…… 如何绑定一个事件 微信小程序中&#xff0c;绑定事件要在标签内写入这两段代码&#xff1a; bindtap"fnActive" data-favourite "{{isLike}}" 复制代码…

安全通信

安全通信 应用层协议大多数自己都没有实现加解密功能&#xff0c;比如http等。http就是直接把数据加载进来然后做简单编码&#xff08;也就是流式化&#xff09;然后响应客户端&#xff0c;然后数据在浏览器展示&#xff0c;这个数据在传输过程是明文的&#xff0c;你截获就可以…

出现 java.lang.NullPointerException 的几种原因、可能情况

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。一般报 java.lang.NullPointerException的 原因有以下几种&#xff1a;1. 字符串变量未初始化 。 2. 接口类型的对象没有用具体的类初始化…

纯JPA 入门小案例(2)

2019独角兽企业重金招聘Python工程师标准>>> JPA中的主键生成策略 通过annotation&#xff08;注解&#xff09;来映射hibernate实体的,基于annotation的hibernate主键标识为Id, 其生成规则由GeneratedValue设定的.这里的id和GeneratedValue都是JPA的标准用法。 JPA…