发布时间:2020年3月25日

发布者:progor



docker介绍

  • 官网
  • docker 是一个开源的应用容器引擎,docker 可以让开发者打包他们的应用以及应用的环境依赖到一个轻量级、可移植的容器中,然后发布到任何流行的 平台(linux,windows)上。
  • docker基于Go语言。
  • docker的相关技术有docker swarm ,kubernates,Compose,这些都是比较热门的容器技术,特别是k8s特别火。

docker是一种容器技术,为什么现在容器技术那么火?

  1. 容器能够打包应用和隔离运行环境,这是出发点。

  2. 容器打包应用快速而高效。

  3. 容器的资源使用效率比VM高。在理论上,他肯定要比原本无容器下更消耗资源,但他换来的是与环境的隔离,避免了不同环境的问题。而他与另一种环境隔离技术--虚拟机技术相比又更加节省资源,因为虚拟机是虚拟出一台完整的机器。容器使用宿主机硬件,不需要像虚拟机一样虚拟硬件。docker使用宿主机的操作系统内核,不需要像虚拟机那样重新创建一个内核(创建内核消耗时间较多)。相应的,容器的启动速度也要快于虚拟机。

  4. 容器可以部署在各种平台,只要这个平台能够安装docker,然后就可以在docker上部署容器。

  5. 容器的部署很快。如果你使用了一台物理机来部署你的应用,如果某天你的物理机挂了,那么你需要在另外一台机上安装各种环境,然后再部署应用。但容器的话就像一套环境的模板,部署很快。

  6. 【最重要的一点】容器的打包是把环境一起打包的,就保证了每个应用的运行环境都会是一模一样的。一次打包,多地运行。很多时候,BUG都是由于环境不同导致的,相同的环境可以避免一些BUG的产生。

现实使用意义:

docker由于其快速部署和一次构建多次部署的特性,使得根据服务器的压力动态快速部署服务端成为可能,比人工部署服务端快速得多。


安装与镜像源配置

CentOS7

安装

1.卸载可能存在的旧版的docker:

yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine

2.安装所需的软件包:

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

3.设置下载docker的yum库

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

4.安装最新版docker-ce

yum install -y docker-ce

5.启动docker

systemctl daemon-reload && systemctl start docker

6.查看docker信息,如果打印成功,那么就是安装成功了:

docker info

设置镜像源

docker创建一个容器需要对应的镜像,而镜像通常都是从docker hub上下载的,docker hub的功能有点像github,都是一种仓库,docker hub是存储镜像的仓库。

但是docker hub是一个国外的网站,他的访问速度不太行,github的不稳定大家应该也深有感受了。所以我们要修改docker 拉取镜像的镜像源,让他从国内的一些镜像网站来拉取镜像,这些国内的镜像都会依靠自己的稳定网络不断同步docker hub。

编辑/etc/docker/daemon.json文件,把里面registry-mirrors的值改成下面的:【还可以自行增加阿里云的源】

vi /etc/docker/daemon.json

{
"registry-mirrors": [
"http://hub-mirror.c.163.com",
"https://registry.docker-cn.com"
]
}

阿里的镜像源还是比较稳定的,可以进入阿里云搜索容器镜像服务,然后按照下图来找到加速地址:

补充:

  • 其他系统的安装方式,可以参考官方文档:Docker安装

简单使用例子

这是一个使用docker来创建一个包含了mysql的容器,我们借助这个例子来体验docker创建应用容器的快速。

1.安装之后,运行systemctl start docker启动docker,然后执行以下命令:

docker pull mysql:5.7

当这样显示的时候就是代表成功了。

2.查看镜像:

docker images

3.使用这个镜像创建一个容器(也可以称为镜像实例):

语法:
docker run --name 这个镜像实例的名字 -e MYSQL_ROOT_PASSWORD=mysql根用户的密码 -d -p 主机端口:容器内部的端口 mysql:标签
(MYSQL_ROOT_PASSWORD=123456 =号不要有空格间隔)
(-d代表后台运行,-p是为了把容器内部的mysql绑定到外部端口进行使用) 具体示例:
docker run --name testmysql -e MYSQL_ROOT_PASSWORD=123456 -p 3306:3306 -d mysql:5.7

4.查看容器运行状态:

docker container ls

5.测试连接,由于我们使用了-p 3306:3306,这是将容器内部的3306端口与主机的端口建立的连接,,所以可以直接通过连接主机Linux的端口来操作容器内部的mysql:

