Docker基础命令学习

二、Docker 入门
Docker是什么?

Docker 是一个开源的应用容器引擎,你可以将其理解为一个轻量级的虚拟机,开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上。

为什么要使用 Docker?
作为一种新兴的虚拟化方式,Docker 跟传统的虚拟化方式相比具有众多的优势。
更高效的利用系统资源
由于容器不需要进行硬件虚拟以及运行完整操作系统等额外开销,Docker 对系统资源的利用率更高。无论是应用执行速度、内存损耗或者文件存储速度,都要比传统虚拟机技术更高效。因此,相比虚拟机技术,一个相同配置的主机,往往可以运行更多数量的应用。
更快速的启动时间
传统的虚拟机技术启动应用服务往往需要数分钟,而 Docker 容器应用,由于直接运行于宿主内核,无需启动完整的操作系统,因此可以做到秒级、甚至毫秒级的启动时间。大大的节约了开发、测试、部署的时间。
一致的运行环境
开发过程中一个常见的问题是环境一致性问题。由于开发环境、测试环境、生产环境不一致,导致有些 bug 并未在开发过程中被发现。而 Docker 的镜像提供了除内核外完整的运行时环境,确保了应用运行环境一致性,从而不会再出现 「这段代码在我机器上没问题啊」 这类问题。
持续交付和部署
对开发和运维(DevOps)人员来说,最希望的就是一次创建或配置,可以在任意地方正常运行。
使用 Docker 可以通过定制应用镜像来实现持续集成、持续交付、部署。开发人员可以通过 Dockerfile 来进行镜像构建,并结合 持续集成(Continuous Integration) 系统进行集成测试,而运维人员则可以直接在生产环境中快速部署该镜像,甚至结合 持续部署(Continuous Delivery/Deployment) 系统进行自动部署。
而且使用 Dockerfile 使镜像构建透明化,不仅仅开发团队可以理解应用运行环境,也方便运维团队理解应用运行所需条件,帮助更好的生产环境中部署该镜像。

更轻松的迁移
由于 Docker 确保了执行环境的一致性,使得应用的迁移更加容易。Docker 可以在很多平台上运行,无论是物理机、虚拟机、公有云、私有云,甚至是笔记本,其运行结果是一致的。因此用户可以很轻易的将在一个平台上运行的应用,迁移到另一个平台上,而不用担心运行环境的变化导致应用无法正常运行的情况。

更轻松的维护和扩展
Docker 使用的分层存储以及镜像的技术,使得应用重复部分的复用更为容易,也使得应用的维护更新更加简单,基于基础镜像进一步扩展镜像也变得非常简单。此外,Docker 团队同各个开源项目团队一起维护了一大批高质量的 官方镜像,既可以直接在生产环境使用,又可以作为基础进一步定制,大大的降低了应用服务的镜像制作成本。

对比传统虚拟机总结

Docker 的主要用途,目前有三大类。
(1)提供一次性的环境。比如,本地测试他人的软件、持续集成的时候提供单元测试和构建的环境。
(2)提供弹性的云服务。因为 Docker 容器可以随开随关,很适合动态扩容和缩容。
(3)组建微服务架构。通过多个容器,一台机器可以跑多个服务,因此在本机就可以模拟出微服务架构。

Centos 安装docker

1、更新update到最新的版本
yum update

2、卸载老版本docker
yum remove docker docker-common docker-selinux docker-engine

3、安装需要的软件包
yum install -y yum-utils device-mapper-persistent-data lvm2
4、设置yum源
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
5、查看docker版本
yum list docker-ce --showduplicates|sort -r

6、安装docker
yum install docker-ce-18.03.1.ce -y
7、启动docker
systemctl start docker
8、加入开机自启
systemctl enable docker
9、配置国内镜像
vi /etc/docker/daemon.json

