近期K8S,云原生应用很火,Docker可以说是入门的技术了,公司目前没有业务或项目能使用到这些,手痒痒的,就从最简单的Tomcat开始吧,毕竟即使是部署一个简单的Tomcat,也要安装jdk,下载Tomcat的tar.gz包啥的也挺麻烦的
1.删除旧版本
yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-selinux \
docker-engine-selinux \
docker-engine
2.安装仓库
yum install -y yum-utils device-mapper-persistent-data lvm2
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
yum-config-manager --enable docker-ce-edge
yum-config-manager --enable docker-ce-test
3.安装Docker
安装最新版的
yum install docker-ce
安装指定版本
yum list docker-ce --showduplicates | sort -r
4.检查是不是安装好了
docker version
5.启动Docker
systemctl start docker
6.配置国内的镜像
很多教程里配置https://registry.docker-cn.com,还可以使用阿里云的镜像
不管用哪个,反正会有个URL
vi /etc/docker/daemon.json
{
"registry-mirrors": ["your url"]
}
docker image pull tomcat
可以在https://hub.docker.com找需要的镜像,比如我搜索了tomcat的官方镜像,是这样的结果:
说明镜像有这么多个版本标签,有latest的是默认的,说明直接下载tomcat
镜像就是8.5.31版本的tomcat搭配jdk8,如果需要其他版本的镜像,需要这样docker image pull tomcat:9
docker image ls
docker image rm tomcat
docker run tomcat
实际使用会加一些参数:
docker run -d -p 8081:8080
--name jsartapi \
-v /data/tomcat/bin:/usr/local/tomcat/bin \
-v /data/tomcat/webapps/:/usr/local/tomcat/webapps/ \
-v /data/tomcat/logs/:/usr/local/tomcat/logs/
-v /data/tomcat/conf/:/usr/local/tomcat/conf/
tomcat
--name
指定容器的名称,后面可以根据名称停止,启动,删除容器的
-v
把本机的目录与容器内的目录关联起来,我这里把bin目录(方便修改启动文件),webapps目录(方便部署应用),logs目录(方便查看日志),conf目录(方便修改配置文件)都映射出来了
-d
让容器在后台启动,如果不加这个参数,容器启动就跟你平时执行catalina.sh run的效果一样,ctrl+c的话tomcat也就停止了
-p
把容器里面监听的端口映射到本机的端口,我这里把8080映射到了本机的8081
还有一些这次没用到的但是常用的参数
-rm
关闭容器后直接删除容器,我估计一般就做测试的时候用?容器删了里面的数据啊,配置啊都没啦,下次启动就是个光溜溜的东西了
-e
指定环境变量,比如我们看下mysql官方镜像
里面关于可配置环境变量的介绍,每个变量的含义啥的
--env-file
如果要用的环境变量太多了,用-e
一个一个指定也很麻烦,就用这个直接指向一个或者多个文件好啦
--link
跟另一个容器连接起来,比如我启动了一个mysql容器叫mydb在监听3306端口呢(不用映射到本机),然后我的tomcat容器只需要连接到mysql容器就可以用3306端口了,怎么连接呢,就在启动的时候加上 --link mydb:mysql
就行了,注意这里冒号后面的mysql表示mydb容器的别名,如果把mydb理解成一个主机,那mysql就是hostname,tomcat容器里用mysql:3306加上用户名密码就能访问数据库了
-m
设置容器使用内存最大值
正在运行的
docker ps
或者
docker container ls
全部的
docker ps -a
或者
docker container ls --all
docker stop 容器短ID或者容器名称
docker start 容器短ID或者容器名称
docker rm 容器短ID或者容器名称
有些操作必须要用到容器的长ID,比如在容器与本机之间拷贝文件的docker cp命令,那我们必须先通过短ID获得长ID
docker inspect -f '{{.Id}}' 容器短ID或者容器名称
把本地文件拷贝到容器中:
docker cp 本地路径 长ID:容器里的路径
把容器里的文件拷贝到本地:
docker cp 长ID:容器里的路径 本地路径
假如把容器当做一台独立服务器,而且启动的时候是加了-d参数在后台运行的,那我们怎么连接上去执行命令呢
docker exec -it 容器短ID或者容器名称 /bin/sh
退出
ctrl+q+p
如果启动的时候是加了-d参数在后台运行的,但是现在想看下容器启动时的日志呢
docker logs 容器短ID或者容器名称
docker run -d --rm --name mytomcat tomcat
docker inspect -f '{{.Id}}' mytomcat
容器里的tomcat目录是在/usr/local/tomcat
docker cp 长ID:/usr/local/tomcat/bin /data/tomcat
依次类推
docker stop mytomcat
vi /data/tomcat/bin/catalina.sh
在文件最上面备注区域的后面加上 export JAVA_OPTS="-server -Xms1400M -Xmx1400M"
docker run -d -p 8081:8080 --name mytomcat
-v /data/tomcat/bin:/usr/local/tomcat/bin \
-v /data/tomcat/webapps/:/usr/local/tomcat/webapps/ \
-v /data/tomcat/logs/:/usr/local/tomcat/logs/ \
-v /data/tomcat/conf/:/usr/local/tomcat/conf/
tomcat
目前对Docker的认识和使用还很浅薄,只是东拼西凑的使东西能用,如果有大神可以指出使用的不科学的地方将不胜感激。
推荐和参考的入门教程:http://www.ruanyifeng.com/blog/2018/02/docker-tutorial.html