IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> docker使用与镜像提交 -> 正文阅读

[系统运维]docker使用与镜像提交

edited by nrzheng,20220224

创建镜像

要先准备两个文件,如下图所示:
在这里插入图片描述
其中,Dockerfile内容如下:

# BASE IMAGE
FROM nvidia/cuda:10.0-cudnn7-runtime-ubuntu16.04

SHELL ["/bin/bash","-c"]

WORKDIR /tmp
# copy安装文件
COPY Python-3.6.9.tar.xz /tmp
# 设置 root 密码
RUN echo 'root:password' | chpasswd \
# 安装openssh-server 并配置
  && apt-get update && apt-get -y install openssh-server \
  && sed -i 's/UsePAM yes/UsePAM no/g' /etc/ssh/sshd_config \ 
  && sed -i 's/PermitRootLogin prohibit-password/PermitRootLogin yes/g' /etc/ssh/sshd_config \
  && mkdir /var/run/sshd \
# 安装python依赖包
  && apt-get -y install build-essential python-dev python-setuptools python-pip python-smbus \
  && apt-get -y install build-essential libncursesw5-dev libgdbm-dev libc6-dev \
  && apt-get -y install zlib1g-dev libsqlite3-dev tk-dev \
  && apt-get -y install libssl-dev openssl \
  && apt-get -y install libffi-dev \
# 安装python 3.6.9
  && mkdir -p /usr/local/python3.6 \
  && tar xvf Python-3.6.9.tar.xz \
  && cd Python-3.6.9 \
  && ./configure --prefix=/usr/local/python3.6 \
  && make altinstall \
# 建立软链接
  && ln -snf /usr/local/python3.6/bin/python3.6 /usr/bin/python \
  && ln -snf /usr/local/python3.6/bin/pip3.6 /usr/bin/pip\
# 安装pytorch
  && mkdir ~/.pip && echo -e '[global] \nindex-url = https://pypi.tuna.tsinghua.edu.cn/simple' >> ~/.pip/pip.conf \
  && pip install torch===1.2.0 torchvision===0.4.0 -f https://download.pytorch.org/whl/torch_stable.html \
