docker学习-常用命令

//ubuntu中简单创建新用户的方法
sudo adduser robot

//docker和docker-compose的安装
sudo apt install docker docker-compose


//加入docker用户组:
sudo groupadd docker     #添加docker用户组
sudo gpasswd -a ${USER} docker    #将用户加入到docker用户组中
newgrp docker  更新docker组
或者
sudo docker ps ...


docker search ubunt    //查找镜像
docker pull ubunt      //下载镜像
docker rmi hello-world //删除镜像


docker ps  //查看所有运行过的容器
docker ps -a  //查看已经在运行的容器
exit 或者 Ctrl+d   //退出容器终端

docker run -it --name nav_ws ros-melodic-nav-develop   //给启动的容器起个名字 nav_ws,不执行任何动作
docker run -it ros-melodic-nav-develop /bin/echo "Hello world"    //启动容器(交互模式)运行完就结束了
docker run -d ros-melodic-nav-develop /bin/sh -c "while true; do echo hello world; sleep 1; done"    //启动容器(后台模式)
docker logs 2b1b7a428627  //查看输出的日志   
docker logs -f --tail 10 docker123   //实时查看docker容器名为docker123的最新10行日志,如果有新的日志生成会实时刷新出来
docker logs docker123 | grep ERROR | tail -n 2    //错误太多了,我只想找最新的两行的ERROR日志
docker logs docker123 | head -n 10         //如果我们要打印最早期的10行日志,就是日志的头10行
docker stop 2b1b7a428627  //停止容器
docker kill 2b1b7a428627  //杀死容器
docker restart 2b1b7a428627  //重启容器
docker rm 2b1b7a428627  //删除容器
docker container prune    //删除所有处于终止状态的容器

docker exec -it 243c32535da7 /bin/bash   //在运行的容器中执行命令,适用于 docker-compose 创建的容器,然后在里面可以执行指令
-d :分离模式: 在后台运行    -i :即使没有附加也保持STDIN 打开   -t :分配一个伪终端   -it 执行一个交互的终端   /bin/bash 选择执行的bash
docker attach 2b1b7a428627   //进入后台运行的容器,适用于docker run创建的容器,然后在里面可以执行指令

docker build     //构建镜像 需要创建一个 Dockerfile 文件,其中包含一组指令来告诉 Docker 如何构建镜像

runoob@runoob:~$ cat Dockerfile 
FROM    centos:6.7
MAINTAINER      Fisher "fisher@sudops.com"

RUN     /bin/echo 'root:123456' |chpasswd
RUN     useradd runoob
RUN     /bin/echo 'runoob:123456' |chpasswd
RUN     /bin/echo -e "LANG=\"en_US.UTF-8\"" >/etc/default/local
EXPOSE  22
EXPOSE  80
CMD     /usr/sbin/sshd -D
每一个指令都会在镜像上创建一个新的层,每一个指令的前缀都必须是大写的
第一条FROM,指定使用哪个镜像源
RUN 指令告诉docker 在镜像内执行命令,安装了什么
然后,我们使用 Dockerfile 文件,通过 docker build 命令来构建一个镜像

//docker-compose概述
使用一个Dockerfile模板文件可以定义一个单独的应用容器,如果需要定义多个容器就需要服务编排。下面介绍Docker官方产品,Docker Compose。
Dockerfile可以让用户管理一个单独的应用容器,而compose则允许用户在一个模板(yaml格式)中定义一组相关联的应用容器(被称为一个project,即项目)
例如一个web服务再加上后端的数据库服务容器等。

docker-compose将所管理的容器分为三层, 分别是工程(project),服务(service)以及容器(containner)

docker-compose运行目录下的所有文件(docker-compose.yml文件、extends文件或环境变量等)组成一个工程,如无特殊指定,工程名即为当前目录名。
一个工程当中,可以包含多个服务,每个服务中定义了容器运行的镜像、参数、依赖。一个服务中可以包括多个容器实例,docker-compose并没有解决负载均衡的问题。
因此需要借助其他工具实现服务发现及负载均衡,比如consul。docker-compose的工程配置文件默认为docker-compose.yml。

//docker-compose是用于定义和运行多容器 Docker 应用程序的工具,然后,使用一个命令,就可以从 YML 文件配置中创建并启动所有服务,说白了就是一个一键启动脚本
我们知道使用一个 Dockerfile 模板文件,可以让用户很方便的定义一个单独的应用容器。然而,在日常工作中,经常会碰到需要多个容器相互配合来完成某项任务的情况。
例如要实现一个 Web 项目,除了 Web 服务容器本身,往往还需要再加上后端的数据库服务容器,甚至还包括负载均衡容器等。
通过 Docker-Compose 用户可以很容易地用一个配置文件定义一个多容器的应用,然后使用一条指令安装这个应用的所有依赖,完成构建。
Docker-Compose 解决了容器与容器之间如何管理编排的问题。

