Docker

  • yum安装docker
  • 安装步骤
  • Docker卸载启动查看日志等命令
  • Docker常用命令
  • Docker启动jar包
  • 方式1
  • 自动部署
  • 方式2


yum安装docker

安装步骤

1.Docker 要求 CentOS 系统的内核版本高于 3.10 ,查看本页面的前提条件来验证你的CentOS 版本是否支持 Docker 
查看版本信息命令:uname -r

2.确保yum包更新到最新:
sudo yum update
如果安装过旧版本的话,卸载旧版本
sudo yum remove docker  docker-common docker-selinux docker-engine

3.安装需要的软件包, yum-util 提供yum-config-manager功能,另外两个是devicemapper驱动依赖的
sudo yum install -y yum-utils device-mapper-persistent-data lvm2

4.设置yum源
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

5.安装docker
可以查看所有仓库中所有docker版本,并选择特定版本安装
yum list docker-ce --showduplicates | sort -r

6.安装docker
sudo yum install docker-ce  #由于repo中默认只开启stable仓库,故这里安装的是最新稳定版18.03.1
或者指定安装版本
 sudo yum install <FQPN>  # 例如:sudo yum install docker-ce-17.12.0.ce

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

Docker卸载启动查看日志等命令

卸载旧版本命令
sudo yum erase docker-common-2:1.12.6-68.gitec8512b.el7.centos.x86_64

启动并加入开机启动
sudo systemctl start docker
sudo systemctl enable docker

启动 systemctl start docker
守护进程重启 sudo systemctl daemon-reload
重启docker服务 systemctl restart docker
重启docker服务 sudo service docker restart
关闭docker service docker stop
关闭docker systemctl stop docker

查看日志:
docker logs 容器名称
查看容器
docker ps -all
查看运行容器
docker ps
查看容器ip
docker inspect 容器名称

创建并运行容器:
docker run -d --name 容器名称 -p 宿主端口:容器端口 -v 宿主路径:容器路径 镜像名称

Docker常用命令

  • docker version 查看版本
  • systemctl start docker 启动Docker
  • docker images 查看镜像
  • docker search 软件名称 查询指定软件
  • docker pull 软件名称 下载镜像
  • docker create --name 容器名称 -p 宿主端口:容器端口 镜像名称 创建容器
  • docker start 容器名称 启动容器
  • docker stop 容器名称 停止容器
  • docker rm 容器名称 删除容器
  • docker logs 容器名称 查看容器日志
  • docker run --name 容器名称 -p 宿主端口:容器端口 镜像名称 创建并运行容器
  • docker exec -it 容器名称 bash 进入到容器内部

Docker启动jar包

方式1

  1. 上传jar到服务器的指定目录
  2. 在该目录下创建Dockerfile 文件
//注意名称哦,我刚开始使用dockerFile,在生成镜像的时候都没成功,具体原因希望大神可以评论告知
 vi Dockerfile
  1. 然后将下面的内容复制到Dockerfile文件中
FROM java:8
MAINTAINER bingo
ADD demo-0.0.1-SNAPSHOT.jar demo.jar
EXPOSE 8080
ENTRYPOINT ["java","-jar","demo.jar"]

# from java:8   拉取版本为8镜像名称为java的镜像,如果存在即使用

# maintainer  作者是bingo

# 第三行作用是简化jar名称

# demo-0.0.1-SNAPSHOT.jar 就是你上传的jar包,替换为jar包的名称

# demo.jar  是你将该jar包重新命名为什么名称,在容器中运行

#  expose  该容器暴露的端口是多少,就是jar在容器中以多少端口运行

# entrypoint 容器启动之后执行的命令,java -jar demo.jar  即启动jar
  1. 创建好Dockerfile文件之后,执行命令 构建镜像:
docker build -t myDemo .
      
 注意最后的 .  表示 Dockerfile 文件在当前目录下
 myDemo为构建后的镜像名称
  1. 镜像构建成功之后,就可以运行容器了:
#  -d 后台运行、
#  最后一个 myDemo 是引用的镜像的名字、就是刚才创建镜像的名字
#  --name demo 给容器取名为 demo (取名参数前面是两短横线)、
#  -p 8080:8080 端口映射,注意是小写 p 
# 前一个 8080 是对外浏览器上访问的端口,后一个 8080 是容器内工程本身的端口,两者可不一样
# --restart=always  这个表示docker容器在停止或服务器开机之后会自动重新启动 

    docker run -d --restart=always --name demo -p 8080:8080  myDemo
  1. 然后docker ps 看看你的容器有没有在运行即可
  2. docker logs --tail 300 -f demo 查看启动日志

自动部署

这段代码为自动部署脚本,从别处摘抄过来,侵删

切换至jar目录
cd gentle_code
 
# 备份原代码
tar -zcvf gentle.tar ./gentle
 
# 删除原代码文件夹
rm -rf gentle
 
# 拉取代码
echo -e "\033[32m\n从git拉取代码\n\033[0m"
git clone https://gitee.com/FJ_WoMenDeShiJie/gentle.git
echo -e "\033[32m\n代码拉取完成\n\033[0m"
 
# 工程打包
cd gentle
rm -rf ./target/gentle-1.0-SNAPSHOT.jar
 
echo -e "\033[32m\n开始打jar包\n\033[0m"
mvn install -Dmaven.test.skip=true
rm -rf ../../jar/gentle-1.0-SNAPSHOT.jar
cp ./target/gentle-1.0-SNAPSHOT.jar ../../jar
echo -e "\033[32m\njar包完成\n\033[0m"
 
# 删除原镜像
docker rmi gentle &> /dev/null
echo -e "\033[32m\n删除原镜像\n\033[0m"
echo -e "\033[32m\n构建新镜像\n\033[0m"
 
cd ../../
docker build -t gentle .
echo -e "\033[32m\n新镜像构建成功\n\033[0m"
 
# 删除原容器
docker rm -f gentle
 
# 启动容器
docker run -d -p 8089:8089 --name gentle gentle
echo  -e "\033[32m\n后端工程部署完成\n\033[0m"

方式2

就是运行一个jdk的容器,然后挂载其中的目录到宿主机,然后运行之后,就可以将需要运行的jar放在宿主机的挂载目录下,然后每次重新运行docker容器即可。不用每次发布需要重新构建docker容器,只需要替换宿主机中的jar包即可