docker入门

5 篇文章 0 订阅

Docker简介

Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从Apache2.0协议开源。
Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。
容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app),更重要的是容器性能开销极低。
Docker 从 17.03 版本之后分为 CE(Community Edition: 社区版) 和 EE(Enterprise Edition: 企业版),我们用社区版就可以了。

Docker官网:添加链接描述在这里插入图片描述
Docker的应用场景
Web 应用的自动化打包和发布。

自动化测试和持续集成、发布。

在服务型环境中部署和调整数据库或其他的后台应用。

从头编译或者扩展现有的 OpenShift 或 Cloud Foundry 平台来搭建自己的 PaaS 环境。

Docker 的优点

1.更高效的利用系统资源

docker对系统资源的利用率更高,无论是应用执行速度,内存损耗或者文件存储速度,都要比传统虚拟机技术更高效。因此,相比虚拟机技术,一个相同配置的主机往往可以运行更多数量的应用。

2.更快速的启动时间

传统的虚拟机技术启动应用服务往往需要数分钟,而docker容器应用,由于直接运行于宿主内核,无需启动完整的操作系统,因此可以做到秒级,甚至毫秒级的启动时间,大大的节约了开发测试,部署的时间。

3.一致的运行环境

开发过程中常见的一个问题是环境一致问题,由于开发环境,测试环境,生产环境不一致,导致有些bug并未在开发过程中发现。而docker的镜像提供了除内核外完整的运行时环境,确保环境一致性,从而不会在出现“这段代码在我机器上没问题”这类问题。

4.持续支付和部署

对开发和运维人员来说,最希望就是一次创建和部署,可以在任意的地方运行。(定制应用镜像来实现集成、持续支付、部署。开发人员可以通过dockerfile来进行镜像构建,并结合持续集成系统进行集成测试,而运维人员则可以直接在生产环境中快速部署该镜像,甚至结合持续部署系统进行自动部署)。而且使用dockerfile使镜像构建透明化,不仅仅开发团队可以理解应用运行环境,也方便运维团队理解应用运行所需条件,帮助更好的生产环境中部署该镜像。

5.更轻松的迁移

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

6.更轻松的维护和拓展

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

Docker的架构
Docker 使用客户端-服务器 (C/S) 架构模式,使用远程API来管理和创建Docker容器。
Docker 容器通过 Docker 镜像来创建。
容器与镜像的关系类似于面向对象编程中的对象与类。
在这里插入图片描述
Docker 和虚拟机的区别
Docker是一种轻量级的虚拟化技术,比传统的虚拟机性能更好。
下图是虚拟机的体系结构:
server - 表示真实电脑。

Host OS - 真实电脑的操作系统,例如:Windows,Linux

Hypervisor - 虚拟机平台,模拟硬件,如VMWare,VirtualBox

Guest OS - 虚拟机平台上安装的操作系统,例如CentOS Linux

App - 虚拟机操作系统上的应用,例如nginx

在这里插入图片描述

server - 表示真实电脑。

Host OS - 真实电脑的操作系统,例如:Windows,Linux

Docker Engine - 新一代虚拟化技术,不需要包含单独的操作系统。

App - 所有的应用程序现在都作为Docker容器运行。

这种体系结构的明显优势是,不需要为虚拟机操作系统提供硬件模拟。所有应用程序都作为Docker容器工作,性能更好。

Centos7安装Docker

1、Docker 要求 CentOS 系统的内核版本高于 3.10 ,查看本页面的前提条件来验证你的CentOS 版本是否支持 Docker 。

通过 uname -r 命令查看你当前的内核版本
 $ uname -r

2、使用 root 权限登录 Centos。确保 yum 包更新到最新。

$ yum update

3、卸载旧版本(如果安装过旧版本的话)

$ yum remove docker  docker-common docker-selinux docker-engine

4、安装需要的软件包, yum-util 提供yum-config-manager功能,另外两个是devicemapper驱动依赖的

$ yum install -y yum-utils device-mapper-persistent-data lvm2

5、设置yum源

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

6,安装最新版本的Docker

$ yum install docker-ce docker-ce-cli containerd.io

7,启动Docker并设置开机启动

$ systemctl start docker
$ systemctl enable docker

8,验证Docker

$ docker version

9,Docker HelloWorld测试;

$ docker run hello-world

成功了的结果
在这里插入图片描述
失败了的结果
出现下载docker 失败。
在这里插入图片描述
1、没网,试着:ping www.baidu.com
如果显示没有连接的话,就说明没网,也就无法使用yum 命令。

2、ping通了的话,还是是用不了yum命令,说明是yum镜像没有了,那么就得下载一个来更新。
在安装完CentOS后一般需要修改yum源,才能够在安装更新rpm包时获得比较理想的速度。国内比较快的有163源、sohu源。这里以163源为例子。
A、 cd /etc/yum.repos.d
B、 mv CentOS-Base.repo CentOS-Base.repo.backup
C、wget http://mirrors.163.com/.help/CentOS6-Base-163.repo
D、mv CentOS6-Base-163.repo CentOS-Base.repo
E、yum clean all
最后在使用yum 就可以了

