docker:一文学基础使用
发布时间:2020年3月25日
发布者:progor
docker介绍
- 官网
- docker 是一个开源的应用容器引擎,docker 可以让开发者打包他们的应用以及应用的环境依赖到一个轻量级、可移植的容器中,然后发布到任何流行的 平台(linux,windows)上。
- docker基于Go语言。
- docker的相关技术有docker swarm ,kubernates,Compose,这些都是比较热门的容器技术,特别是k8s特别火。
docker是一种容器技术,为什么现在容器技术那么火?
容器能够打包应用和隔离运行环境,这是出发点。
容器打包应用快速而高效。
容器的资源使用效率比VM高。在理论上,他肯定要比原本无容器下更消耗资源,但他换来的是与环境的隔离,避免了不同环境的问题。而他与另一种环境隔离技术--虚拟机技术相比又更加节省资源,因为虚拟机是虚拟出一台完整的机器。容器使用宿主机硬件,不需要像虚拟机一样虚拟硬件。docker使用宿主机的操作系统内核,不需要像虚拟机那样重新创建一个内核(创建内核消耗时间较多)。相应的,容器的启动速度也要快于虚拟机。
容器可以部署在各种平台,只要这个平台能够安装docker,然后就可以在docker上部署容器。
容器的部署很快。如果你使用了一台物理机来部署你的应用,如果某天你的物理机挂了,那么你需要在另外一台机上安装各种环境,然后再部署应用。但容器的话就像一套环境的模板,部署很快。
【最重要的一点】容器的打包是把环境一起打包的,就保证了每个应用的运行环境都会是一模一样的。一次打包,多地运行。很多时候,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:一文学基础使用的更多相关文章
- Docker 安装和基础用法
理解Docker(1):Docker 安装和基础用法 本系列文章将介绍Docker的有关知识: (1)Docker 安装及基本用法 (2)Docker 镜像 (3)Docker 容器的隔离性 - 使用 ...
- docker学习(2)--基础命令
转载请注明源出处:http://www.cnblogs.com/lighten/p/6875355.html 1.基本命令 搭建好docker环境之后,使用docker help命令查看docker的 ...
- ASP.NET Core & Docker & Jenkins 零基础持续集成实战
原文:ASP.NET Core & Docker & Jenkins 零基础持续集成实战 一.本系列教程说明 源代码管理工具:Gogs 持续集成工具:Jenkins 容器:Docker ...
- Docker镜像管理基础篇
Docker镜像管理基础篇 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.Docker Images Docker镜像还有启动容器所需要的文件系统及其内容,因此,其用于创建并启 ...
- Docker笔记(一) 基础知识
官方文档地址:https://www.docker.com/get-started 中文参考手册:https://docker_practice.gitee.io/zh-cn 笔记原作者:陈艳男 B站 ...
- docker容器技术基础之联合文件系统OverlayFS
我们在上篇介绍了容器技术中资源隔离与限制docker容器技术基础之linux cgroup.namespace 这篇小作文我们要尝试学习容器的另外一个重要技术之联合文件系统之OverlayFS,在介绍 ...
- docker初探和基础搭建
个人博客 docker中文手册 Docker 是什么? docker是一个开源的软件部署解决方案: docker也是轻量级的应用容器框架: docker可以打包.发布.运行任何的应用. 在我的粗浅理解 ...
- docker容器技术基础入门
目录 docker容器技术基础入门 容器(Container) 传统虚拟化与容器的区别 Linux容器技术 Linux Namespaces CGroups LXC docker基本概念 docker ...
- Docker 从零开始制作基础镜像[centos]
http://www.oschina.net/news/62897/docker-hub-contains-high-risk-vulnerabilities 这里有个统计,docker官方和个人发布 ...
随机推荐
- Tuning xgboost in R:Part 1
第一次调整Boosting算法的参数可能是一个非常艰难的任务.有很多参数可供选择,调整不同的参数会有不同的结果产生.最好的调参可能是取决于数据.每当我得到一个新的数据集,我都会学到一些新的东西.对分类 ...
- (二)Java数组的使用
Java数组 无序数组插入删除查询操作: public class ArrayList { private static int[] intArray; private int nElems; pub ...
- jQuery 源码学习 - 02 - jQuery.fn.extend 与 jQuery.extend
参考资料:[深入浅出jQuery]源码浅析--整体架构,备用地址:chokcoco/jQuery-. extend 方法在 jQuery 中是一个很重要的方法.jQuery 内部用它来拓展静态方法或者 ...
- python——pymysql的安装
pymysql是python程序连接mysql数据库的的第三方库,通过运行import pymysql 查看系统中是否有该模块,没有的话需要自行安装. 安装教程如下: 1.下载pymysql安装包,下 ...
- vscode写react有warning
[js] Experimental support for decorators is a feature that is subject to change in a future release. ...
- myecplise上将工程部署到应用下时,经常出现 An internal error occurred during: "Add Deployment". java.lang.NullPointEx
myecplise上将工程部署到应用下时,经常出现 An internal error occurred during: "Add Deployment". java.lang.N ...
- RocketMQ集群平滑下线或重启某个节点
1.现状描述 集群其中一台物理机未知原因导致单用户无法登陆机器,该物理机需要重启修改密码或者重装系统.该台为master节点,运行正常.配置策略为: 异步刷盘 主从异步复制 如果直接下线该master ...
- 【转载】checkbox实现全选/取消全选
比较简单.好理解的写法,做个备注.查看请前往原地址:http://blog.csdn.net/graceup/article/details/46650781 <html> <bod ...
- VI.应用-Trajectory Data Mining
$textbf{Trajectory Data Mining: An Overview}$ 很好的一篇概述,清晰明了地阐述了其框架,涉及内容又十分宽泛.值得细读. 未完成,需要补充. $textbf{ ...
- 基于python openOPC的监控页面一
笔者涉猎的工业领域项目遇到一个需求,需要把底层设备(表记)的状态和运行数据集中放到一个监控画面进行展示,数据需要在界面端实时进行刷新,类似网友的例子,如下图(侵删) 数据需要实时主动刷新,笔者基于多年 ...