Compose 中有两个重要的概念:
服务 (service):一个应用的容器,实际上可以包括若干运行相同镜像的容器实例。
项目 (project):由一组关联的应用容器组成的一个完整业务单元,在 docker-compose.yml 文件中定义。


//Docker Compose常用命令【都需要进入到相应的有docker-compose.yaml文件目录下面】
docker-compose ps    //查看启动的服务,默认为 docker-compose.yml
docker-compose up    //启动并运行整个应用程序(后台执行加 -d选项),默认为 docker-compose.yml
docker-compose -f docker-compose.yml up -d //-f  指定使用的 Compose 模板文件,默认为 docker-compose.yml,可以多次指定
docker-compose logs //查看服务容器的输出
docker-compose -f docker-compose-test.yml logs -f  //查看服务容器的输出,并实时刷新
docker-compose down //删除容器、网络、数据卷、和镜像
docker-compose stop //停止已经处于运行状态的容器,但不删除它。通过 docker-compose start 可以再次启动这些容器
docker-compose start //启动已经存在的服务容器
docker-compose -h    //查看帮助
docker-compose pull //拉取服务依赖的镜像
docker-compose restart //重启项目中的服务
docker-compose rm    //删除所有(停止状态的)服务容器。推荐先执行 docker-compose stop 命令来停止容器
docker-compose run ubuntu ping docker.com //在指定服务上执行一个命令
docker-compose scale web=3 db=2 //设置指定服务运行的容器个数。通过 service=num 的参数来设置数量
docker-compose build  //构建(重新构建)项目中的服务容器。服务容器一旦构建后,将会带上一个标记名,例如对于 web 项目中的一个 db 容器,可能是 web_db。可以随时在项目目录下运行 docker-compose build 来重新构建服务

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

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

相关文章

Echart图表收起/展开后无法重新渲染实现自适应(亲测有效)-开发bug总结5

问题描述: 后台管理系统,左侧的菜单栏是可以展开/收起的,默认是展开,此时页面上的图表加载正常,如果收起后再展开,页面底部就会出现滚动轴,图表没有重新绘制。 网上也查了很多方法。基本都是通…

数字化驱动基础网络建设升级:实现高效信息传输的关键

随着科技的飞速发展,数字化驱动基础网络建设升级已成为当今社会的重要议题。信息传输的高效性和安全性对于现代社会的发展至关重要。本文将深入探讨数字化驱动基础网络建设升级的重要性、现状、升级措施以及未来发展趋势,旨在为相关领域提供有益的参考。…

“中国版Zara”拉夏贝尔:从辉煌到破产清算

文/ 大力财经 拉夏贝尔的破产清算,让人不禁惋惜。这个曾经被誉为“中国版Zara”的女装品牌,在全国拥有超过2000家门店,一度是年轻人的追捧对象。 然而,由于市场竞争激烈、品牌定位模糊、库存积压严重等问题,拉夏贝尔…

从0开始学云计算之服务器:服务的定义,特点,应用场景,分类

服务器定义 服务器是计算机的一种。它比普通计算机运行速度更快、负载更高且价格更高。 服务器的英文名称为“Server”,是指在网络上提供各种服务的高性能计算机。作为网络的节点,存储、处理网络上80%的数据、信息,因此也被称为x络的灵魂。 …

2023IG新功能大整理,更多玩法助力营销推广

作为当今全球最为受欢迎的社交媒体之一,Instagram在2023年迎来了一系列重要的功能更新。学习了解Instagram的最新功能,以及如何高效利用这些新的功能和工具,对于跨境品牌在该平台上实现营销推广至关重要。今天给大家详细介绍 Instagram在2023…

formData对象打印不出来

用el-upload上传图片 以流的形式传给后台 所以用formData对象带数据 let formData new FormData() formData.append(name,monkey7) console.log(formData) 明明已经把数据append进去了 console.log在控制台却打印不出 后来发现他得用formData.get("xxx"…

自然语言处理---Transformer机制详解之GPT2模型介绍

1 GPT2的架构 从模型架构上看, GPT2并没有特别新颖的架构, 它和只带有解码器模块的Transformer很像. 所谓语言模型, 作用就是根据已有句子的一部分, 来预测下一个单词会是什么. 现实应用中大家最熟悉的一个语言模型应用, 就是智能手机上的输入法, 它可以根据当前输入的内容智…

C++基础算法----正整数高精度加减乘除

4、正整数高精度 ​ 出现高精度的情况一般只有C会出现,python会无限制,java有大整数,所以基本上不用考虑,一般会出现四种情况 一个较大数A 一个较大数B一个较大数A - 一个较大数B一个较大数A * 一个数一个较大数A / 一个数 这里…

模式识别——贝叶斯决策理论

模式识别——贝叶斯决策理论BDR 须知基本原则0-1损失下的BDRMAP(极大后验)log trick 须知 所有内容在分类问题下讨论。 基本原则 定义 X X X为观测 Y Y Y为状态 g ( x ) g(x) g(x)用 x x x对 y y y进行预测预测损失为 L [ g ( x ) , i ] L[g(x),i] L[…

关于数据可视化那些事

干巴巴的数据没人看,数据可视化才能直观展现数据要点,提升数据分析、数字化运营决策效率。那关于可视化的实现方式、技巧、工具等,你了解几分?接下来,我们就来聊聊数据可视化那些事。 1、什么是数据可视化&#xff1f…

网络工程师知识点7

111、IS-IS路由器的三种类型? Level-1路由器(只能创建level-1的LSDB) Level-2路由器(只能创建level-2的LSDB) Level-1-2路由器(路由器默认的类型,能同时创建level-1和level-2的LSDB)…

友思特方案 | 3D点云实例分割现成算法模块助力实现自动化上下料应用

引言 全球范围内的大型汽车制造商和技术公司,以及一些专注于智能制造领域的创新企业,在3D视觉引导汽车部件自动化上下料项目方面都在进行研发和实践。国内外汽车制造行业,越来越多的企业开始采用3D视觉引导技术进行自动化上下料操作。 本文将…

server error: Preprocessor dependency “less“ not found. Did you install it?

问题描述 在vue项目中的某个组件中使用less报错 <style lang"less" scoped> .main-box{width: 40px; } </style>错误原因 这个错误通常表示在你的项目中缺少了 Less 预处理器的依赖。 解决办法 确保你已经在项目中正确安装了 Less 预处理器。你可以…

优测云测试平台 | 有效的单元测试

一、前言 本文作者提出了一种评价单元测试用例的质量的思路&#xff0c;即判断用例是否达到测试的“四大目标”。掌握识别好的用例的能力&#xff0c;可以帮助我们高效地写出高质量的测试用例。 评判冰箱的好坏&#xff0c;并不需要有制造一台冰箱的能力。在开始写测试用例之…

【unity3D】Scroll Rect组件—制作下滑列表

&#x1f497; 未来的游戏开发程序媛&#xff0c;现在的努力学习菜鸡 &#x1f4a6;本专栏是我关于游戏开发的学习笔记 &#x1f236;本篇是unity的Scroll Rect组件 Scroll Rect组件 基础知识详细说明案例演示——制作一个简单的下滑框扩展 介绍&#xff1a;Scroll Rect组件是用…

装备控制类嵌入式软件开发知识

1.嵌入式系统概念及特点 嵌入式系统是一种可深埋在某一专用设备中的系统。一般而言&#xff0c;由于设备的体积、重量和功耗的限制&#xff0c;嵌入式系统将受到多种条件和环境的制约&#xff0c;这也对嵌入式系统提出了有别于其他计算机系统的特殊要求。 通常&#xff0c;嵌…

【万字长文】向 AI 提问的艺术

向 AI 提问的艺术 本文是我在学习 Prompt Engineering 过程中&#xff0c;总结出来的一些经验和方法。里边包含一些自己的心得和验证有效的技巧。这些技巧在很多其他文章中也有介绍&#xff0c;这里可以当作是一个集大成的汇总。 我会按照“道——法——术”三个层面来介绍向 …

【最经典的79个】软件测试面试题(内含答案)

001.软件的生命周期(prdctrm) 计划阶段(planning)-〉需求分析(requirement)-〉设计阶段(design)-〉编码(coding)->测试(testing)->运行与维护(running maintrnacne) 测试用例 用例编号 测试项目 测试标题 重要级别 预置条件 输入数据 执行步骤 预期结果 0002.问&…

vue2中,下拉框多选和全选的实现

vue2中&#xff0c;下拉框多选和全选的实现 代码布局在methods: 中添加功能函数较为完整的一个整体代码&#xff1a; 如图所示点击全选即可完成下拉框中全部子项的全部的选中&#xff0c;同时取消全选即可全部取消选择。 代码布局 <div class"chos-box2"><…

如何给照片添加水印?请看下面3个简单教程

如何给照片添加水印&#xff1f;随着智能手机的普及和不断提升的拍摄技术&#xff0c;如今人们可以轻松使用手机进行高质量的照片拍摄。从老人到小孩&#xff0c;每个人都可以在日常生活中捕捉到美好瞬间&#xff0c;并将其记录下来。作为一种表达自己的方式&#xff0c;现在手…