linux下docker容器的使用

news2024/10/7 10:21:36

1、根据已有镜像images创建容器

1.1、查看镜像

如果是接手的别人的项目,需要从以往的images镜像中创建新容器,使用命令查看当前机器上的docker镜像:

docker images

在这里插入图片描述

1.2、创建容器

使用docker run 根据images镜像名创建容器,命令:

docker run --name zdqm -d -p 8005:8001 -w /cytech_ai/app/ModelServer/ --env LANG=C.UTF-8 --gpus all cytech_ai_zd:1.0.4

参数解释如下:
–name zdqm:创建的一个新容器名称为zdqm
-d, --detach=false, 指定容器运行于前台还是后台,默认为false
-p 8005:8001:端口映射,外部端口为8005,docker容器内部的端口为8001,如果外部需要访问,要使用8005去访问,也可以写成一样的8001:8001这样就直接对应上。
-w /cytech_ai/app/ModelServer/:–workdir=“”, 指定容器的工作目录,也就是进入docker之后,默认的当前路径
–env LANG=C.UTF-8:表示环境
–gpus all:表示使用gpu
cytech_ai_zd:1.0.4:docker images中的镜像名称

2、使用外部镜像创建容器

2.1、从Docker仓库中拉取镜像

以最小的linux系统busybox为例,使用命令:

docker pull busybox:latest

从docker hub官方镜像仓库获取一个为busybox的镜像,latest表示最新版,并pull下载到宿主机上。

docker镜像仓库还有很多,例如:ubuntu:latest,拉取一个最新的ubuntu系统镜像

2.2、创建容器

创建容器的方法和1.2类似了,参数也是一样的

docker run --name busyboxenv busybox:latest

或者按照上面的创建方式:

docker run --name zdqm -d -p 8005:8001 -w /cytech_ai/app/ModelServer/ --env LANG=C.UTF-8 --gpus all busybox:latest

3、启动容器

3.1、查看创建的容器

使用命令:

docker ps -a

在这里插入图片描述

3.2、启动容器

使用命令:

docker exec -it 9742b17eeea7 /bin/bash

4、本地磁盘映射

在创建docker容器时,使用docker run时,加入参数-v,命令:

docker run --name rknntestsiping -it --privileged -v /cytech_ai/:/cytech_ai/ 4c873a65d2b1 /bin/bash

即:

docker run --name zdqm -d -p 8005:8001 -w /cytech_ai/app/ModelServer/ -v /cytech_ai/:/cytech_ai/ --env LANG=C.UTF-8 --gpus all cytech_ai_zd:1.0.5

这样宿主机的cytech_ai文件夹的所有文件可以在docker容器中对应的cytech_ai文件夹中访问到。

5、docker文件拷贝

5.1、同一台机器中docker容器内部文件拷贝到外部宿主机

在docker容器外,即宿主机终端使用docker cp命令:
即:

docker cp 容器id:容器内部文件路径 宿主机外部路径

例如,在上面的9742b17eeea7容器中,将cytech_ai/app/test.py文件拷贝到外部宿主机的/home/code/下:

docker cp 9742b17eeea7:cytech_ai/app/test.py /home/code/

5.2、同一台机器中外部宿主机文件拷贝到docker容器内

在docker容器外,即宿主机终端使用docker cp命令:
即:

docker cp 宿主机外部路径 容器id:容器内部文件路径 

例如,将宿主机中/home/code//test.py文件拷贝到9742b17eeea7容器的cytech_ai/app/下:

docker cp  /home/code/test.py 9742b17eeea7:cytech_ai/app/

6、打包镜像

当算法开发完成后,我们的docker容器可能会发到其他现场的计算机上进行部署,因此需要打包docker容器为一个images镜像发布。

6.1、镜像提交 commit

先将容器提交为一个镜像images,例如前面我根据images创建了一个cytech_ai_zd:1.0.4的容器,修改了代码后提交一个新的版本镜像为1.0.5

docker commit 容器id 容器新名称

命令:

docker commit 9742b17eeea7 cytech_ai_zd:1.0.5

将9742b17eeea7 这个容器提交到镜像,镜像名为cytech_ai_zd:1.0.5
在这里插入图片描述

6.2、打包镜像

使用docker save命令:

docker save -o 新镜像名称.tar 新容器名称

在宿主机终端上,选择一个文件目录,使用docker save将images打包为tar后,会在当前路径下生成一个文件:

