欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

docker創(chuàng)建鏡像并上傳云端服務(wù)器的實現(xiàn)示例

 更新時間:2023年08月09日 09:10:48   作者:圖圖淘氣  
鏡像是一種輕量級、可執(zhí)行的獨立軟件包,用來打包軟件運行環(huán)境和基于運行環(huán)境開發(fā)的軟件,本文介紹了如何使用Docker創(chuàng)建鏡像,并將其上傳到云端,感興趣的可以了解一下

docker容器與鏡像的關(guān)系

  • 鏡像:
    • 相當(dāng)于一個類
    • 不可修改內(nèi)容
  • 容器:
    • 對鏡像類的實例,可以在環(huán)境中更新庫
    • 容器可以保存為一個新的鏡像
    • 再根據(jù)保存的新鏡像可以實例化新鏡像的容器

1.基本鏡像相關(guān)文件創(chuàng)建

1.1 創(chuàng)建dockerfile文件

文件內(nèi)容

# linux基礎(chǔ)系統(tǒng)
FROM nvidia/cuda:11.7.1-runtime-ubuntu22.04
# 修改鏡像源
RUN sed -i s/archive.ubuntu.com/mirrors.aliyun.com/g /etc/apt/sources.list
RUN sed -i s/security.ubuntu.com/mirrors.aliyun.com/g /etc/apt/sources.list
RUN sed -i s/ports.ubuntu.com/mirrors.aliyun.com/g /etc/apt/sources.list
# 安裝基本環(huán)境庫  vim unzip git wget python3 python3-venv python3-pip build-essential libgl-dev libglib2.0-0 wget
RUN apt update && apt-get -y install vim unzip git wget python3 python3-venv python3-pip build-essential libgl-dev libglib2.0-0 wget
# pip 代理
RUN pip config set global.index-url https://mirrors.cloud.tencent.com/pypi/simple
RUN pip config set global.trusted-host mirrors.cloud.tencent.com
# 創(chuàng)建自己目錄
RUN mkdir /home/data  && chmod 777 /home/data
# 將/home/data作為根目錄
WORKDIR /home/data
# 本地文件復(fù)制上傳到容器
# 文件上傳文件
# copy load_file_path docker_file_path
COPY upload_server_api.py /home/data/upload_server_api.py
COPY upload_server_webui.py /home/data/upload_server_webui.py
COPY do.sh  /home/data/do.sh
# 賦予.sh權(quán)限
RUN chmod 777 /home/data/do.sh
# 執(zhí)行.sh文件
RUN /home/data/do.sh
# 暴漏端口,連接的端口
EXPOSE 7860
#暴漏 upload_server_api.py端口
EXPOSE 5566
#暴漏 upload_server_webui.py端口
EXPOSE 5560
ENTRYPOINT ["python3","-m","http.server","2023"]

1.2.創(chuàng)建do.sh文件

文件內(nèi)容

#!/bin/bash
# 進(jìn)入根目錄
cd /home/data
# 創(chuàng)建python虛擬環(huán)境,虛擬環(huán)境名為venv
python3 -m venv venv
# 虛擬環(huán)境安裝相關(guān)庫
/home/data/venv/bin/python -m pip install -i https://pypi.tuna.tsinghua.edu.cn/simple/ bottle
/home/data/venv/bin/python -m pip install -i https://pypi.tuna.tsinghua.edu.cn/simple/ flask
/home/data/venv/bin/python -m pip install -i https://pypi.tuna.tsinghua.edu.cn/simple/ cgai-io
/home/data/venv/bin/python -m pip install -i https://pypi.tuna.tsinghua.edu.cn/simple/ cgai-socket
/home/data/venv/bin/python -m pip install -i https://pypi.tuna.tsinghua.edu.cn/simple/ gradio
# 后臺運行upload_server_api.py,upload_server_webui.py文件
nohup /home/data/venv/bin/python -u /home/data/upload_server_api.py >/dev/null 2>&1 &
nohup /home/data/venv/bin/python -u /home/data/upload_server_webui.py >/dev/null 2>&1 &

1.3 創(chuàng)建upload_server_api.py文件

文件內(nèi)容

import os
from bottle import route,request,static_file,run
# 文件上傳
@route('/upload',method='POST')
def do_upload():
    upload = request.files.get('upload')
    _dir = request.forms.get('dir')
    _dir = _dir.replace('\\','/')
    if _dir.endswith('/'):
        _dir = _dir[:-1]
    save_path = f'{_dir}/{upload.filename}'
    print('save_path:',save_path)
    upload.save(save_path,overwrite=True)
    return f'保存文件到:{save_path}'
