zoukankan      html  css  js  c++  java
  • 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
    
  • 相关阅读:
    ImageView的属性android:scaleType作用
    android程序内存泄漏的原因和解决办法
    如何在Android使用Rest服务从客户端调用webservice
    android系统如何自适应屏幕大小
    使用GitHub进行版本管理
    Android中dp、sp、px的转换和区别。
    软件开发:手机应用程序开发注意事项
    学用MVC4做网站二:2.2添加用户组
    学用MVC4做网站二:2.1浏览用户组
    学用MVC4做网站二:2.4删除用户组
  • 原文地址:https://www.cnblogs.com/yunquan/p/10430577.html
Copyright © 2011-2022 走看看