docker save -o cytech_ai_zd-1.0.5.tar cytech_ai_zd:1.0.5

等待打包完成后,即可发布到另外一台机器部署使用。

7、加载镜像

在新的服务器终端使用:

docker load -i 镜像包名称

例如:

docker load -i cytech_ai_zd-1.0.5.tar

加载完成后,使用docker images查看images是否加载成功,找得到这个images就可以开始部署使用了,步骤转到第一步即可。

8、其他问题

1、docker创建容器后,容器自动关闭问题
原因分析:
docker容器运行必须有一个前台进程, 如果没有前台进程执行,容器认为空闲,就会自行退出。
容器运行的命令如果不是那些一直挂起的命令( 运行top,tail、循环等),就是会自动退出
解决方案:
在最后加上/bin/bash就可以了。例如在上面的基础上。
docker run -it -P --name=“容器名” [镜像名] /bin/bash
docker run -dit centos /bin/bash

或者使用docker exec :

docker exec -it 9742b17eeea7 /bin/bash

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1548887.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

电阻的妙用:限流、分压、滤波,助力电路设计!

电阻可以降低电压,这是通过电阻的分压来实现的。事实上,利用电阻来降低电压只是电阻的多种功能之一。电路中的电阻与其他元件(电容、电感)结合用于限流、滤波等。(本文素材来源:https://www.icdhs.com/news…

SV-7045V网络草坪音箱 室外网络广播POE供电石头音箱

SV-7045V网络草坪音箱 室外网络广播POE供电石头音箱 描述 IP网络广播草坪音箱 SV-7045V是深圳锐科达电子有限公司的一款防水网络草坪音箱,具有10/100M以太网接口,可将网络音源通过自带的功放和喇叭输出播放,可达到功率20W。用在公园&#…

Kotlin高效App爬取工具:利用HttpClient与代理服务器的技巧

在当今数字化时代,移动应用(App)数据的价值日益凸显,而为了获取并分析这些数据,开发高效的数据爬取工具变得至关重要。Kotlin作为一种现代化、功能强大的编程语言,与HttpClient等强大工具的结合&#xff0c…

day53 动态规划part10

121. 买卖股票的最佳时机 简单 给定一个数组 prices ,它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格。 你只能选择 某一天 买入这只股票,并选择在 未来的某一个不同的日子 卖出该股票。设计一个算法来计算你所能获取的最大利润。 返回你可…

蓝桥杯学习笔记 单词分析

试题 G: 单词分析 时间限制: 1.0s 内存限制: 512.0MB 本题总分:20 分 [问题描述] 小蓝正在学习一门神奇的语言,这门语言中的单词都是由小写英文字母组成,有些单词很长,远远超过正常英文单词的长度。小蓝学了很长时间也记不住一些单词&#xf…

C语言实现顺序表(增,删,改,查)

目录 一.概念: 1.静态顺序表:使用定长数组存储元素。 2.动态顺序表:使用动态开辟的数组存储。 二.顺序表的实现: 1.顺序表增加元素 1.检查顺序表 2.头插 3.尾插 2.顺序表删除元素 1.头删 2.尾删 3.指定位置删 3.顺序表查找元素 …

就业班 第二阶段 2401--3.25 day5 mycat读写分离

[TOC] 启动并更改临时密码 [rootmysql1~]# systemctl start mysqld && passwdgrep password /var/log/mysqld.log | awk END{ print $NF} && mysqladmin -p"$passwd" password Qwer123..; MyCAT读写分离 Mycat 是一个开源的数据库系统,但…

线程安全集合类原理

一、ConcurrentHashMap (一)、HashMap 1、JDK7 并发死链 采用头插法 扩容源码(扩容时并没有创建新的节点&#xff0c;只是将引用挂在不同的地方) void transfer(Entry[] newTable, boolean rehash) {int newCapacity newTable.length;for (Entry<K,V> e : table) {…

俚语加密漫谈

俚语加密是一种古老而有效的通信方式&#xff0c;将特定词语或短语在群体内赋予特殊含义&#xff0c;从而隐藏真实信息。类似于方言&#xff0c;它在历史上的应用不可忽视。随着计算机时代的到来&#xff0c;现代密码学通过数学运算编织密语&#xff0c;使得加密变得更加高深莫…

大数据开发(离线实时音乐数仓)

大数据开发&#xff08;离线实时音乐数仓&#xff09; 一、数据库与ER建模1、数据库三范式2、ER实体关系模型 二、数据仓库与维度建模1、数据仓库&#xff08;Data Warehouse、DW、DWH&#xff09;1、关系型数据库很难将这些数据转换成企业真正需要的决策信息&#xff0c;原因如…

【Java多线程】1——多线程知识回顾

1 多线程知识回顾 ⭐⭐⭐⭐⭐⭐ Github主页&#x1f449;https://github.com/A-BigTree 笔记仓库&#x1f449;https://github.com/A-BigTree/tree-learning-notes 个人主页&#x1f449;https://www.abigtree.top ⭐⭐⭐⭐⭐⭐ 如果可以&#xff0c;麻烦各位看官顺手点个star…

web 技术中前端和后端交互过程

1、客户端服务器交互过程 客户端:上网过程中,负责浏览资源的电脑,叫客户端服务器:在因特网中,负责存放和对外提供资源的电脑叫服务器 服务器的本质: 就是一台电脑,只不过相比个人电脑它的性能高很多,个人电脑中可以通过安装浏览器的形式,访问服务器对外提供的各种资源。 个人…

【每日一题】2580. 统计将重叠区间合并成组的方案数-2024.3.27

题目&#xff1a; 2580. 统计将重叠区间合并成组的方案数 给你一个二维整数数组 ranges &#xff0c;其中 ranges[i] [starti, endi] 表示 starti 到 endi 之间&#xff08;包括二者&#xff09;的所有整数都包含在第 i 个区间中。 你需要将 ranges 分成 两个 组&#xff0…

【数据结构】 HashMap源码分析(常量+构造方法+方法)

文章目录 HashMap源码分析一、成员常量二、构造方法三、方法1.此时假定为进行了无参构造&#xff0c;没有分配内存2.当发生有参构造时&#xff0c;完成对容量的大小判断后&#xff0c;将容量大小&#xff0c;传进tableSizeFor方法中&#xff1a; HashMap源码分析 一、成员常量…

【物联网开源平台】tingsboard安装与编译

别看这篇了&#xff0c;这篇就当我的一个记录&#xff0c;我有空我再写过一篇&#xff0c;编译的时候出现了一个错误&#xff0c;然后我针对那一个错误执行了一个命令&#xff0c;出现了绿色的succes,我就以为整个tingsboard项目编译成功了&#xff0c;后面发现的时候&#xff…

如何本地部署开源AI知识库 FastGPT(新手教程)

环境: Win10 WSL2 ubuntu22.04 问题描述: 如何本地部署开源AI知识库 FastGPT 解决方案: 一、安装docker和docker-compose 安装docker 1.apt install docker.io2.apt install docker-compose3.docker --version4.docker compose version

[操作系统课设]GeeKOS操作系统的研究与实现

一.GeekOS操作系统概论 1.1教学操作系统 &#xff08;1&#xff09;针对RISC结构MIPS处理器 操作系统&#xff1a;Nachos、OS/161 &#xff08;2&#xff09;针对CISC结构Intel IA-32 (or x86)通用处理 操作系统&#xff1a;MINIX、GeekOS 我们用到的是&#xff1a;GeekOS 1&…

Java八股文(SpringCloud Alibaba)

Java八股文のSpringCloud Alibaba SpringCloud Alibaba SpringCloud Alibaba Spring Cloud Alibaba与Spring Cloud有什么区别&#xff1f; Spring Cloud Alibaba是Spring Cloud的衍生版本&#xff0c;它是由Alibaba开发和维护的&#xff0c;相比于Spring Cloud&#xff0c;它在…

C++初学者:像C#一样优雅写程序

C语言的强大&#xff0c;在于自由自在&#xff0c;你可以随便怎么写程序&#xff0c;不讲格式&#xff0c;可以很整齐&#xff0c;也可以鬼画符&#xff0c;只要能运行就可以了&#xff0c;程序员可以自由发挥。 如图&#xff1a; 国际C语言大赛中的代码 图2 C的语言更强大&…

关于振弦式渗压计的基本知识详解

振弦式渗透压力计的组成主要包括振弦、高灵敏度金属薄膜、渗透石以及激励和接收线圈等。其运作机制是&#xff1a;水压力施加在金属薄膜上导致其形变&#xff0c;进而影响连接的钢弦的拉力。由于钢弦振动频率与其拉力密切相关&#xff0c;通过测量钢弦的频率变化即可计算出渗透…