Windows下的操作
将你的项目打包,此处以IDEA为例,右侧的Maven窗口点击install
打包完成后,文件会生成于项目目录的target目录下
Linux下的操作
指定一个文件夹作为操作目录,创建Dockerfile文件,可以使用touch或vim命令创建,写入以下内容
#使用JAVA作为基础镜像
FROM java:8
#指定要开放的端口
EXPOSE 8700
EXPOSE 3306
#指定JDK的环境目录
ENV JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
#添加外置的配置文件到容器
ADD config /config
#将项目的包添加到容器
ADD demo.jar /
#指定工作目录
WORKDIR /
#最后执行
CMD java -jar demo.jar
对于基础镜像的使用,参考https://www.cnblogs.com/ringwang/p/11967612.html
创建docker镜像
docker build -t docker-demo .
build 是创建命令 ,-t 是指定target 名称,docker-demo 就是镜像名称 ,. 指的是在当前目录下 寻找 Dockerfile文件。
查看镜像列表
docker image
运行容器
docker run -it -p 80:8080 docker-demo
run 运行镜像 -it以交互模式运行容器并为容器重新分配一个伪输入终端 -p 端口映射,格式为:主机(宿主)端口:容器端口 ,含义是将服务器中的80端口映射到容器中的8080,当我们访问80端口时,会访问到容器的8080端口。最后的就是我们刚刚创建的镜像名称
如果指定了暴露端口但是仍旧无法使用时,可以换用如下指令。
docker run -it --network=host demo
其他用法
在使用docker run命令启动容器的时候,可以通过--net参数来指定容器的网络配置。
有5个可选值bridge、none、container、host和用户定义的网络:
--net=bridge:默认值,在Docker网桥docker0上为容器创建新的网络栈。
--net=none:让Docker将新容器放到隔离的网络栈中,但是不进行网络配置。之后,用户可以自行进行配置。
--net=container:NAME_or_ID:让Docker将新建容器的进程放到一个已存在容器的网络栈中,新容器进程有自己的文件系统、进程列表和资源限制,但会和已存在的容器共享IP地址和端口等网络资源,两者进程可以直接通过lo环回接口通信。
--net=host:告诉Docker不要将容器网络放到隔离的命名空间中,即不要容器化容器内的网络。此时容器使用本地主机的网络,它拥有完全的本地主机接口访问权限。容器进程可以跟主机其他root进程一样打开低范围的端口,可以访问本地网络服务,比如D-bus,还可以让容器做一些影响整个主机系统的事情,比如重启主机。因此使用这个选项的时候要非常小心。如果进一步的使用--privileged=true参数,容器甚至会被允许直接配置主机的网络栈。
--net=user_defined_network:用户自行用network相关命令创建一个网络,通过这种方式将容器连接到指定的已创建网络上去。
查看运行中的镜像
docker ps
在Docker中部署Mysql可参看
https://blog.csdn.net/dhaiuda/article/details/82228186
其他案例参考: