一、Docker简介
Docker是一个开源的应用容器引擎;基于Go 语言并遵从Apache2.0协议。Docker 可以让开发者将应用程序(Java、Tomcat、MySQL)所需要的环境打包到一个轻量级、可移植的容器(运行中的镜像)中,然后发布到任何Linux 机器上,实现应用程序跨平台间的无缝运作。
虚拟机模拟了一整套操作系统,而容器与虚拟机不同,它不需要捆绑一整套操作系统,只需要将软件所需的库资源和设置进行捆绑。因此容器可以高效轻量并保证部署在任何环境中的软件都能始终如一地运行。
Docker 和传统虚拟化方式的不同之处:
- 传统虚拟机技术是虚拟出一套硬件后,在其上运行一个完整操作系统,在该系统上再运行所需应用进程;
- 容器内的应用进程直接运行于宿主的内核,容器内没有自己的内核,而且也没有进行硬件虚拟。因此容器要比传统虚拟机更为轻便。
- 每个容器之间互相隔离,每个容器有自己的文件系统,容器之间进程不会相互影响,能区分计算资源。
Docker官网:https://hub.docker.com/
二、Docker的核心概念
Docker主机(Host): 安装了Docker程序的机器;
Docker客户端(Client): 连接Docker主机进行操作;
Docker仓库(Registry): 用来保存各种打包好的软件镜像;仓库分为公开仓库(Public)和私有仓库(Private)两种形式。公开仓库主要有阿里云、网易云等。
Docker镜像(Images): 镜像(类)就是一个可以用来创建Docker 容器(实例)的模板;
Docker容器(Container): 镜像启动后就会创建一个实例(容器),一个镜像可以启动多次,创建多个实例;
使用Docker的步骤:
1)、安装Docker
2)、去Docker仓库找到这个软件对应的镜像;
3)、使用Docker运行这个镜像,这个镜像就会生成一个Docker容器;
三、Docker安装
1、查看内核版本
Docker 要求CentOS 系统的内核版本高于3.10,使用uname -r
查看CentOS的内核版本。
2、安装准备环境
yum -y install gcc #c的环境
yum -y install gcc-c++ # c++的环境
3、卸载当前版本
yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
4、安装 Docker Engine-Community
(1)需要先设置 Docker 仓库,之后再从仓库安装和更新 Docker
① 设置仓库
yum install -y yum-utils \
device-mapper-persistent-data \
lvm2
② 使用以下命令来设置稳定的仓库。
yum-config-manager \
--add-repo \
http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
(2)更新yum软件包索引
yum makecache fast
(3)安装最新版本的 Docker Engine-Community 和 containerd
yum -y install docker-ce docker-ce-cli containerd.io
(4)启动Doker:
systemctl start docker
(5)开机启动Docker
systemctl enable docker
(6)关闭Docker
systemctl stop docker
5、 验证是否启动成功
- 查看进程:
ps -ef|grep docker
- 版本信息:docker -version
- 运行hello-world:docker run hello-world
四、Docker常用操作
命令参考:https://docs.docker.com/engine/reference/commandline/docker/
镜像的拉取,容器的运行多参考:https://hub.docker.com/
1、镜像操作
(1)镜像检索
docker search XXXX
(2)镜像拉取
docker pull XXX(镜像名)
下载的镜像模式是latest(最新版),我们可以通过版本标签tag指定版本号:docker pull 镜像名:tag
比如:
docker pull mysql:5.5
(3)查看所有本地镜像
docker images
(4)删除指定的本地镜像
docker rmi image-id(镜像的id号)
2、容器操作
(1)根据镜像启动容器
docker run ‐‐name myMysql ‐d mysql:latest(版本号)
(2)查看运行中的容器
docker ps
(3)停止运行中的容器
docker stop 容器的id
(4)查看所有的容器
docker ps ‐a
(5)启动容器
docker start 容器id
(6)删除一个容器
docker rm 容器id
(7)启动一个做了端口映射的tomcat
将服务器的8888端口映射为Docker容器中的8080端口。
docker run ‐d ‐p 8888:8080 tomcat
--name
:为容器起别名,可以省略
‐d
:后台运行
‐p
: 将主机的端口映射到容器的一个端口(主机端口:容器内部的端口)
设置多个端口映射,启动多个tomcat:
docker run ‐d ‐p 8887:8080 tomcat
docker run ‐d ‐p 8886:8080 tomcat
docker run ‐d ‐p 8885:8080 tomcat
(8)查看容器的日志
docker logs container‐name/container‐id