ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

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

2021-11-20 10:33:39  阅读:178  来源: 互联网

标签:容器 ... 离线 echo 镜像 docker eureka


准备工作

内网环境部署项目,配置环境比较繁琐。使用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服务
在这里插入图片描述

标签:容器,...,离线,echo,镜像,docker,eureka
来源: https://blog.csdn.net/weixin_44188501/article/details/121434641

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有