# 查看目錄文件
@route('/check',method='GET')
def check():
    _dir = request.query.dir
    files = os.listdir(_dir)
    s = ''
    for i in files:
        s += i + '\n'
    return s
if __name__=='__main__':
    run(host='0.0.0.0',port=5566)    

1.4 創(chuàng)建upload_server_webui.py文件

文件內(nèi)容

import os
import socket
import gradio as gr
from cgai_io import copyfile,mvfile
def get_ip():
    s = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
    s.connect(("8.8.8.8",80))
    a = s.getsockname()      
    return a[0]
def upload(save_dir,temp_file):
    file_path = temp_file.name
    file_name = os.path.basename(file_path)
    name,t = os.path.splitext(file_name)
    fs = name.split('_')
    fs.remove(fs[-1])
    oname = '_'.join(fs) + t
    save_path = os.path.join(save_dir,oname)
    mvfile(file_path,save_path)
    return f'上傳到路徑: {save_path}'
def check(save_dir):
    files = os.listdir(save_dir)
    s = ''
    for i in files:
        s += i + '\n'
    return s
with gr.Blocks() as demo:
    gr.Markdown(f"當(dāng)前連接ip:  {get_ip()}")
    with gr.Column():
        save_dir = gr.Text(label='上傳路徑',value='/home')
        local_file = gr.File(label='上傳文件(注意:1.文件名稱不要有下劃線_,否則上傳后的文件名稱可能有誤) 2.文件大小超過4G請使用客戶端上傳')
    with gr.Row():
        upload_btn = gr.Button("上傳")
        check_btn = gr.Button('檢測')
    tip = gr.Text('',label='')
    upload_btn.click(fn=upload, inputs=[save_dir,local_file], outputs=tip)
    check_btn.click(fn=check, inputs=[save_dir], outputs=tip)
demo.launch(server_name='0.0.0.0',server_port=5560)

1.5 文件保存位置

存放在同一個文件夾中,我的存放在 test_docker 文件夾中

2. 創(chuàng)建鏡像操作

2.1 創(chuàng)建鏡像

相關(guān)參數(shù)

參數(shù)含義
- fdockerfile文件路徑
- t新鏡像標(biāo)簽名
.指明docker context為當(dāng)前目錄,context上下文路徑,是指 docker 在構(gòu)建鏡像,有時候想要使用到本機(jī)的文件(比如復(fù)制),docker build 命令得知這個路徑后,會將路徑下的所有內(nèi)容打包

進(jìn)入 文件夾目錄

4個文件都在里面

test_docker 文件夾目錄下創(chuàng)建鏡像

docker build -f kohya_ss_dockerfile -t wang0724/gpu_python3_ubuntu22:v1 .

查看鏡像

sudo docker image ls

2.3 創(chuàng)建容器

根據(jù)鏡像實例化容器

# sudo docker run -itd --name=容器名稱--runtime=nvidia --gpus all  -p 6161:7860  鏡像名稱 
sudo docker run -itd --name=kohya_test --runtime=nvidia --gpus all  -p 6161:7860  wang0724/gpu_python3_ubuntu22:v1

創(chuàng)建成功,得到一個id,表明創(chuàng)建成功

查看運行的容器

sudo docker ps 

2.2 進(jìn)入環(huán)境容器

進(jìn)入容器

# sudo docker exec -it 容器id /bin/bash
sudo docker exec -it 1283aa83664a /bin/bash

查看根目錄的文件

do.sh upload_server_api.py upload_server_webui.py , do.sh中創(chuàng)建的venv虛擬環(huán)境 文件都在

ls

2.3 激活python虛擬環(huán)境

進(jìn)入python虛擬環(huán)境venv文件目錄

激活python虛擬環(huán)境

source venv/bin/activate

進(jìn)入虛擬環(huán)境后,可以安裝自己需要的python庫

2.4 文件傳輸步驟

文件傳輸?shù)哪康?: 容器中現(xiàn)在只有基本的文件,需要自己上傳自己的需要的文件

注意事項: 需要退出容器才能傳輸文件

2.4.1 退出容器

相關(guān)命令

exit

2.4.2 文件傳輸

本地文件復(fù)制到容器路徑

# sudo docker cp load_file_path 容器id:docker_file_path
sudo docker cp  kohya_ss 1283aa83664a:/home/data

容器路徑復(fù)制到本地文件

# sudo docker cp 容器id:docker_file_path load_file_path
sudo docker cp  1283aa83664a:/home/data a.txt

2.4.3 進(jìn)入容器

進(jìn)入容器

