Python学习之Docker容器

一、Docker容器学习目标:
掌握Docker基础知识,能够理解Docker镜像和容器之间的概念
完成Docker的安装与启动掌握Docker镜像与容器相关命令
掌握Tomcat、Nginx等软件的常用应用的安装
掌握Docker迁移与备份相关命令
能够运用Dockerfifile编写创建容器的脚本
能够搭建与使用Docker私有仓库
二、Docker简介
1 .什么是虚拟化
在计算机中,虚拟化(英文: Virtualization)是一种资源管理技术,是将计算机的各种实体资源(如: 服务器、网络、内存及存储等)予以抽象、转化后呈现出来, 打破实体间不可切割的障碍,使用户可以通过更好的方式来应用这些资源。
在实际的生产环境中,虚拟化技术主要用来解决高性能的物理硬件产能过剩和老的旧的硬件产能过低的重组重用,透明化底层物理硬件,从而最大化的利用物理硬件,对资源充分利用。
虚拟化的种类有很多,例如:
软件虚拟化:Vmware软件、KVM软件、VirtualBox软件等
硬件虚拟化: 磁盘阵列RAID、逻辑卷LVM、
内存虚拟化、网络虚拟化、桌面虚拟化、服务虚拟化、虚拟机等。
2 .什么是Docker
Docker是一个开源的应用容器引擎, 诞生2013年,最初是dotCloud 公司内部的一个业余项目。
它基于Google公司推出的Go语言实现。 项目后来加入Linux基金会,遵从了Apache2.0协议,源代码托管在 Github 进行维护。

在这里插入图片描述
在这里插入图片描述
Docker自开源后受到广泛的关注和讨论,以至于dotcloud公司后来都改名为Docker Inc。Redhat已经在RHEL6.5中集成对Docker的支持, Google 也在Paas产品中广泛应用。
Docker项目的目标是实现轻量级的操作系统虚拟化解决方案。Docker的基础是Linux容器(LXC)等技术。在2018年之前是不支持在Windows系统部署Docker的。
在LXC的基础上Docker做了进一步的封装,让用户不需要去关心容器的管理,使操作更为简便。用户操作Docker的容器就像操作一个快速轻量级的虚拟机一样简单。
3.为什么选择Docker?
1)上手快 :用户只需要几分钟,就可以把自己的程序"Docker化"。
Docker依赖于"写时复制"(copy-onwrite)模型,使修改应用程序也非常迅速,可以说达到"随心所欲,代码即改"的境界。
随后,就可以创建容器来运行应用程序了。大多数Docker容器只需要不到1秒即可启动。
由于去除了管理程序的开销,Docker容器拥有很高的性能,同时同一台宿主机中也可以运行更 多的容器,使用户尽可能的充分利用系统资源。
在linux程序中,fork()会产生一个和父进程完全相同的子进程,但子进程在此后多会exec系统调用,出于效率考虑,linux中引入了“写时复制”技术,也就是只有进程空间的各段的内容要发生变化时,才将父进程的内容复制一份给子进程。
2)职责的逻辑分类
使用Docker,开发人员只需要关心容器中优秀的应用程序,而运维人员只需要关心如何管理容器。
Docker设计的目的就是要加强开发人员写代码的开发环境与应用程序要部署的生产环境一致性。
从而降低那种"开发时一切正常,肯定时运维的问题(测试环境都是正常的, 上线后出了问题就归结为肯定是运维的问题)"。
3) 快速高效的开发生命周期
Docker的目标之一就是缩短代码从开发、测试到部署、上线运行的周期,让你的应用程序具备可移植性,易于构建,并易于协作。
(通俗一点说,Docker就像一个盒子,里面可以装很多物件,如果需要这些物件的可以直接将该大盒子拿走,而不需要从盒子里一件一件的取)。
4)鼓励使用面向服务的架构
Docker还鼓励面向服务的体系结构和微服务架构。Docker推荐单个容器只运行一个应用程序或者进程,这样就形成了一个分布式的应用程序模型,在这种模型下,应用程序或者服务都可以表示为一系列内部互联的容器。从而使分布式部署应用程序,扩展和调试应用程序都变得非常简单,同时也提高了程序的内省性。(当然,一个程序中可以运行多个应用程序)。
3. 容器与虚拟化的比较
下面的图片比较了Docker和传统的虚拟化方式的不同之处,可见容器在操作系统层面上实现虚拟化,直接复用本地主机的操作系统,而传统的虚拟化则是在硬件层面实现。

在这里插入图片描述
在这里插入图片描述
4 .Docker组件
4.1 Docker服务器与客户端
Docker是一个客户端/服务器(C/S)架构的程序。Docker客户端只需向Docker服务器或守护进程发出请求,服务器或守护进程将完成所有工作并返回结果。

Docker提供了一个命令行工具docker以及一整套RESTful API来与守护进程交互。
用户可以在同一台宿主机上运行Docker守护进程和客户端。

