1.docker的通俗理解

当我们使用docker的时候,我们会先获取一个镜像(images),然后用这个镜像启动一个容器(container),镜像我们可以理解为我们安装系统所使用的ghost镜像,当然,这和虚拟机有所不同,一个容器的资源由docker进程进行分配,而且必须只能在依赖宿主机的环境下运行,不过容器的目录是相对独立的。

2.docker的应用

1.准备工作

安装docker

yum -y install docker-io
service docker start
docker run hello-world

现在,docker会运行一个名为hello-world的镜像,当然,本地实际上并没有,当docker发现本地不存在的时候,会从远程仓库pull一份过来。

获取centos镜像

docker pull centos

这个镜像里装了一个纯净版的centos

docker images

QQ截图20191023150143.png
在这里我们可以看到我们可用的镜像以及大小

运行一个该镜像的容器

docker run -dit --name va -p 3000:8080 --privileged=true docker.io/centos:latest /sbin/init

这里要解释一下,name是指定这个容器的名称,这里是va,如果不指定,则会自动生成一个随机的名称,p是指端口映射,我们后面会安装tomcat,使用默认端口8080,现在映射为3000,以便我们从外部访问。最后面是镜像名称和tag名称,使用dit以便后台运行(否则启动后就会停止)。这里如果我们在加个/bin/bash,则会进入容器的命令行。

同样的,手动进入命令行如下:

docker exec -it va /bin/bash

进去之后,ls命令一下,你会发现内部的目录结构和普通linux一样,只不过是单独存在的。

按ctrl+p+q,退回到宿主机,这么做可以保证容器是保持运行的,否则直接exit容器就关机了。

2.安装JDK

将JDK的压缩包上传至宿主机,然后从宿主机上复制到容器上

docker cp jdk.tar.gz va:/

接下来配置环境变量,通常来说我们都是写在/etc/profile文件中,但是容器重启后,会发现原先的配置不起作用,需要重新刷新下才行,具体原因是profile并不会自动export,而是操作系统启动的时候读取的,而容器启动并没有这一步,所以每次都要source一下,解决办法就是在/root/.bashrc中配置,或者在dockerfile中添加环境变量。具体配置方式不再介绍了。

3.安装tomcat

和之前一样复制到容器中,tomcat的安装相当简单,直接./startup.sh就行了,然后我们来到外部浏览器打开尝试,如图:
QQ截图20191023170602.png

4.打包

#打包成镜像
docker commit container-name new_image:tag
#上传至dockerhub
docker push doraz/va
#导出打成本地 tar 包
docker export -o va.tar va
#将 tar 包导入成镜像
docker import va.tar va_images

参考资料

Docker 搭建 Tomcat + Mysql
Dockerfile文件详解
教你如何修改运行中的docker容器的端口映射
Docker容器进入的4种方式
Docker 给运行中的容器设置端口映射的方法