Docker笔记一:Docker介绍
什么是Docker?
讲什么是Docker之前,我们先来讲讲安装Windows系统的事,比如许嵩想安装Windows系统,首先许嵩安装了纯净版的Windows,许嵩又安装了驱动,音乐播放器,浏览器,QQ...
蜀云泉也想安装系统了,蜀云泉首先安装了Windows纯净版系统,然后安装了驱动,浏览器,音乐播放器,QQ.....
林俊杰想安装系统了........
发现了没?不同的人在做重复的事情,这怎么能忍?所以Windows镜像系统出来了,这个Windows镜像系统,内置了驱动,浏览器,音乐播放器,QQ等等必备的软件,不同的人只需要下载镜像系统,完事。
回到程序,公司有一台Linux,想安装Tomcat,Redis,MySql,我需要一个一个的安装,假如公司有50台Linux服务器,我还一个一个的安装?傻子?
Docker应运而生,Docker是一个容器引擎,我在一台Linux上安装了Tomcat,打包成Docker容器,以后其他的49台Linux服务器之间使用这个Tomcat容器就可以了,Docker牛逼啊!
那个,Redis容器,MySql容器,安排!!
什么是Docker?Docker就是一个容器引擎。
Docker的核心概念
Docker这么牛逼!我要学!可以,先来了解一下概念
概念 | 解释 |
---|---|
Docker主机(Host) | 安装了Docker的电脑 |
Docker客户端(Client) | 连接Docker主机进行操作 |
Docker镜像(Images) | 创建容器的模板 |
Docker容器(Container) | 独立运行的一个或一组应用 |
Docker仓库(Registry) | 保存镜像 |
我这里讲讲,镜像和容器的区别。Docker有自己的公共仓库,里面是各种各样的镜像,例如Tomcat镜像,MySql镜像,我们使用Docker下载Tomcat镜像之后,启动Tomcat镜像,就会生成一个Tomcat容器,这个Tomcat容器,就相当于我们自己安装了一个Tomcat并且运行。也就是说,镜像的实例=容器
假如我现在想在服务器上运行5个Tomcat,简单啊,Tomcat镜像运行5次,生成5个实例,就有5个容器了
Docker镜像命令
Linux系统(Centos):
1.查看centos内核版本,必须是3.10以上
# uname -r
2.假如内核低,更新内核
# yum update
3.安装Docker
# yum install docker
4.启动Docker
# systemctl start docker
5.将Docker设置为开机启动
# systemctl enable docker
6.查看Docker版本号,有版本号证明启动生成
# docker -v
7.停止Docker
# systemctl stop docker
8.Docker从仓库查询某个镜像,例如查询Mysql镜像.仓库默认是https://hub.docker.com
# docker search mysql
9.下载镜像
# docker pull docker.io/mysql
10.查看Docker里面所有的镜像
# docker images
11.删除某个镜像,rmi后接 ImageID 和 版本号
# docker rmi 016bbb6bd994 5.5
Docker容器命令
注意!!!如果是Mysql容器必须写 -e MYSQL_ROOT_PASSWORD=123456 ,这个是为Mysql设置root账号的密码的 |
1.根据镜像运行容器,自己起个名字,-d是后台运行,镜像名:版本号 -p是端口映射,主机端口:容器端口,只有映射端口了,外部才能访问容器,外部使用linux的ip+8888端口就可以访问Tomcat
# docker run --name myTomcat -d tomcat:latest -p 8888:8080 tomcat
2.查看正在运行的所有容器
# docker ps
3.查看所有的容器,包括运行的,不运行的
# docker ps -a
4.停止容器,可以是ContainerID,也可以是容器名,推荐容器id
# docker stop 容器id
5.启动容器
# docker start 容器id
6.删除容器,容器必须是关闭状态
# docker rm 容器id
7.查看Linux防火墙状态,如果1步骤不行,看看你的防火墙是不是墙了8888端口
# service firewalld status
8.关闭防火墙
# service firewalld stop
9.查看容器的日志
# docker logs 容器id
10.启动多个容器,我们上面讲的5个Tomcat的例子,不同主机端口就行
# docker run --name myTomcat -d tomcat:latest -p 8889:8080 tomcat
# docker run --name myTomcat -d tomcat:latest -p 8890:8080 tomcat
Docker实战
我们来实战安装一下Redis,前面的查找版本,下载镜像我就不说了,笔记一有
查看我的镜像
# docker images
启动Redis
# docker run --name myredis -d redis -p 6379:6379 redis
--name后面自己起名字的时候,不能大写,只能小写。
-d 后台运行时跟着镜像的名称,版本号一个的话可以省略,你下载了四五个redis版本就得加上版本号
-p 的端口映射要加,不加外部怎么访问?
Redis容器启动后自动退出
我发现使用上面的语句有时候无法启动Redis,这个时候就需要使用下面这条语句
docker run -itd --name myredis -p 6379:6379 redis
Docker中国镜像加速
我们使用Docker下载镜像的时候,使用的是
# docker pull redis
这个使用的是Docker Hub官方的仓库,因为在国外,所以下载速度会很慢,所以有一个Docker中国的网址,下载镜像可以很快
# docker pull registry.docker-cn.com/library/redis
同样的redis下载,我们加了一个
registry.docker-cn.com/library/
血与泪的教训
上面写的清清楚楚,在run镜像生成容器的时候是这样的
# docker run --name myTomcat -d tomcat:latest -p 8888:8080 tomcat
最后面必须要写镜像名的,我忘了写了,我忽略了。。。。导致我根本启动不了我的容器,我docker ps -a查看我的容器,发现刚启动就Exit了,网上百度了大把,都是在胡扯和抄袭。
最后还是我同学提醒了我,最后的镜像名漏了。。。。。。
3天的血泪史。。。。。
Docker启动MongoDB
我也不知道咋回事,我使用上面的启动语句,就是启动不了MongoDB,最后使用下面的语句才启动成功,就是把-p 和 -d换了换位置
docker run --name mongo -p 27017:27017 -d mongo:latest --auth
Docker search和pull报错
这个问题我参考的这篇文章,有兴趣可以去看一下原文: 原文
安装了Docker以后,使用search查询和使用pull下载镜像的时候报错,如下
# 错误1
Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?
# 错误2
Job for docker.service failed because the control process exited with error code. See "systemctl status docker.service" and "journalctl -xe" for details.
出现这种情况的时候,需要卸载Docker,重新安装一遍,步骤如下
# 先查询现有的Docker
yum list installed | grep docker
# 删除这些版本的Docker
yum -y remove docker.x86_64
yum -y remove docker-client.x86_64
yum -y remove docker-common.x86_64
# 查看Centos内核,必须是3.10以上
uname -r
# 更新yum包到最新版本
sudo yum update
# 安装yum包,更新yum源
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
# 安装Docker
sudo yum install docker-ce
# 启动Docker,并且设置为开机启动
sudo systemctl start docker
sudo systemctl enable docker
# 查看版本,出现Client和Server两个就成功了
docker version
# 使用Search查询,有结果即成功
docker search redis
Docker笔记一:Docker介绍的更多相关文章
- 二、【Docker笔记】Docker的核心概念及安装
Docker主要有三大核心的概念,分别为镜像(Image).容器(Container)及仓库(Repository). 一.核心概念 1.Docker镜像 Docker镜像其实与虚拟机镜像很类似, ...
- 三、【Docker笔记】Docker镜像
镜像是Docker的三大核心概念之一.Docker在运行容器之前,本地需要存有镜像,若不存在则Docker会首先尝试从默认的镜像仓库中去下载,当然我们也可以去配置自己的仓库,如此就会从我们配置的仓库中 ...
- 六、【Docker笔记】Docker数据管理
前几节我们介绍了Docker的基本使用和三大核心概念,那么我们在使用Docker的过程中,Docker中必然产生了大量的数据,对于这些数据我们需要查看或者对这些数据进行一个备份,也有可能容器之间的数据 ...
- 四、【Docker笔记】Docker容器
容器是Docker的另一个核心概念,容器就是镜像的一个运行实例,只是它具有一个可写的文件层,而镜像是一个只读的文件. 一.创建容器 1.新建容器 我们可以使用 docker create 命令来创建一 ...
- 七、【Docker笔记】Docker中网络基础配置
一个系统一般都包含多个服务组件,这些大量的服务组件不可能放在同一个容器中,这就需要多个容器之间可以互相通信.Docker提供了两种方式来实现网络服务:映射容器端口到宿主主机.容器互联机制. 一.端口映 ...
- Docker笔记1:Docker 的介绍
目 录 1.Docker 简介 2.Docker 特性 3.Docker 应用场景 4.Docker 优点 1.Docker 简介 Docker 提供了一个可以运行你的应用程序的封套(env ...
- Docker笔记(二):Docker管理的对象
原文地址:http://blog.jboost.cn/2019/07/14/docker-2.html 在Docker笔记(一):什么是Docker中,我们提到了Docker管理的对象包含镜像.容器. ...
- Docker笔记(四):Docker镜像管理
原文地址:http://blog.jboost.cn/2019/07/16/docker-4.html 在Docker中,应用是通过容器来运行的,而容器的运行是基于镜像的,类似面向对象设计中类与对象的 ...
- Docker笔记(九):网络管理
Docker的应用运行在容器中,其相互之间或与外部之间是如何通信的,涉及到哪些知识点,本文对相关内容进行整理.因网络这块牵涉的面较多,因此只从日常使用或理解的角度出发,过于专业的就不深入探讨了. 1. ...
随机推荐
- VMware ezmomi工具使用
用两个静态IP克隆模板: ezmomi clone --template centos67 --hostname test01 --cpus 2 --mem 4 --ips 172.10.16.203 ...
- zabbix在执行docker命令是报错
系统环境 ubuntu 14.04 x64 安装了zabbix,去监控docker的状态,安装zabbix见我的另外一篇文章 错误如下 WARNING: Error loading config f ...
- C - A Simple Problem with Integers POJ - 3468 线段树模版(区间查询区间修改)
参考qsc大佬的视频 太强惹 先膜一下 视频在b站 直接搜线段树即可 #include<cstdio> using namespace std; ; int n,a[maxn]; stru ...
- codeforces1045B Space Isaac 【manacher】【差分】
题目大意: 题目是将$[0,m)$的数划成了两个集合,其中一个集合的元素个数不超过$n$.问在第一个集合中选出的数加上第二个集合中选出的数的和中没有出现的数有哪些. 题目分析: 很有意思的一道题.方便 ...
- MT【309】正弦的平方差公式
在锐角$\Delta ABC$中,角$A,B,C$所对的边分别为$a,b,c$,且满足$b^2-a^2=ac$,则$\dfrac{1}{\tan A}-\dfrac{1}{\tan B}$ 的取值范围 ...
- Hdoj 2191.悼念512汶川大地震遇难同胞——珍惜现在,感恩生活 题解
Problem Description 急!灾区的食物依然短缺! 为了挽救灾区同胞的生命,心系灾区同胞的你准备自己采购一些粮食支援灾区,现在假设你一共有资金n元,而市场有m种大米,每种大米都是袋装产品 ...
- kvm 虚拟机XML文件
<domain type='kvm' id='29'> //domain 是一个所有虚拟机都需要的根元素,它有两个属性, //type定义使用哪个虚拟机管理程序,值可以是:xen.kvm. ...
- HDU6341 Let Sudoku Rotate (杭电多校4J)
给一个由4*4个4*4的小格组成数独,这些数独是由一个块逆时针旋转得来的,所以要还原的话就模拟出顺时针的过程,先把里面的字母转化成数字,然后从第一个块开始枚举,每个dfs和之前枚举的已经满足条件的块, ...
- 第二届强网杯wp
web web签到 利用了md5碰撞 payload为 param1 =%4d%c9%68%ff%0e%e3%5c%20%95%72%d4%77%7b%72%15%87%d3%6f%a7%b2%1b% ...
- Spring Cloud下基于OAUTH2认证授权的实现
GitHub(spring -boot 2.0.0):https://github.com/bigben0123/uaa-zuul 示例(spring -boot 2.0.0): https://gi ...