# sudo docker exec -it 容器id /bin/bash
sudo docker exec -it 1283aa83664a /bin/bash

2.4.4 查看文件

kohya_ss 已經(jīng)成功傳輸?shù)饺萜髦?/p>

ls

3. 將容器保存為新的鏡像

將上面的容器保存為新的鏡像

# docker commit -m="描述信息" -a="作者" 容器id 目標(biāo)鏡像名: [TAG]
# sudo docker commit -m="test"  -a="w" 1283aa83664a os-harbo.cloudos:11443/home/test:v1
sudo docker commit -m="image create" -a="wang" 1283aa83664a wang0724/gpu_python3_ubuntu22:v1

查看鏡像列表

sudo docker image ls

4.根據(jù)鏡像創(chuàng)建新的鏡像

4.1.制作鏡像

根據(jù)已有的鏡像創(chuàng)建 【就是copy一個】

參數(shù)含義
old容器名稱
v1tag
os-harbor-svc.default.svc.cloudos:0000/env項目路徑
-- old:v1 已有鏡像名稱
-- new:v2 新創(chuàng)建鏡像名稱
sudo docker tag old:image1 os-harbor-svc.cloudos:0000/env/new:v2

再次查看鏡像,就發(fā)現(xiàn)多了一個

4.2. 上傳鏡像到sdg

登錄倉庫

sudo docker login  https://os-harbor-svc.cloudos:0000

提交鏡像

sudo docker push os-harbor-svc.cloudos:0000/env/new:v2

拉取鏡像

sudo docker pull os-harbor-svc.cloudos:0000/env/new:v2

到此這篇關(guān)于docker創(chuàng)建鏡像并上傳云端服務(wù)器的實現(xiàn)示例的文章就介紹到這了,更多相關(guān)docker創(chuàng)建鏡像并上傳云端內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • docker引起服務(wù)器磁盤爆滿的問題解決

    docker引起服務(wù)器磁盤爆滿的問題解決

    本文主要介紹了docker引起服務(wù)器磁盤爆滿的問題解決,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-06-06
  • Docker-compose的安裝和設(shè)定詳細(xì)步驟

    Docker-compose的安裝和設(shè)定詳細(xì)步驟

    這篇文章主要介紹了Docker-compose的安裝和設(shè)定的相關(guān)資料,需要的朋友可以參考下
    2017-03-03
  • docker如何修改容器默認(rèn)存儲路徑

    docker如何修改容器默認(rèn)存儲路徑

    這篇文章主要介紹了docker如何修改容器默認(rèn)存儲路徑問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-07-07
  • docker配置openGauss數(shù)據(jù)庫的方法詳解

    docker配置openGauss數(shù)據(jù)庫的方法詳解

    這篇文章主要介紹了docker配置openGauss數(shù)據(jù)庫,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-03-03
  • Docker?日志管理的實現(xiàn)示例

    Docker?日志管理的實現(xiàn)示例

    Docker提供了多種日志驅(qū)動來管理和提取容器日志,包括json-file、syslog、fluentd等,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2024-12-12
  • Docker部署SQL Server 2019 Always On集群的實現(xiàn)

    Docker部署SQL Server 2019 Always On集群的實現(xiàn)

    這篇文章主要介紹了Docker部署SQL Server 2019 Always On集群的實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-04-04
  • Docker容器如何開啟特權(quán)模式

    Docker容器如何開啟特權(quán)模式

    文章主要解決Docker容器中無法使用systemctl命令的問題,其原因在于大部分的系統(tǒng)鏡像移除了init軟件包,導(dǎo)致鏡像中沒有/sbin/init文件,解決方法是通過編寫Dockerfile文件修改鏡像,構(gòu)建新的鏡像,并運行新構(gòu)建的鏡像,需要注意的是,開啟特權(quán)模式雖然方便,但可能存在安全風(fēng)險
    2024-10-10
  • 使用Docker搭建私有GitLab的兩種方案

    使用Docker搭建私有GitLab的兩種方案

    本文給大家分享兩種Docker搭建私有GitLab的方法,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友參考下吧
    2021-07-07
  • Docker啟用TLS實現(xiàn)安全配置的步驟

    Docker啟用TLS實現(xiàn)安全配置的步驟

    這篇文章主要給大家介紹了關(guān)于Docker啟用TLS實現(xiàn)安全配置的方法步驟,文中通過示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用Docker具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-08-08
  • Docker容器互訪的三種方法

    Docker容器互訪的三種方法

    這篇文章主要介紹了Docker容器互訪的三種方法,幫助大家更好的理解和使用docker容器,感興趣的朋友可以了解下。
    2020-09-09

最新評論