假设当前我的机器的IP是192.168.48.129,那么我需要连接192.168.48.129:3306来操作数据库,请使用你的mysql连接工具来测试吧

docker:一文学基础使用的更多相关文章

  1. Docker 安装和基础用法

    理解Docker(1):Docker 安装和基础用法 本系列文章将介绍Docker的有关知识: (1)Docker 安装及基本用法 (2)Docker 镜像 (3)Docker 容器的隔离性 - 使用 ...

  2. docker学习(2)--基础命令

    转载请注明源出处:http://www.cnblogs.com/lighten/p/6875355.html 1.基本命令 搭建好docker环境之后,使用docker help命令查看docker的 ...

  3. ASP.NET Core & Docker & Jenkins 零基础持续集成实战

    原文:ASP.NET Core & Docker & Jenkins 零基础持续集成实战 一.本系列教程说明 源代码管理工具:Gogs 持续集成工具:Jenkins 容器:Docker ...

  4. Docker镜像管理基础篇

    Docker镜像管理基础篇 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.Docker Images Docker镜像还有启动容器所需要的文件系统及其内容,因此,其用于创建并启 ...

  5. Docker笔记(一) 基础知识

    官方文档地址:https://www.docker.com/get-started 中文参考手册:https://docker_practice.gitee.io/zh-cn 笔记原作者:陈艳男 B站 ...

  6. docker容器技术基础之联合文件系统OverlayFS

    我们在上篇介绍了容器技术中资源隔离与限制docker容器技术基础之linux cgroup.namespace 这篇小作文我们要尝试学习容器的另外一个重要技术之联合文件系统之OverlayFS,在介绍 ...

  7. docker初探和基础搭建

    个人博客 docker中文手册 Docker 是什么? docker是一个开源的软件部署解决方案: docker也是轻量级的应用容器框架: docker可以打包.发布.运行任何的应用. 在我的粗浅理解 ...

  8. docker容器技术基础入门

    目录 docker容器技术基础入门 容器(Container) 传统虚拟化与容器的区别 Linux容器技术 Linux Namespaces CGroups LXC docker基本概念 docker ...

  9. Docker 从零开始制作基础镜像[centos]

    http://www.oschina.net/news/62897/docker-hub-contains-high-risk-vulnerabilities 这里有个统计,docker官方和个人发布 ...

随机推荐

  1. vscode写react有warning

    [js] Experimental support for decorators is a feature that is subject to change in a future release. ...

  2. 剑指offer-18-2. 删除链表中重复的结点

    剑指offer-18-2. 删除链表中重复的结点 链表 在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针. 例如,链表1->2->3-> ...

  3. LaunchImage的设置及对应图片尺寸

    2017-10-12 设置APP的LaunchImage 按照如下步骤设置app的LaunchImage: In Assets.xcassets click + button -> App Ic ...

  4. Android系统使用Shell脚本预装apk

    客户需求:需要在Android系统预安装一个或者若干个apk,客户可以选择自行卸载并且卸载后系统再次启动并不会再次自动安装. 考虑到需要批量安装应用,我这里考虑到使用灵活的shell脚本.shell脚 ...

  5. c++中的 const 关键字

    知识回顾:C语言中 const const 修饰的变量是 只读的,本质上还是变量:(只读变量:可以通过指针修改只读变量中的值) const 修饰的局部变量在栈上分配空间: const 修饰的全局变量在 ...

  6. AI:拿来主义——预训练网络(一)

    我们已经训练过几个神经网络了,识别手写数字,房价预测或者是区分猫和狗,那随之而来就有一个问题,这些训练出的网络怎么用,每个问题我都需要重新去训练网络吗?因为程序员都不太喜欢做重复的事情,因此答案肯定是 ...

  7. unittest实战(一):用例框架

    import unittest class forTest0(unittest.TestCase): @classmethod def setUpClass(cls) -> None: prin ...

  8. PyQt5之音乐播放器

    按照自己思路简单写了个桌面播放器,只有自己喜欢的歌.使用QtDesigner设计的ui界面,功能简单,还有很多bug@~@,代码奉上: music_button.ui使用扩展工具pyuic5生成了mu ...

  9. MVC04

    1. 从页面到action 讲述controller与View之间的具体运作关系 在上次添加的名为Movie的Model内添加 下面我们尝试为该model内的属性添加attribute 具体修改如下: ...

  10. PhaserJS 3 屏幕适配时的小坑 -- JavaScript Html5 游戏开发

    巨坑:在config内不要把 width 设为 window.innnerWidth在config内不要把 width 设为 window.innnerWidth在config内不要把 width 设 ...