docker
安装docker
curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
安装后启动docker服务
service docker start
如没有启动服务会报
Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?
导致以上错误常见的就是服务没启动,其他原因自行百度
赋予用户权限
docker 由root或者sudo安装好,使用其他用户查看比如docker ps 操作还是查看不了,这个时候需要赋予用户权
限,比如我想使用hadoop用户查看的话,执行命令
sudo usermod -a -G docker hadoop (如果没有docker group 自己创建下)
然后重启docker即可 重启命令 systemctl restart docker
同样执行完该命令之后,需将该用户退出重新登录
如果上述修改不成功 可直接修改/var/run/docker.sock文件为hadoop用户
启动docker后
使用命令 docker pull 拉取镜像
docker pull centos:latest
#这是产看镜像的命令
docker images
自制镜像
创建dockerFile 文件,注意不要有后缀名。本人这里使用idea创建的dockerfile ,命名为jdk1.8_maven3.6。文件内容如下:
# 以 centos最新镜像 为基础镜像
FROM centos:latest
#维护者信息,如果要发布这里写作者的邮箱
MAINTAINER zxf
# 安装JDK,我所解压的jdk目录是在/opt/containerd/dk_images/jdk1.8_maven3.6/jdk1.8,后面的jdk1.8是我重命名的方便记忆
COPY jdk1.8 /opt/containerd/dk_images/jdk1.8_maven3.6/jdk1.8
# 安装maven,同jdk一样。注意这俩个解压包是下下来解压之后的包,这里我被网上的坑过
COPY apache-maven-3.6.3 /opt/containerd/dk_images/jdk1.8_maven3.6/apache-maven-3.6.3
# 设置环境变量
ENV JAVA_HOME=/opt/containerd/dk_images/jdk1.8_maven3.6/jdk1.8
ENV MAVEN_HOME=/opt/containerd/dk_images/jdk1.8_maven3.6/apache-maven-3.6.3
ENV PATH=$PATH:$JAVA_HOME/bin:$MAVEN_HOME/bin
# 设置时区
RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
RUN echo 'Asia/Shanghai' >/etc/timezone
以上的文件最好和jdk、maven 包放在一起不然会出现copy失败,提示找不到文件。
# 构建容器jdk1.8_maven3.6命令,后面的. 表示在当前文件夹下,-f 后面的就是你所编写dockerFile,-t后面的是容器的名字
docker build -f jdk1.8_maven3.6 -t jdk1.8_maven3.6 .
构建完成后查看镜像
docker images
docker run -it jdk1.8_maven3.6 /bin/bash
docker run -itd jdk1.8_maven3.6 /bin/bash 这个命令退出是后台启动容器
进入容器内,如下图,并验证java环境是否装好
在自制镜像的基础上,运行java程序
写好一个可以访问的页面程序,这里本人使用spring boot 写的简单页面。使用idea打包后上传到所在服务器,和之前的制作镜像方式一样。
# 这里是使用自己构建的镜像,也可以使用其他的镜像可以从docker上拉取,比如说java:8 等
FROM jdk1.8_maven3.6
#维护者信息
MAINTAINER zxf
# 安装JDK
COPY test_es.jar /opt/containerd/dk_images/jar/test_es.jar
#要执行的命令,这里使用的是-jar命令 ,最好写容器里jar所在的绝对路径不然会找不到jar包,也可以使用cp 命令和在普通服务器上执行的命令一样
CMD java -jar /opt/containerd/dk_images/jar/test_es.jar
#构建容器
docker build -f test_es -t test_es .
构建完成后可以使用 docker images 查看镜像。
# -d是后台运行并返回容器id,-p 指定端口映射,格式为:主机(宿主)端口:容器端口
运行:docker run -d -p 8888:8080 test_es
如下图:
# -d是后台运行并返回容器id,-p 指定端口映射,格式为:主机(宿主)端口:容器
端口
运行:docker run -d -p 8888:8080 test_es
如下图: