配置本地docker与镜像并上传到服务器使用

1.在本地创建基础容器(官网

1)卸载旧版本(如果有)

sudo apt-get remove docker docker-engine docker.io containerd runc

2)设置Docker的存储库并从中安装
更新包索引并安装包以允许通过 HTTPS 使用存储库:apt apt

sudo apt-get update
sudo apt-get install \
    ca-certificates \
    curl \
    gnupg \
    lsb-release

3)添加泊坞的官方 GPG 密钥

 sudo mkdir -p /etc/apt/keyrings
 curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg

4)使用以下命令设置存储库:

echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
  $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

5)安装docker引擎
更新包索引,并安装最新版本的 Docker 引擎、容器化和 Docker 撰写

sudo apt-get update
 sudo apt-get install docker-ce docker-ce-cli containerd.io docker-compose-plugin

6)通过运行映像来验证是否正确安装了 Docker 引擎。hello-world

sudo service docker start
 sudo docker run hello-world

2.Docker国内镜像源

创建或修改 /etc/docker/daemon.json 文件 (daemon.json文件官方文档)

$ sudo vim /etc/docker/daemon.json
添加 文件内容

{
  "registry-mirrors" : [
    "http://registry.docker-cn.com",
    "http://docker.mirrors.ustc.edu.cn",
    "http://hub-mirror.c.163.com"
  ],
  "insecure-registries" : [
    "registry.docker-cn.com",
    "docker.mirrors.ustc.edu.cn"
  ],
  "debug" : true,
  "experimental" : true
}

然后重启docker

$ sudo systemctl daemon-reload

设置普通用户使用 ,将当前登录用户加入到docker用户组中
$ sudo gpasswd -a $USER docker
#更新用户组
$ newgrp docker
#测试docker命令普通用户是否可以正常使用
$ docker ps

通过运行映像来验证是否正确安装了 Docker 引擎。hello-world

sudo service docker start
 sudo docker run hello-world

得到这样的输出就是成功了
得到这样的输出就是成功了