二,加快下载速度

记住,是在自己已经安装成功的基础上优化,

没有安装docker基本数就不会加快。

Docker HelloWorld运行原理解析

在这里插入图片描述

从左到右 client客户端,Docker运行主机,远程仓库;
docker build ,pull,run分别是 构建,拉取,运行命令,后面再细讲;
中间Docker主机里有 Docker daemon主运行线程,以及Containers容器,容器里可以运行很多实例,(实例是从右侧Images镜像实例化出来的)Images是存储再本地的镜像文件,比如 Redis,Tomat这些镜像文件;
右侧是Registry镜像仓库,默认远程镜像仓库 https://hub.docker.com/ 不过是国外主机,下载很慢,不稳定,所以我们后面要配置成阿里云仓库镜像地址,稳定快捷;

执行 docker run hello-world的过程看如下图例:
在这里插入图片描述
比如我们下载一个大点的东西,龟速

由于是国外主机,类似Maven仓库,会比较慢
所以我们一般都是配置国内镜像,比如阿里云,网易云等;推荐阿里云,稳定点;

注册一个阿里云的账户,进入:
进入阿里云容器镜像服务地址:
添加链接描述

在这里插入图片描述

输入:cd /etc/docker/
输入:vi darmon.json

在这里插入图片描述
复制上去:
在这里插入图片描述

docker基本命令

启动Docker
systemctl start docker

停止Docker
systemctl stop docker

重启Docker
systemctl restart docker

开机启动Docker
systemctl enable docker

查看Docker概要信息
docker info

查看Docker帮助文档
docker --help

查看Docker版本信息
docker version

docker镜像常用命令

1,docker images 列出本机所有镜像

docker images

在这里插入图片描述
后面可以加的内容:

-a	显示所有镜像(包括中间层)
-q	只显示镜像ID
-qa	可以组合
--digests	显示镜像的摘要信息
--no-trunc	显示完整的镜像信息

2,docker search 搜索镜像(基本不用)

docker search

和 https://hub.docker.com/ 这里的搜索效果一样;
后面可以加的内容:

--no-trunc	显示完整的镜像描述
-s	列出收藏数不小于指定值的镜像
--automated	只列出Docker Hub自动构建类型的镜像

3,docker pull 下载镜像

docker pull 镜像名称:[TAG]

在这里插入图片描述
4,docker rmi 删除镜像
4.1,删除单个:docker rmi 镜像名称:[TAG]

如果不写TAG,默认删除最新版本latest

有镜像生成的容器再运行时候,会报错,删除失败;

我们需要加 -f 强制删除

4.2,删除多个:docker rmi -f 镜像名称1:[TAG] 镜像名称2:[TAG]
中间空格隔开

4.3,删除全部:docker rmi -f $(docker images -qa)

Docker 容器常用命令

1、Docker创建并启动容器

docker run [OPTIONS] IMAGE [COMMAND] [ARG...]

--name="容器新名字":为容器指定一个名称;
-i:以交互模式运行容器,通常与-t或者-d同时使用;
-t:为容器重新分配一个伪输入终端,通常与-i同时使用;
-d: 后台运行容器,并返回容器ID;
-P: 随机端口映射,容器内部端口随机映射到主机的端口
-p: 指定端口映射,格式为:主机(宿主)端口:容器端口

在这里插入图片描述
在上面是有多种启动方式的:
简单的说:
1、docker run -it --name 别名 镜像ID (启动后并进入)
2、docker run -di --name 别名 镜像ID(启动后不进入)
3、docker run -it -d -p 8888:8080 tomcat (启动tomcat在后台运行并且端口为8888)

在这里插入图片描述
2、Docker列出容器

docker ps [OPTIONS]

在这里插入图片描述

OPTIONS说明:
-a :显示所有的容器,包括未运行的。
-f :根据条件过滤显示的内容。
--format :指定返回值的模板文件。
-l :显示最近创建的容器。
-n :列出最近创建的n个容器。
--no-trunc :不截断输出。
-q :静默模式,只显示容器编号。
-s :显示总的文件大小。

常用命令:

1,docker ps 查看正在运行的容器
2,docker ps -a 查看所有容器

3、Docker退出容器
1、exit (容器停止退出)
2、ctrl+P+Q (容器不停止退出)

4、Docker进入容器
1、docker attach 容器ID or 容器名 (不能进入已关闭的容器)
2、docker exec -it 容器名称 或者 容器ID 执行命令 (不进去容器,却能执行容器的方法,比如:启动tomcat)
5、Docker启动容器
docker start 容器ID or 容器名

6、Docker重启容器
docker restart 容器ID or 容器名

7、Docker停止容器
1、docker stop 容器ID or 容器名

ps做法:暴力删除,直接杀掉进程 (不推荐)
2、docker kill 容器ID or 容器名

8、Docker删除容器
1、docker rm 容器ID
2、docker rm -f 容器ID (强制删除)
3、docker rm -f $(docker ps -qa) (删除所有容器)
9、寻找日记
可以根据docker命令来,但最好自己去查看文件:

文件路径

/var/lib/docker/containers/

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值