Docker创建和使用
当前环境contOS7 打包好的xxxx.jar
一、安装docker
是虚拟机装的Centos7,linux 3.10 内核,docker官方说至少3.8以上,建议3.10以上(ubuntu下要linux内核3.8以上, RHEL/Centos 的内核修补过, centos6.5的版本就可以——这个可以试试)
1,root账户登录,查看内核版本如下
[root@localhost ~]# uname -a
Linux localhost.qgc 3.10.0-862.11.6.el7.x86_64 #1 SMP Tue Aug 14 21:49:04 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux
[root@localhost ~]# yum update
[root@localhost ~]# yum install -y yum-utils device-mapper-persistent-data lvm2
[root@localhost ~]# yum-config-manager --add-repo
[root@localhost ~]# yum list docker-ce --showduplicates | sort -r
[root@localhost ~]# yum install docker-ce-17.12.1.ce
或
[root@localhost ~]# yum install docker ce (自动最新版本的安装)
[root@localhost ~]# systemctl start docker
[root@localhost ~]# systemctl enable docker
Created symlink from /etc/systemd/system/multi-user.target.wants/docker.service to /usr/lib/systemd/system/docker.service.
[root@localhost ~]# docker version
常用docker 命令:
----------------- docker ps 查看当前正在运行的容器
----------------- docker ps -a 查看所有容器的状态
----------------- docker start/stop id/name 启动/停止某个容器
----------------- docker attach id 进入某个容器(使用exit退出后容器也跟着停止运行)
----------------- docker exec -ti id 启动一个伪终端以交互式的方式进入某个容器(使用exit退出后容器不停止运行)
----------------- docker images 查看本地镜像
----------------- docker rm id/name 删除某个容器
----------------- docker rmi id/name 删除某个镜像
----------------- docker run --name test -ti ubuntu /bin/bash 复制ubuntu容器并且重命名为test且运行,然后以伪终端交互式方式进入容器,运行bash
----------------- docker build -t soar/centos:7.1 . 通过当前目录下的Dockerfile创建一个名为soar/centos:7.1的镜像
----------------- docker run -d -p 2222:22 --name test soar/centos:7.1 以镜像soar/centos:7.1创建名为test的容器,并以后台模式运行,并做端口映射到宿主机2222端口,P参数重启容器宿主机端口会发生改变
二、程序部署docker 上
1.可以运行jar包的环境
2.机器上已经安装了docker
3.准备部署的springboot的jar包
4.Dockerfile文件
前三条都很容准备,创建一个Dockerfile:
FROM java:8
VOLUME /tmp
ADD dalaoyang_mgr.jar /dalaoyang.jar
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/dalaoyang.jar"]
1.java:8 是使用jdk版本
2.dalaoyang_mgr.jar是使用jar包名称
3.ADD dalaoyang_mgr.jar /dalaoyang.jar 拷贝jar到容器
4.ENTRYPOINT 执行jar文件
将Dockerfile和jar放在一个文件夹,使用下面命令生成镜像,注意最后的.
docker build -t dalaoyang .
注意:dalaoyang是生成的镜像名称。
更多docker build命令可以查看菜鸟教程
查看一下docker镜像
docker images
如图,可以看到已经有了一个名称为dalaoyang的镜像
docker run -d -p 9000:9000 dalaoyang
1.-d 后台运行
2.-p 9000:9000 将docker容器的9000端口映射到服务器上的9000端口
到这里就配置完成了,在浏览器使用:服务器ip:9000就能访问docker容器内部署的springboot项目了。
常用命令:
容器操作:
docker create # 创建一个容器但是不启动它
docker run # 创建并启动一个容器
docker stop # 停止容器运行,发送信号SIGTERM
docker start # 启动一个停止状态的容器
docker restart # 重启一个容器
docker rm # 删除一个容器
docker kill # 发送信号给容器,默认SIGKILL
docker attach # 连接(进入)到一个正在运行的容器
docker wait # 阻塞一个容器,直到容器停止运行
获取容器信息:
docker ps # 显示状态为运行(Up)的容器
docker ps -a # 显示所有容器,包括运行中(Up)的和退出的(Exited)
docker inspect # 深入容器内部获取容器所有信息
docker logs # 查看容器的日志(stdout/stderr)
docker events # 得到docker服务器的实时的事件
docker port # 显示容器的端口映射
docker top # 显示容器的进程信息
docker diff # 显示容器文件系统的前后变化
导出容器:
docker cp # 从容器里向外拷贝文件或目录
docker export # 将容器整个文件系统导出为一个tar包,不带layers、tag等信息
执行:
docker exec # 在容器里执行一个命令,可以执行bash进入交互式
镜像操作:
docker images # 显示本地所有的镜像列表
docker import # 从一个tar包创建一个镜像,往往和export结合使用
docker build # 使用Dockerfile创建镜像(推荐)
docker commit # 从容器创建镜像
docker rmi # 删除一个镜像
docker load # 从一个tar包创建一个镜像,和save配合使用
docker save # 将一个镜像保存为一个tar包,带layers和tag信息
docker history # 显示生成一个镜像的历史命令
docker tag # 为镜像起一个别名
镜像仓库(Registry)操作:
docker login # 登录到一个registry
docker search # 从registry仓库搜索镜像
docker pull # 从仓库下载镜像到本地
docker push # 将一个镜像push到registry仓库中
三、docker重新部署(在当前有程序在运行时)
1.(查看当前运行)[root@localhost javaoption]# docker ps -a
2.(停止)[root@localhost javaoption]# docker stop 16d5683e31e4
3.(删除)[root@localhost javaoption]# docker rm 16d5683e31e4
4.(查看镜像)[root@localhost javaoption]# docker images
8.(启动)[root@localhost javaoption]# docker run -d -p 8081:8081 xxxx
[root@localhost javaoption]# docker logs a421c73b454e
[root@localhost javaoption]# docker pull nginx
FROM nginx:latest
MAINTAINER xx
COPY dist/ /usr/share/nginx/html/
[root@localhost htmloption]# docker build -t xxxx_html .
[root@localhost htmloption]# docker run -d -p 8080:80 xxxx_html
.(查看当前运行)[root@localhost javaoption]# docker ps -a
2.(停止)[root@localhost javaoption]# docker stop 16d5683e31e4
3.(删除)[root@localhost javaoption]# docker rm 16d5683e31e4
4.(查看镜像)[root@localhost javaoption]# docker images
8.(启动)[root@localhost javaoption]# docker run -d -p 8080:80 xxxx_html
[root@localhost javaoption]# docker logs a421c73b454e
1.Centos7 查看防火墙:
[root@localhost htmloption]# firewall-cmd --list-all
2.永久开放端口:
[root@localhost htmloption]# firewall-cmd --zone=public --add-port=8080/tcp --permanent
3.重新加载更改过的防火墙信息:
[root@localhost htmloption]# firewall-cmd --reload
4.网络设置
docker network create --driver bridge --subnet=172.31.0.1/24 hysoft_net
docker run -dit --name cbs.host -e JVM_ARGS="-Xmx512m -Xms256m -Xmn512m -Xss1024k" --network hysoft_net --ip 172.31.0.11 --restart=always -p 8801:8440 -v /usr/local/hysoft/cbs/:/usr/local/hysoft/ com.soft:5000/business/boot:8.0
--name cbs.host 指定容器名称 上例中容器名称就是cbs.host
-e JVM_ARGS="-Xmx512m -Xms256m -Xmn512m -Xss1024k" 指设定的JVM参数,此部分也可去掉,去掉后用默认的JVM参数;
--network hysoft_net 是指用hysoft_net这个网桥
--ip 172.31.0.11 是设定ip,这个ip可以自己设定
-p 8801:8440 是指端口映射,其中8801指宿主机端口,8440是指容器端口,容器8440端口是docker镜像制作的时候指定的端口,jar里的应用端口也必须是8440
-v /usr/local/hysoft/cbs/:/usr/local/hysoft/ 是指文件映射,其中/usr/local/hysoft/cbs/是宿主机映射路径,/usr/local/hysoft/是指容器映射路径,连起来就是容器路径映射到了宿主机上,所以业务包只需要放到/usr/local/hysoft/cbs/即可,这个映射不要改变。