3.在本地pull镜像(针对服务器没网的情况),创建容器(官网

docker pull  pytorch/pytorch:1.9.1-cuda11.1-cudnn8-devel 

在本地创建容器(并赋予共享空间15G)

docker run -itd --name=fy(名字)   --shm-size 15g   -v /home/fy(名字)/workspace/:/workspace pytorch/pytorch:1.9.1-cuda11.1-cudnn8-devel /bin/bash

进入容器

docker exec -it fy(名字)/bin/bash

4.在本地导出此镜像,并部署到服务器

docker save -o mypeerimage.tar pytorch/pytorch:1.9.1-cuda11.1-cudnn8-devel

在本地会生成一个mypeerimage.tar的tar文件,打包到服务器并使用下面命令将此镜像在服务器解压

docker load < mypeerimage.tar

5.连接进入服务器,重复第三步中几步

在本地创建容器(并赋予共享空间15G)

docker run -itd --name=fy(=(名字)   --shm-size 15g   -v /home/fy(名字)/workspace/:/workspace pytorch/pytorch:1.9.1-cuda11.1-cudnn8-devel /bin/bash

进入容器

docker exec -it fy(名字)/bin/bash

到此就设置好了,把代码程序上传到服务器的…/workspace目录下就可以使用了。

ls查看此目录下的文件

6.docker常用的命令

  1. docker ps 查看运行的容器
  2. docker ps -a 查看所有容器
  3. docker start fy 运行容器
  4. docker exec -it fy /bin/bash 进入容器
  5. docker stop fy 停止容器
  6. docker rm fy 删除容器
  7. docker images 查看镜像
  8. docker rmi x 删除x镜像
  9. mkdir 创建文件夹
  10. rm -rf 文件夹名 删除文件夹
  11. docker cp 容器ID: 路径 宿主机路径 不同容器中复制文件
  12. docker cp 文件名 容器ID/容器名:路径 复制文件到容器目录下
  13. pwd 查看此目录的绝对路径
### 使用 Dockerfile 创建容器镜像将其推送到远程服务器运行 #### 准备工作 在开始之前,需确认以下条件已满足: - 已安装 Docker 环境。 - 配置好远程私有仓库的访问权限[^2]。 --- #### 编写 Dockerfile Dockerfile 是用于定义镜像构建过程的脚本文件。以下是典型的 Dockerfile 示例: ```dockerfile # 基础镜像 FROM openjdk:17-jdk-slim # 设置工作目录 WORKDIR /app # 复制项目依赖和资源文件到容器中 COPY target/ruoyi-admin.jar /app/ruoyi-admin.jar # 定义环境变量(可选) ENV APP_NAME=ruoyi-admin # 暴露应用端口 EXPOSE 8080 # 启动命令 CMD ["java", "-jar", "/app/ruoyi-admin.jar"] ``` 上述 Dockerfile 中的关键部分解释如下: - `FROM` 指定基础镜像。 - `WORKDIR` 设定容器内的默认工作目录。 - `COPY` 将本地文件复制到镜像中的指定位置。 - `EXPOSE` 声明容器运行时监听的网络端口。 - `CMD` 定义容器启动时执行的命令[^1]。 --- #### 构建镜像 使用 Maven 插件 `docker-maven-plugin` 或手动命令来构建镜像。 ##### 方法一:Maven 插件构建 在项目的 `pom.xml` 文件中配置插件: ```xml <plugin> <groupId>com.spotify</groupId> <artifactId>docker-maven-plugin</artifactId> <version>1.2.2</version> <configuration> <imageName>${project.artifactId}:${project.version}</imageName> <dockerDirectory>src/main/docker</dockerDirectory> <resources> <resource> <targetPath>/</targetPath> <directory>${project.build.directory}</directory> <include>${project.build.finalName}.jar</include> </resource> </resources> </configuration> </plugin> ``` 执行以下命令完成镜像构建: ```bash mvn clean package docker:build ``` ##### 方法二:手动命令构建 如果未使用 Maven 插件,则可以通过以下命令手工构建镜像: ```bash docker build -t your-repository-name/admin-image:latest . ``` 其中 `-t` 参数为镜像命名,`.` 表示当前目录下的 Dockerfile 被解析[^4]。 --- #### 推送镜像至远程仓库 将构建好的镜像推送至远程私有仓库前,先登录目标仓库: ```bash docker login registry.cn-beijing.aliyuncs.com ``` 随后执行推送操作: ```bash docker push registry.cn-beijing.aliyuncs.com/your-repo/admin-image:latest ``` 此步骤会将镜像上传至指定的远程仓库地址。 --- #### 在远程服务器上拉取运行镜像 假设远程服务器已安装 Docker具备访问私有仓库的权限。 1. **停止旧容器** 如果已有相同名称的容器正在运行,需先停止删除它: ```bash docker stop ruoyi && docker rm ruoyi ``` 2. **移除旧镜像** 清理不再使用的旧版本镜像: ```bash docker rmi -f admin-image ``` 3. **拉取最新镜像** 从远程仓库下载最新的镜像: ```bash docker pull registry.cn-beijing.aliyuncs.com/your-repo/admin-image:latest ``` 4. **基于新镜像启动容器** 使用以下命令启动容器: ```bash docker run -d --name ruoyi -p 80:8080 registry.cn-beijing.aliyuncs.com/your-repo/admin-image:latest ``` 上述命令中: - `-d` 表示以后台模式运行容器。 - `-p` 映射主机端口容器内部端口。 - `--name` 指定容器名称[^3]。 --- ### 总结 通过编写 Dockerfile 和相关工具链,可以实现自动化构建、推送及部署流程。整个过程中涉及的主要环节包括镜像构建、推送至远程仓库以及在目标环境中运行容器。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值