{
“registry-mirrors”: [“http://hub-mirror.c.163.com”]
}

2.2 docker基本概念
Docker 包括三个基本概念
镜像(Image)
容器(Container)
仓库(Repository)

Docker 镜像就是一个只读的模板。
例如:一个镜像可以包含一个完整的 ubuntu 操作系统环境,里面仅安装了 Apache 或用户需要的其它应用程序。

镜像可以用来创建 Docker 容器。
Docker 提供了一个很简单的机制来创建镜像或者更新现有的镜像,用户甚至可以直接从其他人那里下载一个已经做好的镜像来直接使用。

Docker 容器
Docker 利用容器来运行应用。
容器是从镜像创建的运行实例。它可以被启动、开始、停止、删除。每个容器都是相互隔离的、保证安全的平台。
可以把容器看做是一个简易版的 Linux 环境(包括root用户权限、进程空间、用户空间和网络空间等)和运行在其中的应用程序。

Docker 仓库
仓库是集中存放镜像文件的场所。有时候会把仓库和仓库注册服务器(Registry)混为一谈,并不严格区分。实际上,仓库注册服务器上往往存放着多个仓库,每个仓库中又包含了多个镜像,每个镜像有不同的标签(tag)。
仓库分为公开仓库(Public)和私有仓库(Private)两种形式。
最大的公开仓库是 Docker Hub,存放了数量庞大的镜像供用户下载。
2.4 快速入门
利用docker快速安装一个redis镜像,了解dockerFile指令

Dockerfile 是一个文本文件,其内包含了一条条的指令(Instruction),每一条指令构建一层,因此每一条指令的内容,就是描述该层应当如何构建。

三、Redis主从集群规划
3.0 集群节点规划
容器名称 容器IP地址 映射端口号 宿主机IP地址 服务运行模式
node1 172.17.0.2 6380 -> 6379 172.16.188.78 Master
node2 172.17.0.3 6381 -> 6379 172.16.188.78 Slave

3.1、容器网络
Docker安装后,默认会创建下面三种网络类型

在启动容器时使用 --network bridge 指定网络类型

bridge:桥接网络

默认情况下启动的Docker容器,都是使用 bridge,Docker安装时创建的桥接网络,每次Docker容器重启时,会按照顺序获取对应的IP地址,这个就导致重启下,Docker的IP地址就变了

none:无指定网络
使用 --network=none ,docker 容器就不会分配局域网的IP

host: 主机网络
使用 --network=host,此时,Docker 容器的网络会附属在主机上,两者是互通的。
例如,在容器中运行一个Web服务,监听8080端口,则主机的8080端口就会自动映射到容器中

3.2 指定自定义网络

因为默认的网络不能制定固定的地址,所以我们将创建自定义网络,并指定网段:172.10.0.0/16 并命名为mynetwork,指令

如下:
docker network create --subnet=172.10.0.0/16 mynetwork

3.3创建dockerfile
具体看发放给大家的文件
3.4 在dockerfile目录 执行下面代码,注意后面上下文点号
docker build -t redis .

创建完成后可以docker image查看生成的镜像
3.5接下来使用此docker镜像 创建容器
代码如下:
docker run -itd --name redis-master --net mynetwork -p 6380:6379 --ip 172.10.0.2 redis
参数说明:
具体可以参看一些文档
http://www.runoob.com/docker/docker-run-command.html
http://www.dockerinfo.net/docker%E5%AE%B9%E5%99%A8-2

-d: 后台运行容器,并返回容器ID;
-i: 以交互模式运行容器,通常与 -t 同时使用;
-p: 端口映射,格式为:主机(宿主)端口:容器端口
-t: 为容器重新分配一个伪输入终端,通常与 -i 同时使用;
–ip: 为容器制定一个固定的ip
–net: 指定网络模式

这样,我们创建了2个容器,来一起查看下结果
docker ps -a
docker container

3.6配置主从集群
通过docker命令分别进入到redis容器当中,主从复制查看另外一个文档

docker run -itd --name redis-master --net mynetwork -p 6380:6379 --ip 172.10.0.2 redis

docker run -itd --name redis-slave --net mynetwork -p 6380:6379 --ip 172.10.0.2 redis

3.7 dockerfile指令的认识
之前的容器是直接构建的,但是我们发现一个小问题,如果每次使用vi编辑器编辑命令比较麻烦,能不能让容器跟主机共享内存呢,我们可以通过相应的指令继续完善镜像。同时也认识更多的指令,可以参考之前的pdf,完善之前的dockerfile文件

关于容器挂载
在使用Docker的过程中,常常需要通过Volume来挂载共享目录。可以通过以下两种方式创建Volume:

在Dockerfile中指定 VOLUME /data
第一种方式,会在dockr容器软件目录当中生成目录

第二种方式可以指定宿主机跟容器的目录
生成容器时执行docker run -v /usr/docker/config:/config 命令来指定

Docker基础命令学习相关推荐

  1. Docker 基础命令学习

    容器生命周期管理 docker run docker run :创建一个新的容器并运行一个命令. 参数: -a stdin: 指定标准输入输出内容类型,可选 STDIN/STDOUT/STDERR 三 ...

  2. Docker学习(2)——图文并茂讲解Docker基础命令

    一.Docker基础命令总结 命令 功能 docker load -i ubuntu.tar 导入镜像 docker run -it --name vm1 ubuntu 创建容器(以ubuntu镜像为 ...

  3. linux基础命令学习笔记(二)

    linux基础命令学习笔记(二) 1.kill :终止进程  kill pid (唯一标示一个进程) kill -9  强制终止  kill -15 命令未结束不能终止 # ps aux 查看所有进程 ...

  4. linux账户密码 群组放在,linux基础命令学习(四)用户与群组

    一.linux用户账号的管理 linux用户账号的管理主要包括用户添加.用户删除.用户修改. 添加用户账号就是在系统创建一个新账号,然后为新账号分为用户号.用户组.主目录和登录Shell等资源. 刚添 ...

  5. Linux基础命令学习——方法二(给swap分区增加500M)

    在之前的博客中也有相关介绍,将Swap分区扩展500M,当然有很多方法,今天来记录第二种方法. 上篇介绍swap分区扩展500M的方法: Linux基础命令学习--实战篇(给swap分区增加500M) ...

  6. docker基础命令操作

    docker基础命令操作 一.容器生命周期管理 1.1 run 1.2 启动.停止.重启容器 1.3 kill--杀掉一个运行中的容器 1.4 rm--删除容器 1.5 pause/unpause 命 ...

  7. 企业版Docker2——Docker基础命令详解

    记住:容器是基于镜像的,就像虚拟机也是基于镜像一样的 1.常用的Docker基础命令总结 2.命令的详细说明与演示 (1)docker create docker create 命令为指定的镜像(im ...

  8. Kubernetes全栈架构师(Docker基础)--学习笔记

    目录 Docker基础入门 Docker基本命令 Dockerfile用法 制作小镜像上 多阶段制作小镜像下 Scratch空镜像 Docker基础入门 Docker:它是一个开源的软件项目,在Lin ...

  9. MySQL基础命令-学习的时候记录一下

    MySQL基础命令 DDL-操作数据库命令 R(Retrieve):查询功能 ① 查询所有数据库 SHOW DATEBASES; ② 查询数据库的创建语句 SHOW CREATE DATABASE d ...

最新文章

  1. c++11 模板的别名
  2. python代码图片-python实现图片上添加图片
  3. 计算机网络--详述OSI七层模型与TCP/IP五层模型
  4. 4.1.6 OS之文件的基本操作原理(创建、删除、打开、关闭、读-写)
  5. mysql8.0 的新特性_MySQL8.0-新特性汇总
  6. C#LeetCode刷题之#21-合并两个有序链表(Merge Two Sorted Lists)
  7. 非华为手机可以用鸿蒙吗,【图片】华为鸿蒙系统的厉害之处在于 你可能非用不可 !【手机吧】_百度贴吧...
  8. 各浏览器中的鼠标滚轮事件处理
  9. C#中用DateTime的ParseExact方法解析日期时间(excel中使用系统默认的日期格式)
  10. 话说模式匹配(1) 什么是模式?
  11. python 执行py文件_python入门篇:python怎么运行?python如何运行py文件?
  12. 晋中正规的计算机学校有哪些,2018晋中公办大专学校有哪些 【教育部专科院校名单】...
  13. snmp v3 参数_SNMPv3 配置及snmpwalk命令信息获取
  14. 混沌大学--喜茶模式拷贝指南
  15. c语言小蜜蜂编程题,C语言经典题目“小蜜蜂“代码.docx
  16. arduino编程语言教程_Arduino编程从零开始_IT教程网
  17. 厄米高斯模式与拉盖尔高斯模式
  18. Python学习八:pip 最常用命令、pip升级、pip 清华大学开源软件镜像站、Python日期和时间(Time模块、日历(Calendar)模块)
  19. NodeJs搭建本地服务器之使用手机访问
  20. 极限学习机(Extreme Learning Machine, ELM)的训练与预测matlab仿真

热门文章

  1. 【CS】软件测试概念Software Testing
  2. 《英文科技论文写作与学术报告》网课第一章作业答案
  3. 关于 Vue.js 的那些事儿
  4. win7计算机不能设置双屏怎么回事,教你在win7电脑中详细设置双屏显示的步骤
  5. 【OpenCV 例程200篇】220.对图像进行马赛克处理
  6. c语言计算个人成绩平均分,C语言 | 计算总平均分及第n个人的成绩
  7. HTML如何转化为canvas教程
  8. cmos sensor camera banding 现象发生原因及相关问题
  9. 济南医疗大数据普惠于民
  10. 仙人掌圆方树学习笔记