在这里插入图片描述
4.2 Docker镜像与容器
仓库:每个仓库存放某一类镜像。
镜像:类似虚拟机镜像(eg:xxx.iso)。 eg: MySQL镜像、Redis镜像、2048镜像。
容器:类似linux系统环境,运行和隔离应用。容器从镜像启动的时候,docker会在镜像的最上一层创建一个可写层,镜像本身是只读的,保持不变。
4.3 Registry(注册中心)
Docker用Registry来保存用户构建的镜像。Registry分为公有和私有两种。
公有仓库 :所有人可以访问下载镜像的仓库。Docker公司运营公共的Registry叫做Docker Hub。
私有仓库: 规定范围内可以访使用的库。用户可以构建私有的Registry。
三、 Docker的安装与启动
1 .安装Docker
Docker官方建议在Ubuntu中安装,因为Docker是基于Ubuntu分布的,而且一般Docker出现的问题Ubuntu是最先更新或者打补丁的。在很多版本的CentOS中是不支持更新最新的一些补丁包的。
由于我们学习的环境都使用的是RedHat, 因此这里我们将Docker安装到RedHat上。 注意: 这里建议安装在RedHat 7.x以上的版本。在RedHat6.x的版本中,需要安装其他很多的环境而且Docker很多补丁不支持更新。
首先得安装一下docker的环境,针对你的系统看一下docker的官网 吧, 下面是Linux系统的安装步骤。
方法一: 直接使用docker光盘镜像源安装docker最新版本
(1) yum包更新到最新

# 阿里安装软件镜像源下载 
$ wget -O CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo 
$ yum makecache # 生成缓存 
$ yum update # yum包更新

(2) 配置yum仓库安装Docker

$ yum-config-manager --add-repo https://download.docker.com/linux/centos/docker- ce.repo

(3) 安装Docker

$ yum install docker-ce -y

(4) 安装后查看Docker版本

$ docker -v

方法二: 官网下载软件包, 自行安装

$ yum install * -y 
$ docker version

2.设置ustc的镜像
ustc说老牌的linux镜像服务提供者,ustc的docker镜像加速器速度很快。ustc docker mirror的优势之一就是不需要注册,是真正的公共服务。
https://lug.ustc.edu.cn/wiki/
对该文件进行编辑:

$ vim /etc/docker/daemon.json

编辑以下内容,保存退出。

{ 
"registry-mirrors": ["https://docker.mirrors.ustc.edu..cn"],
 }

  1. Docker的启动与停止
    systemctl命令是系统服务管理器指令。
    启动Docker:
$ systemctl start docker

停止Docker:

$ systemctl stop docker

重启Docker:

$ systemctl restart docker

查看Docker状态:

$ systemctl status docker

开机启动Docker:

$ systemctl enable docker

查看Docker概要信息:

$ docker info

查看Docker帮助文档:

$ docker --help

四、常用命令
1.镜像相关命令
1.1 查看镜像

$ docker load -i game2048.tar # 从tar包载入镜像
$ docker pull tensorflow/tensorflow # 从镜像仓库拉取镜像
$ docker images # 查看镜像

在这里插入图片描述
REPOSITORY: 镜像名称
TAG: 镜像标签
IMAGE ID: 镜像ID
CREATED: 镜像创建的时间(不是获取该镜像的日期)
SIZE: 镜像大小
这些镜像都是存储在Docker宿主机的/var/lib/docker目录下。
1.2 搜索镜像
如果你需要从网络中查找需要的镜像,可以通过下面命令搜索:

docker search 镜像名称

在这里插入图片描述
1.3 拉取镜像
拉取仓库就是从镜像仓库中下载镜像到本地。

docker pull 镜像名称

在这里插入图片描述
1.4 删除镜像
按ID删除镜像

$ docker rmi 镜像ID

删除所有镜像(注意:``是反向单引号)

$ docker rmi `docker images -q`

在这里插入图片描述

  1. 容器相关命令
    1.1 查看容器
    查看所有正在运行的容器
$ docker ps

查看所有容器(即无论是否运行中)

$ docker ps -a

查看最后一次运行的容器

$ docker ps -l

查看停止的容器

$ docker ps -f status=exited

1.2创建与启动容器
创建容器常用参数说明: docker run
-i, --interactive : 表示运行容器
-t, --tty : 表示容器启动后进入其命令行(分配一个伪终端)
–name : 指定容器名称
-v, --volume list : 表示一个/多个目录映射关系(前者是宿主机目录,后者是映射到宿主机上的目录)
-d, --detach : 创建一个守护进程在后台运行
-p, --publish list : 表示一个/多个端口映射,前者是宿主机端口,后者是容器内的映射端口。
(1) 交互式创建容器

$ docker load -i ubuntu.tar # 加载镜像
$ docker run -it --name=myubuntu ubuntu /bin/bash # 创建容器, exit退出当前容器
$ docker ps -a

(2) 守护方式创建容器

$ docker run -di --name=容器名称 镜像名称:标签 # 创建容器
$ docker exec -it 容器名称/容器ID /bin/bash # 登录守护容器交互环境的方式
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值