# 清理copy的安装文件
  && apt-get clean \
  && rm -rf /tmp/* /var/tmp/*

EXPOSE 22

CMD ["/bin/bash"]

使用dockerfile创建镜像,先写好Dockerfile,然后放到文件夹里(如上所示),之后在xshell中启用管理员权限,cd到文件夹里运行命令(注意后面有个点)(服务器要联网):

docker build -t + 镜像的名字:版本 .

在这里插入图片描述
运行后可以用命令docker images查看:
在这里插入图片描述
这样我们就创建了一个镜像。
接下来就是在镜像里创建,启动容器。(镜像是静态的,启动容器可以改变容器,但是不会改变镜像,然后再据此创建新的镜像,或者覆盖原来的镜像

创建容器

(在镜像yzc_znr的基础启动容器yzc_znr_container)

docker run -it --gpus all --name yzc_znr_container yzc_znr /bin/bash
  • –gpus all 才能用nvidia-smi查看
  • yzc_znr_container是容器的名字
  • yzc_znr就是刚刚用Dockerfile创建的镜像名字

(run之后就是在容器里了)
在这里插入图片描述
这样就创建了容器并且进入了容器
(可以使用exit退出容器,使用docker ps -a查看所有容器状态,用docker start + 容器id启动id,start只是启动而已,要进去还需要用docker attach + 容器id进入容器)

docker ps -a(查看所有容器状态)
docker start + 容器id启动id(启动容器)
docker attach + 容器id(进入容器)

(具体容器使用命令可以上网查询)

在本地设置好镜像

(比赛的提交过程)

设置容器

就是往容器里面放需要提交的东西,具体要求见上面的文档(没放)。创建工作空间(要求的)命令如下:

  • 退出tmp(dockerfile里面写的):cd
  • 进入/:cd /
  • 创建workspace(提交要求):mkdir workspace
  • 然后cd进去workspace

接下来就是往容器里面的workspace传需要提交的东西。本次比赛需要上传的有(ocr例子):
在这里插入图片描述
可以在window打包好需要的东西(解压出来是零散的文件,而不是文件夹)。再把压缩包传到服务器,再打开一个命令行把压缩包传到容器里,再进行解压。
压缩:
在这里插入图片描述
从服务器把压缩包传到容器:

docker cp /emwusr/zwb/znr/aaaa.zip a27001c20ee6:/workspace
(docker cp local-file-path container-id:container-path)
  • /emwusr/zwb/znr/aaaa.zip:就是要传的压缩包的路径
  • a27001c20ee6:/workspace:容器id:/workspace

再解压(解压完可以把压缩包删了):
在这里插入图片描述
然后要python运行一下那个py文件,把没有的包安装一下。
最后是这样(因为本地没有这两个文件夹):
在这里插入图片描述
(最后记得把运行的py文件改成‘run.py’(比赛提交要求),命令:)
至此,容器就弄好了

将容器改变写回镜像

先exit退出容器
将容器改变写回镜像并改变启动命令:

docker commit --change="WORKDIR /workspace" -c 'CMD ["python","run.py","/input_path", "/output_path"]' yzc_znr_container yzc_znr:v1
  • –change=“WORKDIR /workspace”:这里就是把工作文件夹改到workspace
  • yzc_znr_container:容器名字
  • yzc_znr:v1:镜像名字。可以弄一个新的镜像,如果用原来的镜像名字,就会把原来的覆盖(这里把原来的覆盖了)(注意下图镜像被覆盖,id也不一样了

在这里插入图片描述

创建阿里云仓库

网址
创建个人实例,设置Registry 登录密码,创建私有本地镜像仓库,如下图所示
(下面的内容根据自己的信息设置即可)
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
下面是操作指南:
在这里插入图片描述

把镜像传到阿里云

(操作指南看上面)
在本地连接到刚刚创建的阿里云:

docker login --username=damonx registry.cn-hangzhou.aliyuncs.com
  • damonx是阿里云的登陆账号
  • 之后会要输入密码

在这里插入图片描述
打标签:

docker tag 935dafae768f registry.cn-hangzhou.aliyuncs.com/damonzheng46/yzc_znr:aliyun
docker tag [ImageId] registry.cn-hangzhou.aliyuncs.com/damonzheng46/yzc_znr:[镜像版本号]

在这里插入图片描述
(可以看到id是一样的,就是tag不一样)

push到阿里云上面:

docker push registry.cn-hangzhou.aliyuncs.com/damonzheng46/yzc_znr:aliyun
docker push registry.cn-hangzhou.aliyuncs.com/damonzheng46/yzc_znr:[镜像版本号]

在这里插入图片描述
这样镜像就被传到阿里云上面了
在这里插入图片描述

把阿里云的镜像提交到比赛官网

这里的镜像名称就是:
docker pull registry.cn-hangzhou.aliyuncs.com/damonzheng46/yzc_znr:[镜像版本号]的后面这串registry.cn-hangzhou.aliyuncs.com/damonzheng46/yzc_znr:aliyun

在这里插入图片描述

非第一次提交

之后提交的话,就可以用之前创建的镜像再拉容器出来,然后更改容器里面的内容(如果原来的容器还在的话也可以直接在原来的容器改),再覆盖回镜像,再提交。

  • 更改容器里面的内容
  • 容器写回镜像(可以覆盖掉原来的,注意id就变了)
  • 再登陆阿里云,打tag,push。非第一次上传的话,push就很快了

在这里插入图片描述

一些命令

启动容器:docker run -it --gpus all --name container-name image-name /bin/bash
   
复制文件到容器:docker cp local-file-path container-id:container-path
   
将容器改变写会镜像:docker commit container-id image-name
   
将容器改变写会镜像,并修改启动命令:
docker commit --change="WORKDIR /workspace" -c 'CMD ["python","run.py","/input_path", "/output_path"]' container-name image-name
 
提交至阿里云仓库:
docker login --username=xxx registry.cn-hangzhou.aliyuncs.com
docker tag image-id registry.cn-hangzhou.aliyuncs.com/fudan_ewb_seg/gaofen_allright:v0.1
docker push registry.cn-hangzhou.aliyuncs.com/fudan_ewb_seg/gaofen_allright:v0.1
  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2022-02-26 12:11:44  更:2022-02-26 12:15:25 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/16 4:33:37-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码