Docker学习入门
最近项目的技术选型已经确定下来了,但是关于Docker
和k8s
自己了解的比较少,所以准备学习一下它们的使用。我觉得这些技术虽然也是比较重要的,但是要深入的话,自己感觉也没有太大的必要。作为开发来讲我觉得能够使用就行,当然,现在很多时候开发也是运维。不管学习什么技术,我觉得更多还是看个人的意愿,知识这么多不可能什么都去学,我觉得一看兴趣,二看需求。
今天的主要目的就是学习Docker
的简单使用,关于Docker
这里就不再做介绍了,相信大家多多少少对它都有一定的了解,如果想了解更多,那么我建议上官网学习。
一、安装
我的试用的云服务器操作系统是Centos 7,所以按照Centos安装教程就好了,
1、卸载旧版本的Docker
命令如下:
sudo yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
2、使用仓库安装
我选择使用仓库进行安装,在这之前需要先设置仓库,命令如下:
##1、安装需要的包
sudo yum install -y yum-utils \
device-mapper-persistent-data \
lvm2
## 2、设置稳定仓库
sudo yum-config-manager \
--add-repo \
https://download.docker.com/linux/centos/docker-ce.repo
这个仓库也可以设置成国内的仓库,比如阿里云仓库:
https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
。
3、安装 Docker Engine-Community
命令如下:
sudo yum install docker-ce docker-ce-cli containerd.io
4、启动Dokcer
sudo systemctl start docker
通过运行hello-world
镜像验证Dokcer
是否安装成功
sudo docker run hello-world
成功运行,如下图
说明
Docker
安装成功。
二、制作自己的镜像
Docker
仓库其实有很多常用的镜像,比如Redis
、elasticsearch
、Nginx
等等,但是更多的时候我们需要使用自己的镜像,下面我们就自己制作一个镜像。制作Docker
镜像的方法有多种,但是一般建议采用Dockerfile
的方式,下面我们也使用该方式创建。
我先创建一个简单的spring boot项目,这个项目只提供一个简单的接口供外面访问。然后在目录下创建一个Dockerfile
文件,内容如下:
FROM java:8
ENV TIME_ZONE=Aisa/Shanghai
VOLUME /tmp
ADD demo-0.0.1-SNAPSHOT.jar app.jar
RUN bash -c 'touch /app.jar'
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]
然后将项目jar包和Dockerfile
上传到服务器,进入到服务器指定目录下,构建我们的镜像文件:
docker build -t docker-demo:v1 .
然后看控制台输出如下:
图-2.png
然后查看下所有镜像文件:
docker images
根据下图看到我们制作的镜像docker-demo
已经成功了。
三、启动容器
根据上面制作的镜像启动一个容器,并通过外网访问接口。启动之前我们先看下当前的容器
docker ps -a
图-3.png
启动容器:
docker run -p 9090:11000 --name docker-demo docker-demo:v1
图-4.png
根据输出我们可以看出spring boot项目已经成功启动了,服务端口号是11000。当然我们映射服务器的端口是9090,浏览器访问下项目的接口,浏览器输入
106.54.249.247:9090/docker/hello
,结果如下:图-5.png
返回的结果也是正常的,说明根据自定义镜像启动容器成功了。
四、总结
不管是安装、制作镜像还是启动容器,其实都不难,当然这次也只是一个简单的入门。我觉得这里比较重要的是Dockerfile
,毕竟构建镜像就是靠Dockerfile
完成的,另外Docker
的常用命令也需要我们去掌握,这部分我建议大家看下菜鸟教程,总结是还是非常好的。Dockerfile
文件相关部分建议看下官方的资料Build a Docker Image。