linux环境Docker的部署以及构建镜像
- 一、docker部署
- 1、快速部署常用的命令:
- 1.1、demo-部署tomcat
- 1.2、tomcat容器内部结构
- 1.2.1、每个tomcat容器,都包含三个组件
- 1.2.2、在容器内部执行命令
- 1.3、容器生命周期
- 二、Dockerfile构建镜像
- 1、demo-Dockerfile自动部署Tomcat 应用
- STEP1 、Dockerfile内容:
- STEP2、新建一个web应用first-dockerfile(小白可),进行构建
- STEP3、在命令行执行如下命令
- 2、部署redis镜像
一、docker部署
1、快速部署常用的命令:
1、表示从远程仓库抽取镜像:docker pull 镜像名<:tags>
2、查看本地镜像:docker images
3、创建容器,启动应用 : docker run 镜像名<:tags>
ps:如果镜像还没有被抽取,此时会先抽取镜像,然后安装到本地,启动镜像
4、查看正在运行中的容器:docker ps
5、删除容器, <-f>表示强制删除:docker rm <-f> 容器id
6、删除指定版本的镜像, <-f>表示 (即便存在对应容器) 强制删除:docker rmi <-f> 镜像名<:tags>
快速部署命令概览图:
1.1、demo-部署tomcat
下载默认版本(当前下载使用最多的版本): docker pull tomcat
查看有哪些本地镜像:docker images
下载指定版本[版本号从hub.docker.com
即docker中央仓库获取到的]:
docker pull tomcat:8.5.46-jdk8-openjdk
docker 镜像仓库访问不了,可以参看阿里镜像:https://developer.aliyun.com/packageSearch?word=tomcat
创建对应容器,才能提供服务:docker run tomcat
启动成功后,可以看到端口8080,若想访问,需要做宿主机和容器的端口映射,操作如下:
docker run -p 8000:8080 -d tomcat
查看正在使用的容器:docker ps
删除容器:
docker stop 容器id
docker rm 容器ID
删除镜像:
docker rmi 镜像<:tags>
宿主机里有docker容器tomcat,tomcat默认端口8080,docker做了一个宿主机和容器的端口映射。外侧浏览器通过宿主机ip和端口8000访问tomcat
转发给内部8080端口。
1.2、tomcat容器内部结构
1.2.1、每个tomcat容器,都包含三个组件
- 1、linux系统,提供最底层的linux命令,此操作系统只提供安装jdk最基本的安装环境,尺寸非常小【tomcat基本运行环境,绝大多数docker容器都内置了linux系统,进入到容器内部,直接进行linux操作就可以了】
- 2、此基础上,docker 自动安装jdk1.8.0_222
- 3、tomcat 【eg:Apache Tomcat/8.5.46 】
1.2.2、在容器内部执行命令
格式:docker exec [-it] 容器id
exec 在对应容器中执行命令
-it 采用交互方式执行命令
如果你想进入一个容器,在容器内部进行后续的操作:docker exec -it 容器ID /bin/bash
ps: /bin/bash :开启一个接收后续命令的终端
demo:
获取容器ID:docker ps
进入容器内部:docker exec -it 45ce1a4ba159 /bin/bash
可执行的linux命令有许多,eg:
查看操作系统版本:cat /proc/version
查看jdk版本:java -version
退出容器,回到宿主机:exit
在宿主机,查看linux 镜像和容器默认存放路径:/var/lib/镜像名
cd /var/lib/docker
可以看到,镜像存放在image路径下,容器存放在containers路径下
1.3、容器生命周期
想多了解一些的小伙伴可以看看这块,非运维小伙伴不做重点掌握:
图中4个椭圆:stopped,running ,pause ,deleted 为容器的4个状态
箭头上的文本均为命令,熟悉这些命令,可以有效协助运维小伙伴排查问题。
二、Dockerfile构建镜像
1、docker是通过Dockerfile构建镜像的,Dockerfile用来做镜像描述,是一个包含用于 组合镜像命令 的可执行脚本,是一个无后缀的文件。
2、docker通过读取Dockerfile中的指令按步自动生成镜像
3、构建镜像
docker build -t 机构/镜像名<:tags> Dockerfile目录(
可以是绝对路径也可以是相对路径)
1、demo-Dockerfile自动部署Tomcat 应用
构建一个自定义镜像,在原有tomcat安装完基础上自动将名为docker-web的应用发布到镜像中,任何拿到自定义镜像中之要执行run就可以访问docker-web应用
STEP1 、Dockerfile内容:
红色字体部分即为Dockerfile内容,
tips:此文件无后缀哈
- #设置基准镜像
FROM tomcat:latest
- #本镜像由哪个人/机构维护。没有执行功能,只是一个说明性信息
MAINTAINER wq.com
- #切换工作目录。 webapps不存在则创建,参看web容器内部文件环境看,默认 /usr/local/tomcat ,而所有web应用都放在webapps目录下WORKDIR
/usr/local/tomcat/webapps
- #ADD表示复制。将镜像文件复制到镜像指定目录下。docker-web:指dockerfile同级目录下的文件夹,./docker-web:指webapps目录下的文件,若此目录不存在则创建;
ADD docker-web ./docker-web
STEP2、新建一个web应用first-dockerfile(小白可),进行构建
本地新建文件夹first-dockerfile
,在里面创建文件夹docker-web
,然后进入,创建index.html
,编辑内容:<h1>docker首页</h1>
在文件夹下,创建Dockerfile
,不带后缀,将上面Dockerfile
内容拷贝到本文件
在/usr下创建images 文件夹,用来存放镜像,上传first-dockerfile文件夹
文件层级:
执行构建命令:
切换到/usr/image/first-dockerfile/
目录下,【点 表示当前目录,即/usr/image/first-dockerfile/
】,执行命令:
docker build -t wq.com/mywebapp:1.0.0 .
执行docker images
可以看到刚才的应用
STEP3、在命令行执行如下命令
启动容器:docker run -p -d 8001:8080 wq.com/mywebapp:1.0.0
在浏览器访问 宿主机IP:8001/docker-web/index.html
可查看正在运行的容器:docker ps
进入到容器内部:docker exec -it 容器ID /bin/bash
直接进入到 /usr/local/tomcat/webapps
目录下,可以看到有docker-web
目录文件夹
2、部署redis镜像
-
拉取redis镜像:
docker pull redis
-
查看镜像是否构建:
docker images
-
启动容器:
docker run -p 6000:6379 -d redis
-
查看运行的容器
docker ps
-
查看端口6000是否被监听,做了宿主机和容器内部的端口映
netstat tulpn
-
进入redis容器内部:
docker exec -it 容器ID /bin/bash
-
查看容器元数据:
docker inspect 容器ID
-
查看容器日志,后期构建自己的应用,如果报错可以通过此命令查看报错情况:
docker logs
监控容器内部进程状态
docker top
与 docker stats
可以看到是每个docker容器进程的资源占用情况,根据输出的容器ID,查对应应用:docker ps
- 可以在容器内部执行:
redis-cli
exit