通过一篇长篇文章来学习docker的基本概念和基本使用:什么是容器技术;什么是镜像、容器、仓库;如何操作镜像、容器;如何创建新的镜像;如何从云拉取镜像、推送镜像到云。

发布时间:2020年3月25日
发布者:progor


20200325211424


docker介绍

20200221100731

  • 官网
  • 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"
	]
}

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

补充:

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

简单使用例子

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

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

docker pull mysql:5.7

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

2.查看镜像:
docker images
20200221143633

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

20200221161028

4.查看容器运行状态:
docker container ls
20200221161126

5.测试连接,由于我们使用了-p 3306:3306,这是将容器内部的3306端口与主机的端口建立的连接,,所以可以直接通过连接主机Linux的端口来操作容器内部的mysql:
假设当前我的机器的IP是192.168.48.129,那么我需要连接192.168.48.129:3306来操作数据库,请使用你的mysql连接工具来测试吧

版权声明:本文为progor原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/progor/p/12570725.html