docker搭建、基本使用、部署项目

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

  1. 把yum包更新到最新

[root@localhost ~]# yum update

  1. 安装需要的软件包, yum-util 提供yum-config-manager功能,另外两个是devicemapper驱动依赖

[root@localhost ~]# yum install -y yum-utils device-mapper-persistent-data lvm2

  1. 设置yum源

[root@localhost ~]# yum-config-manager --add-repo

  1. 可以查看所有仓库中所有docker版本,并选择特定版本安装

[root@localhost ~]# yum list docker-ce --showduplicates | sort -r

  1. 安装Docker,命令:yum install docker-ce-版本号,我选的是17.12.1.ce,如下

[root@localhost ~]# yum install docker-ce-17.12.1.ce

[root@localhost ~]# yum install docker ce (自动最新版本的安装)

 

  1. 启动Docker,命令:systemctl start docker,然后加入开机启动,如下

[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.

  1. 验证安装是否成功(有client和service两部分表示docker安装启动都成功了)

[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.前提条件:

1.可以运行jar包的环境
2.机器上已经安装了docker
3.准备部署的springboot的jar包
4.Dockerfile文件

2.准备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文件

3.生成docker镜像

将Dockerfile和jar放在一个文件夹,使用下面命令生成镜像,注意最后的.

docker build -t dalaoyang .

注意:dalaoyang是生成的镜像名称。

更多docker build命令可以查看菜鸟教程

查看一下docker镜像

docker images

如图,可以看到已经有了一个名称为dalaoyang的镜像

4.运行Docker容器

代码如下

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

 

  1. (移除镜像)[root@localhost javaoption]# docker rmi d20ba789d337
  2. 替换jar包、Dockerfile 文件
  3. (通过Dockerfile 创建容器)[root@localhost javaoption]# docker build -t xxxx.

 

8.(启动)[root@localhost javaoption]# docker run -d -p 8081:8081 xxxx

 

  1. 打印控制台信息(a421c73b454e 容器id)

[root@localhost javaoption]# docker  logs a421c73b454e

  • docker部署前台node+vue
  1. docker下载nginx镜像

[root@localhost javaoption]# docker pull nginx

 

  1. 将编译后的前台上传服务器中一个文件夹中 打包命令:npm run build (前台编译文件)dict文件夹和Dockerfile
  2. Dockerfile 文件内容

FROM nginx:latest

MAINTAINER xx

COPY dist/ /usr/share/nginx/html/

  1. 创建镜像

[root@localhost htmloption]# docker  build -t xxxx_html .

 

  1. 运行镜像

[root@localhost htmloption]# docker run -d -p 8080:80 xxxx_html

 

  • docker部署前台node+vue(重新部署,在当前已经有程序在运行)

.(查看当前运行)[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

 

  1. (移除镜像)[root@localhost javaoption]# docker rmi d20ba789d337
  2. 替换jar包、Dockerfile 文件
  3. (通过Dockerfile 创建容器)[root@localhost javaoption]# docker  build -t xxxx_html .

 

8.(启动)[root@localhost javaoption]# docker run -d -p 8080:80 xxxx_html

 

  1. 打印控制台信息(a421c73b454e 容器id)

[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/即可,这个映射不要改变。

 

 

你可能感兴趣的:(java,docker)