1.Docker与虚拟机的区别
Docker是开发运行和部署应用程序的开发管理平台,它类似于虚拟机,可以独立运行,部署并管理应用。
- Docker容器提供了基于进程的隔离,而VM虚拟机提供了资源的完全隔离。
- Docker使用宿主操作系统的内核,而VM虚拟机使用独立的内核。
- Docker的启动速度是秒级的,VM是分钟级的。
- Docker的集成性比VM好。
2.Docker主要解决的问题
- 保证程序运行环境的一致性
- 降低配置开发环境,生产环境的复杂度和成本
- 实现程序的快速部署和分发
3.镜像和容器
-
镜像
一个镜像相当于是一个服务的模板,比如说下载一个mysql的docker,实际上就相当于是下载一个包含了mysql服务的轻量级虚拟机,我们可以基于这个镜像创建N个容器。 -
容器
容器相当于是镜像的实例,有点类似于编程中类和实例的关系,容器创建好后,通过运行这个容器就可以得到对应的服务。
4.Docker的安装
-
安装网络工具命令
yum install net-tools
-
安装实用工具
yum install -y yum-utils device-mapper-persistent-data lvm2
-
添加yum镜像(这样后面安装docker就会快点)
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
-
更新yum缓存
yum makecache fast
-
安装docker-ce (开始安装docker ,ce表示社区版,安装会有点慢)
yum -y install docker-ce
-
查看docker服务
systemctl list-unit-files | grep docker
如果显示disabled,说明docker服务不会随操作系统的启动而自动启动。
systemctl enable docker 运行这个命令会让docker随着服务器的启动而启动
-
启动docker服务(只用启动一次)
systemctl start docker 开启
systemctl stop docker 关闭
systemctl restart docker重启
-
查看docker信息(验证docker是否启动)
docker info
9.查找镜像
- docker命令查找
docker search 镜像名
docker search mysql --filter=STARS=3000 搜索不小于3000的的镜像
- 国外的镜像仓库地址:https://hub.docker.com
- 国内的镜像仓库地址:https://hub.daocloud.io
10.常用命令
Docker命令及参数使用大全:https://www.w3cschool.cn/docker/docker-command-manual.html
- 查看本机已下载镜像
docker images
字段名 | 含义 |
---|---|
REPOSITORY | 镜像仓库源 |
TAG | 镜像的版本 |
IMAGE ID | 镜像的id |
CREATED | 镜像的创建时间 |
SIZE | 镜像的大小 |
-
下载镜像
docker pull 镜像地址 -
删除镜像
docker rmi 镜像ID -
查看本机正在运行的容器
docker ps
-
查看本机所有容器(不管是否在运行)
docker container ls -a
-
启停容器
docker start 容器名 开启
docker stop 容器名 停止
docker restart 容器名 重启 -
删除容器
docker rm 容器名 -
复制文件到容器中
docker cp 宿主机文件路径 容器名:容器内文件路径 -
复制容器中的文件到主机中
docker cp 容器id:容器内路径 目的的主机路径
11.安装数据库
下载镜像—创建并启动容器—连接docker里面的数据库—创建系统数据库—执行sql
-
从daocloud上拉取镜像地址
docker pull 镜像地址
docker pull daocloud.io/library/mysql:5.6.22
-
创建并启动容器
docker run --name 容器名 -e MYSQL_ROOT_PASSWORD=123456 -p 端口:端口 -d 镜像地址
docker run --name mysql-5.6 -e MYSQL_ROOT_PASSWORD=123456 -p 3306:3306 -d daocloud.io/library/mysql:5.6.22 (该命令需要参考daocloud详情部分)
注意:第一个3306是宿主机的端口号,也可以改成其他端口号。第二个3306是docker容器内想映射出来的端口号,这里是mysql的端口。这里必须要指定映射端口号,否则外界无法访问容器内的mysql。 -
连接docker里面的数据库
-
在docker这里创建系统数据库
12.安装tomcat
下载镜像—创建并启动容器—上传程序包到服务器指定路径,并解压—验证docker里tomcat容器指定路径下程序包上传成功—重启容器
- 从daocloud上拉取镜像地址
docker pull 镜像地址
docker pull daocloud.io/library/tomcat:8.0.23
- 创建并启动容器
docker run --name 容器名 -p 端口:端口 -d -v 服务器路径:容器路径 镜像地址
docker run --name tomcat-8.0 -p 8080:8080 -d -v /mnt/tomcat/xbh:/usr/local/tomcat/webapps/xbh daocloud.io/library/tomcat:8.0.23
- 上传程序包到服务器指定路径,并解压
将程序包上传到安装了docker服务器/mnt/tomcat/xbh下
- 验证docker里tomcat容器指定路径下程序包上传成功
docker exec -it 容器名 bash进入容器内的bash交互命令模式查看是否挂载成功
docker exec -it tomcat-8.0 bash
/usr/local/tomcat/webapps/xbh路径下面找到xbh.rar说明挂载成功 - 如果要修改程序包文件里面的内容,只能在服务器路径下的程序包进行修改,容器里也会同步修改了。不能在bash交互模式里修改。
exit 退出bash
cd /mnt/tomcat/xbh进入程序包路径
vi db.properies 修改配置文件
wq保存
cat db.properies查看文件内容是否修改成功
可再次进入tomcat容器验证文件内容修改成功:
docker exec -it tomcat-8.0 bash
cd webapps/xbh
cat db.properies
6. 重启容器
docker restart 容器名
docker restart tomcat-8.0
13.容器使用注意事项
- 尽量让一个容器做一件事情,或启动一个服务。
- 尽量使用挂载的方式将数据文件挂载到容器中,容器里面尽量不要保存数据。
- 尽量按照docker的要求使用容器,而不是像一个虚拟机那样什么都往容器里面装。
- 尽量不要使用交互模式来直接操作容器,而是在宿主机上执行命令,或者使用docker file来进行定制。
Docker File用于构建镜像。通过一系列指令,基于某一个原始镜像来创建一个新的镜像,基于文本文件。维护比较方便,构建比较灵活,一般运维工程师经常使用,测试工程师了解即可。