1. 简介
Docker是一个开源的轻量级应用容器引擎, 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到Linux机器中实现虚拟化。(沙箱机制)
Docker支持将软件编译成一个镜像;然后在镜像中各种软件做好配置,将镜像发布出去,其他使用者可以直接使用这个镜像。运行中的这个镜像称为“容器”
,容器启动非常快速。
类似windows系统里面的ghost镜像
操作系统,安装好后什么都有了。
windows镜像系统原理图:
Docker镜像系统原理图:
2. 核心概念
docker主机(Host): 安装了Docker程序的机器(Docker直接安装在操作系统上)
docker客户端(Client):连接docker主机进行命令或其他操作。
docker api: https://docs.docker.com/engine/api/
docker仓库(Registry):保存各种打包好的软件镜像。
Docker Hub(https://hub.docker.com) 提供了丰富的镜像集合给我们使用。
docker镜像(Images):软件打包好的镜像,放在docker仓库中。
docker容器(Container):镜像启动后的实例(软件应用)称为一个容器。
使用Docker的步骤:
1)安装Docker
2)去Docker仓库查找软件镜像
3)使用Docker运行软件镜像,这个镜像会产生一个Docker容器。
4)对容器的启动停止就是对软件的启动停止。
3. docker安装
1)安装linux虚拟机
VMWare安装CentOs7系统及使用
VMWare、VirtualBox安装;
导入虚拟机文件 CentOS-7.ova;
双击启动Linux虚拟机;
使用客户端连接Linux服务器;(secureCRT、Xshell、smarTTY、mobaXterm…)
设置虚拟机网络,桥接网络=》选好网卡=》接入网线;
设置好网络后使用命令重启虚拟机的网络 service network restart;
查看Linux的IP地址 ifconfig;ip addr
;
2)在linux虚拟机上安装Docker
查看centos版本, docker要求centos系统的内核版本高于3.10
uname -r
#输出结果 3.10.0-1127.el7.x86_64
升级软件包及内核(选做)
yum update
安装docker, 启动docker
# 安装docker
yum install docker
# 启动docker
systemctl start docker
# 查看docker版本
docker -v
# 将docker服务设为开启启动
systemctl enable docker
# 停止docker
systemctl stop docker
4. docker操作
搜索软件镜像 ➡ 下载软件镜像 ➡ 运行软件镜像(产生一个运行的容器);
操作 | 命令 | 说明 |
---|---|---|
检索镜像 | docker search keywords | docker search mysql ;去docker hub上检索镜像的详细信息; |
拉取镜像 | docker pull 镜像名:tag | :tag是可选项,表示标签,多为软件的版本,默认是latest; |
查看本地镜像列表 | docker images | |
删除镜像 | docker rmi image-id | 删除指定的本地镜像 |
运行镜像 | docker run --name container-name -d image-name | –name: 自定义容器名称; -d: 后台运行; image-name: 指定镜像模板 比如:docker run --name mysql -d mysql |
查看运行的镜像列表 | docker ps | 加上参数-a 可以查看所有容器 |
停止 | docker stop container-name/id | 停止当前运行的容器,可以根据指定容器名称或容器ID停止; |
启动 | docker start container-name/id | 启动容器; |
删除 | docker rm container-name/id | 删除指定容器; |
端口映射 | -p 6379:6379 | -p:主机端口映射到容器内部的端口; 比如:docker run --name myredis -p 6379:6379 -d docker.io/redis |
容器日志 | docker logs container-name/id |
更多操作命令查看 : https://docs.docker.com/engine/reference/commandline/docker/
5. 安装mysql镜像
查找mysql镜像, 同docker hub官网搜索一样
docker search mysql
下载mysql镜像 , tag指定版本, 默认latest
docker pull mysql:latest
查看所有镜像
docker images
启动mysql容器 docker run --name mysql01 -d mysql:latest
发现没有成功启动,这种启动方式不对。
查看mysql容器启动的错误日志 docker logs **e5e1e3f963085fa113330af344
需要配置密码参数。
查看docker官方文档有正确的启动方式
删除错误的mysql容器,重启启动一个新的mysql容器.
# 删除mysql01
docker rm 04675268478f5e110e01d6ad7eaf1403893d74e5e1e3f963085fa113330af344
# 启动mysql
docker run --name mysql01 -e MYSQL_ROOT_PASSWORD=123456 -d mysql:latest
# 查看本地的容器
docker ps -a
用mysql客户端连接docker启动的mysql容器, 因为我的虚拟机系统之前安装过mysql,我先关闭原生mysql的服务。
使用mysql客户端连接失败,因为没有建立主机3306到docker的mysql容器3306端口的映射关系。
删除mysql01,重新启动一个建立端口映射关系的mysql容器后,连接成功。
docker run --name mysql01 -e MYSQL_ROOT_PASSWORD=123456 -d -p 3306:3306 mysql:latest
使用客户端连接成功。
可以使用下面的命令进入容器内部
docker exec -it mysql01 /bin/bash
6. 安装tomcat镜像
搜索tomcat镜像
docker search tomcat
拉取tomcat镜像
docker pull tomcat
docker images
根据tomcat镜像启动容器
docker run --name tomcat01 -d tomcat:latest
docker ps -a
docker stop tomcat01
docker start tomcat01
docker stop tomcat01
# 必须是已经停止运行的容器才允许删除
docker rm tomcat01
# 将主机8888端口映射到容器的8080端口
docker run --name tomcat01 -d -p 8888:8080 tomcat:latest
在虚拟机外面主机浏览器访问 http://192.168.1.103:8888/ , 发现访问tomcat容器报错:
解决方案:
https://blog.csdn.net/qq_45589050/article/details/104559125
解决步骤:
进入tomcat容器的目录
docker exec -it tomcat01 /bin/bash
进入tomcat/webapps目录, 清除webapps目录下的所有内容.
将webapps.dist里面的内容复制到webapps目录下面
再次访问tomcat,成功。
一个镜像可以启动多个容器
docker run --name tomcat02 -d -p 8889:8080 tomcat:latest
# 查看防火墙状态 s
ervice firewalld status
# 关闭防火墙
service firewalld stop
# 查看容器日志
docker logs container-name/container-id# 关闭防火墙
systemctl stop firewalld.service
# 禁止防火墙开机启动
systemctl disable firewalld.service
# 启动docker
systemctl start docker
# 重启docker
systemctl restart docker