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
- 上传jar到服务器的指定目录
- 在该目录下创建Dockerfile 文件
//注意名称哦,我刚开始使用dockerFile,在生成镜像的时候都没成功,具体原因希望大神可以评论告知
vi Dockerfile
- 然后将下面的内容复制到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
- 创建好Dockerfile文件之后,执行命令 构建镜像:
docker build -t myDemo .
注意最后的 . 表示 Dockerfile 文件在当前目录下
myDemo为构建后的镜像名称
- 镜像构建成功之后,就可以运行容器了:
# -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
- 然后docker ps 看看你的容器有没有在运行即可
- 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包即可