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官方和个人发布 ...
随机推荐
- babel-loader的原理
本文转载自默语的博客. Babel包的构成 核心包 babel-core:是babel转译器本身,提供转译的API,例如babel.transform等,webpack的babel-loader就是调 ...
- 将js进行到底:node学习3
node重要API之NET--TCP编程之旅 废话:最近去了一趟上海会了会一个程序员朋友,途径SNH48握手会,说好我就去看看,没想到握手了王诗蒙,掉入巨坑:塞纳河.回来后边听着<春夏秋冬> ...
- MySQL5.7报错[ERROR] Unix socket lock file is empty /tmp/mysql.sock.lock的解决方法
发现MySQL服务器因系统磁盘写满导致服务停了,清理磁盘后启动服务时无法正常启动,查看localhost.err日志发现如下报错: [ERROR] Unix socket lock file is e ...
- RocketMQ集群平滑下线或重启某个节点
1.现状描述 集群其中一台物理机未知原因导致单用户无法登陆机器,该物理机需要重启修改密码或者重装系统.该台为master节点,运行正常.配置策略为: 异步刷盘 主从异步复制 如果直接下线该master ...
- Java入门教程六(内置包装类)
Java 是一种面向对象的编程语言,Java 中的类把方法与数据类型连接在一起,构成了自包含式的处理单元.但在 Java 中不能定义基本类型对象,为了能将基本类型视为对象处理,并能连接相关方法,Jav ...
- 难住了同事:Java 方法调用到底是传值还是传引用
Java 方法调用中的参数是值传递还是引用传递呢?相信每个做开发的同学都碰到过传这个问题,不光是做 Java 的同学,用 C#.Python 开发的同学同样肯定遇到过这个问题,而且很有可能不止一次. ...
- XXE学习(一)——XML基础
XXE学习(一)——xml基础 一.XML简介 XML 指可扩展标记语言(EXtensible Markup Language) XML 是一种标记语言,很类似 HTML XML 的设计宗旨是传输数据 ...
- 项目页面集成ckeditor富文本编辑器
步骤一.引入ckeditor.js (注:本实例以ThinkPHP3.2框架为载体,不熟悉ThinkPHP的朋友请自行补习,ckeditor文件代码内容也请去ckeditor官网自行下载) 作为程序员 ...
- HTTP——https、http缓存、get与post、web安全、跨域
HTTP诞生 1989年为知识共享而诞生的Web,提出了3项WWW构建技术: 标准通用标记语言设为HTML(HyperText Markup Language,超文本标记语言) 文档传输协议HTTP( ...
- day07深浅copy与流程控制
目录:流程控制 0:补充(了解) 短路运算:偷懒原则,偷懒到哪个位置,就把当前位置的值返回 深浅copy 1.循环之while循环 循环的语法与基本使用 死循环与效率问题 循环的应用 退出循环的两种方 ...