docker导入导出镜像和容器,离线部署项目

准备工作

内网环境部署项目,配置环境比较繁琐。使用docker导入导出镜像和容器功能,在有网的服务器创建好项目环境并导出,直接在内网服务器导入即可。

离线安装

1、下载docker安装包
在官网下载docker 安装二进制包,选择适合自己的版本。这里下载的是docker-18.06.1-ce.tgz,在centos7中安装。
下载地址: https://download.docker.com/linux/static/stable/x86_64/
2、复制docker-18.06.1-ce.tgz到服务器上
在这里插入图片描述
3、准备配置文件
创建并编辑文件

vi docker.service

文件内容

docker.service
 
[Unit]
Description=Docker Application Container Engine
Documentation=https://docs.docker.com
After=network-online.target firewalld.service
Wants=network-online.target
 
[Service]
Type=notify
# the default is not to use systemd for cgroups because the delegate issues still
# exists and systemd currently does not support the cgroup feature set required
# for containers run by docker
ExecStart=/usr/bin/dockerd
ExecReload=/bin/kill -s HUP $MAINPID
# Having non-zero Limit*s causes performance problems due to accounting overhead
# in the kernel. We recommend using cgroups to do container-local accounting.
LimitNOFILE=infinity
LimitNPROC=infinity
LimitCORE=infinity
# Uncomment TasksMax if your systemd version supports it.
# Only systemd 226 and above support this version.
#TasksMax=infinity
TimeoutStartSec=0
# set delegate yes so that systemd does not reset the cgroups of docker containers
Delegate=yes
# kill only the docker process, not all processes in the cgroup
KillMode=process
# restart the docker process if it exits prematurely
Restart=on-failure
StartLimitBurst=3
StartLimitInterval=60s
 
[Install]
WantedBy=multi-user.target

4、创建安装脚本
创建并编辑脚本

vi install.sh

脚本内容

#!/bin/sh
echo '解压tar包...'
sudo tar -xvf $1
echo '将docker目录移到/usr/bin目录下...'
sudo cp docker/* /usr/bin/
echo '将docker.service 移到/etc/systemd/system/ 目录...'
sudo cp docker.service /etc/systemd/system/
echo '添加文件权限...'
sudo chmod +x /etc/systemd/system/docker.service
echo '重新加载配置文件...'
sudo systemctl daemon-reload
echo '启动docker...'
sudo systemctl start docker
echo '设置开机自启...'
sudo systemctl enable docker.service
echo 'docker安装成功...'
docker -v

5、执行脚本安装

sh install.sh docker-18.06.1-ce.tgz

看到版本号即为安装成功
在这里插入图片描述
6、创建卸载脚本
创建并编辑脚本

vi uninstall.sh

脚本内容

#!/bin/sh
echo '删除docker.service...'
sudo rm -f /etc/systemd/system/docker.service
echo '删除docker文件...'
sudo rm -rf /usr/bin/docker*
echo '重新加载配置文件'
sudo systemctl daemon-reload
echo '卸载成功...'

7、执行脚本卸载

sh uninstall.sh

卸载成功
在这里插入图片描述

制作镜像

1、准备一个简单的eureka服务的jar包
在这里插入图片描述
百度网盘链接:https://pan.baidu.com/s/11GegZ_fyyOLpsZ-5sXJr4g ,提取码:qm01
2、上传到服务器
在这里插入图片描述
3、制作Dockerfile脚本

vi Dockerfile

脚本内容

echo '指定基础镜像'
FROM openjdk:8-jdk-alpine
echo '定义一个变量,接收入参'
ARG JAR_FILE
echo '复制文件到容器根目录'
COPY ${JAR_FILE} app.jar
echo '暴漏容器运行时的监听端口给外部'
EXPOSE 10086
echo '容器启动时运行得启动命令'
ENTRYPOINT ["java","-jar","/app.jar"]

4、构建镜像

docker build --build-arg JAR_FILE=tensquare_eureka_server-1.0-SNAPSHOT.jar -t eureka:v1 .
  • JAR_FILE:jar名称
  • eureka:v1:镜像名称和标签
  • .:代表在当前目录寻找Dockerfile文件

没有基础镜像的会在第一次运行时拉取镜像。
在这里插入图片描述
5、查看镜像是否创建成功

docker images

在这里插入图片描述

制作容器

docker run -i --name=eureka -p 10086:10086 eureka:v1

制作时可以看到启动日志,根据日志可以确认项目是否启动成功。启动成功可以退出。
在这里插入图片描述
查看创建好的容器
在这里插入图片描述

运行容器

1、启动容器
在这里插入图片描述
2、开放端口或关闭防火墙
开放端口

firewall-cmd --zone=public --add-port=10086/tcp --permanent
firewall-cmd --reload

关闭防火墙

systemctl stop firewalld

3、访问eureka服务
在这里插入图片描述

镜像导入导出

导出镜像

1、导出命令

docker save [options]  images [images...]

2、导出镜像到当前目录

docker save -o eureka.tar eureka

3、查看导出的镜像
在这里插入图片描述

导入镜像

1、把导出的镜像上传到另外一台内网环境的服务器
在这里插入图片描述

2、导入命令

docker load [options]

3、导入当前目录下的镜像

docker load -i eureka.tar

4、导入并查看镜像
在这里插入图片描述

制作容器

1、创建容器

docker run -i --name=eureka -p 10086:10086 eureka:v1

制作时可以看到启动日志,根据日志可以确认项目是否启动成功。启动成功可以退出。
2、运行容器

docker start eureka

启动成功
在这里插入图片描述
3、访问eureka服务
在这里插入图片描述

容器导入导出

导出容器

1、导出命令

docker export [options]  container

2、导出容器到当前目录

docker export -o eureka_container.tar eureka

3、查看导出的容器

在这里插入图片描述

导入容器

1、删除之前创建的容器

docker rm eureka

容器如果在运行需要停止后再删除
在这里插入图片描述

2、把导出的容器上传到另外一台内网环境的服务器
在这里插入图片描述
3、导入命令

docker import [options] file|URL|- [REPOSITORY[:TAG]]

3、导入当前目录下的容器

docker import eureka_container.tar eureka:v1

4、导入并查看镜像
在这里插入图片描述

制作容器

1、创建容器

docker run -i --name=eureka -p 10086:10086 eureka:v1

报错了:docker: Error response from daemon: No command specified
制作时可以看到启动日志,根据日志可以确认项目是否启动成功。启动成功可以退出。
原因是被docker export出来的镜像在启动的时候需要指定command
把外网服务器中的command内容复制到创建容器命令后面即可。(不需要括号)
在这里插入图片描述
最终创建容器命令

docker run -i --name=eureka -p 10086:10086 eureka:v1 java -jar /app.jar

创建成功
在这里插入图片描述

2、运行容器

docker start eureka

启动成功
在这里插入图片描述
3、访问eureka服务
在这里插入图片描述

  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值