docker privileged作用_docker总结

92e8b27955aa4c1a193b6fa86e880dd5.png

docker基本命令

是一个开源的应用容器引擎;是一个轻量级容器技术;

docker主机(Host):安装了Docker程序的机器(Docker直接安装在操作系统之上);

docker客户端(Client):连接docker主机进行操作;

docker仓库(Registry):用来保存各种打包好的软件镜像;

docker镜像(Images):软件打包好的镜像;放在docker仓库中;

docker容器(Container):镜像启动后的实例称为一个容器;容器是独立运行的一个或一组应用

docker引擎

  1. docker daemon process docker后台服务直接执行dockerd启动后台服务
  2. rest接口 程序可以通过rest接口来访问后台服务
  3. docker cil 交互式命令行界面 docker开头的所有命令都与docker cil交互

镜像操作

知乎不支持表格所以只能这样

f30306aa4565456d913e131e2df44af7.png

容器操作

运行容器

docker run [选项] 镜像名
选项
-d 后台运行
-it 提供容器交互
--name 设置容器名
--cpus 设置cpu个数
--env 设置环境变量
--mount type=bind,source=/root/target,target=/app或者--mount type=tmpfs,destination=/app 
--volume <host>:<container>:[rw|ro]挂载一个磁盘卷 例如 --volume /home/hyzhou/docker:/data:rw
--restart 设置重启策略on-failure,no,always
--privileged 使用该参数,container内的root拥有真正的root权限。否则,container内的root只是外部的一个普通用户权限。privileged启动的容器,可以看到很多host上的设备,并且可以执行mount。甚至允许你在docker容器中启动docker容器。

volume bind-mount tmpfs-mount

Volumes和Bind mounts模式使我们能够在宿主机和容器间共享文件从而我们能够将数据持久化到宿主机上,以避免写入容器存储层带来的容器停止后数据的丢失的问题。

tmpfs mounts,顾名思义,是一种非持久化的数据存储。它仅仅将数据保存在宿主机的内存中,一旦容器停止运行,tmpfs mounts会被移除,从而造成数据丢失。

一个简单区分volumesbind mountstmpfs mounts不同点的方法是:思考数据在宿主机上是如何存在的。

  • Volumes由Docker管理,存储在宿主机的某个地方(在linux上是/var/lib/docker/volumes/)。非Docker应用程序不能改动这一位置的数据。Volumes是Docker最好的数据持久化方法。
  • Bind mounts的数据可以存放在宿主机的任何地方。数据甚至可以是重要的系统文件或目录。非Docker应用程序可以改变这些数据。
  • tmpfs mounts的数据只存储在宿主机的内存中,不会写入到宿主机的文件系统。

详细区别https://michaelyou.github.io/2017/09/17/Docker%E6%95%B0%E6%8D%AE%E7%AE%A1%E7%90%86-Volume%EF%BC%8C-bind-mount%E5%92%8Ctmpfs-mount/

f1f6a1993ca0c8b76583492f2ce966c6.png

Dockerfile

DockerFile

# 使用官方提供的 Python 开发镜像作为基础镜像 
FROM python:2.7-slim 
# 将工作目录切换为 /app 
WORKDIR /app 
# 将当前目录下的所有内容复制到 /app 下 
ADD . /app
# 使用 pip 命令安装这个应用所需要的依赖 
RUN pip install --trusted-host pypi.python.org -r requirements.txt 
# 允许外界访问容器的 80 端口 
EXPOSE 80 
# 设置环境变量 
ENV NAME World 
# 设置容器进程为:python app.py,即:这个 Python 应用的启动命令 
CMD ["python", "app.py"]

其中,RUN 原语就是在容器里执行 shell 命令的意思。

而 WORKDIR,意思是在这一句之后,Dockerfile 后面的操作都以这一句指定的 /app 目录作为当前目录。

Dockerfile中的ENTRYPOINT指令和CMD指令都可以设置容器启动时要执行的命令,但用途是有略微不同的。

cmd : cmd给出的是一个容器的默认的可执行体。也就是容器启动以后,默认的执行的命令。重点就是这个“默认”。意味着,如果docker run没有指定任何的执行命令或者dockerfile里面也没有entrypoint,那么,就会使用cmd指定的默认的执行命令执行。可以被docker run 语句覆盖。

entrypoint : 是真正的容器启动以后要执行命令。不会被docker run 语句覆盖。

所以,到了最后的 CMD,意思是 Dockerfile 指定 python app.py 为这个容器的进程。这里,app.py 的实际路径是 /app/app.py。所以,CMD [“python”, “app.py”] 等价于 "docker run python app.py"。另外,在使用 Dockerfile 时,你可能还会看到一个叫作 ENTRYPOINT 的原语。实际上,它和CMD 都是 Docker 容器进程启动所必需的参数,完整执行格式是:“ENTRYPOINT CMD”。

但是,默认情况下,Docker 会为你提供一个隐含的 ENTRYPOINT,即:/bin/sh -c。所以,在不指定 ENTRYPOINT 时,比如在我们这个例子里,实际上运行在容器里的完整进程是:/bin/sh -c “python app.py”,即 CMD 的内容就是 ENTRYPOINT 的参数。

备注:基于以上原因,我们后面会统一称 Docker 容器的启动进程为ENTRYPOINT,而不是 CMD。

需要注意的是,Dockerfile 里的原语并不都是指对容器内部的操作。就比如ADD,它指的是把当前目录(即 Dockerfile 所在的目录)里的文件,复制到指定容器内的目录当中。

读懂这个 Dockerfile 之后,我再把上述内容,保存到当前目录里一个叫“Dockerfile”的文件中:

$ ls
Dockerfile app.py requirements.txt

接下来,我就可以让 Docker 制作这个镜像了,在当前目录执行:

docker build -t helloworld .

其中,-t 的作用是给这个镜像加一个 Tag,即:起一个好听的名字。docker build 会自动加载

当前目录下的 Dockerfile 文件,然后按照顺序,执行文件中的原语。而这个过程,实际上可以

等同于 Docker 使用基础镜像启动了一个容器,然后在容器中依次执行 Dockerfile 中的原语。

需要注意的是,Dockerfile 中的每个原语执行后,都会生成一个对应的镜像层。即使原语本身

并没有明显地修改文件的操作(比如,ENV 原语),它对应的层也会存在。只不过在外界看来,这个层是空的。

其他字段

ARG 参数名 = 参数值

构建参数和 ENV 的效果一样,都是设置环境变量。所不同的是,ARG 所设置的构建环境的环境变量,在将来容器运行时是不会存在这些环境变量的。

docker compose

用于定义和运行多个Docker应用程序的工具

#启动相关服务
docker-compose up -d
#编译服务
docker-compose build .
#停止相关服务
docker-compose down
#删除服务
docker-compose rm 服务名
#运行单个服务(容器)
docker-compose run 服务名

Compose 使用的三个步骤:

  • 使用 Dockerfile 定义应用程序的环境。
  • 使用 docker-compose.yml 定义构成应用程序的服务,这样它们可以在隔离环境中一起运行。
  • 最后,执行 docker-compose up 命令来启动并运行整个应用程序。

quick start

1、准备

创建一个测试目录:

$ mkdir composetest
$ cd composetest

在测试目录中创建一个名为 app.py 的文件,并复制粘贴以下内容:

import time
import redis
from flask import Flask
app = Flask(__name__)
cache = redis.Redis(host='redis', port=6379)
def get_hit_count():retries = 5while True:try:return cache.incr('hits')except redis.exceptions.ConnectionError as exc:if retries == 0:raise excretries -= 1time.sleep(0.5)@app.route('/')
def hello():count = get_hit_count()return 'Hello World! I have been seen {} times.n'.format(count)

在此示例中,redis 是应用程序网络上的 redis 容器的主机名,该主机使用的端口为 6379。

在 composetest 目录中创建另一个名为 requirements.txt 的文件,内容如下:

flask
redis

2、创建 Dockerfile 文件

在 composetest 目录中,创建一个名为的文件 Dockerfile,内容如下:

FROM python:3.7-alpine
WORKDIR /code
ENV FLASK_APP app.py
ENV FLASK_RUN_HOST 0.0.0.0
RUN apk add --no-cache gcc musl-dev linux-headers
COPY requirements.txt requirements.txt
RUN pip install -r requirements.txt
COPY . .
CMD ["flask", "run"]

3、创建 docker-compose.yml

在测试目录中创建一个名为 docker-compose.yml 的文件,然后粘贴以下内容:

# yaml 配置
version: '3'
services:web:build: .ports:- "5000:5000"redis:image: "redis:alpine"

4、使用 Compose 命令构建和运行您的应用

在测试目录中,执行以下命令来启动应用程序:

docker-compose up

如果你想在后台执行该服务可以加上 -d 参数:

docker-compose up -d

(目录下要有Dockerfile,docker-compose.yml,其他需要用到的文件)

nvidia-docker

运行容器

# --shm-size 16G将tmpfs的大小改为16G(内存空间)
docker run --runtime=nvidia --gpus all --shm-size 16G -it -d --name 容器名 镜像名

/dev/shm/介绍:

/dev/shm/是linux下一个非常有用的目录,因为这个目录不在硬盘上,而是在内存里。默认系统就会加载/dev/shm ,它就是所谓的tmpfs

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

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

相关文章

edge播放视频HTML5黑屏,edge不能播放网页视频怎么办-修复edge浏览器播放视频黑屏的方法 - 河东软件园...

Microsoft Edge是微软在更新win10系统的同时发布的一款新浏览器&#xff0c;它基于IE浏览器设计&#xff0c;是新一代的微软指定浏览器&#xff01;这款浏览器从上市到现在一直都是备受争议的软件&#xff0c;有的用户喜欢使用IE&#xff0c;也有用户喜欢Edge。在使用新版本的e…

c语言乘法口诀表的流程图_例18:C语言编程实现九九乘法表

例18&#xff1a;C语言编程实现九九乘法表&#xff0c;样式要求长方形、右三角形、左三角形。解题思路&#xff1a;这个问题的算法很简单&#xff0c;就是两个for循环的嵌套&#xff0c;三角形的样式就是多了一些空格。长方形源代码演示&#xff1a;#include<stdio.h>//头…

python包和目录有什么不同_python模块和包的区别

在计算机程序的开发过程中&#xff0c;随着程序代码越写越多&#xff0c;在一个文件里代码就会越来越长&#xff0c;越来越不容易维护。为了编写可维护的代码&#xff0c;我们把很多函数分组&#xff0c;分别放到不同的文件里&#xff0c;这样&#xff0c;每个文件包含的代码就…

2021年宝鸡中学高考成绩查询,宝鸡中学排名前十名,2021年宝鸡中学排名一览表

很多家长关心宝鸡2020年最新的中学排名&#xff0c;选择一所好的中学尤为重要&#xff0c;本文小编整理了一些关于2020年宝鸡最新的中学排名相关数据&#xff0c;仅供参考。一、宝鸡中学排名前十名名单排名学校名称人气所在省所在市类型1扶风县扶风高中2822陕西宝鸡市省级示范高…

linux卸载python3_linux卸载python3

广告关闭 腾讯云11.11云上盛惠 &#xff0c;精选热门产品助力上云&#xff0c;云服务器首年88元起&#xff0c;买的越多返的越多&#xff0c;最高返5000元&#xff01; 一、卸载自带python1.rpm -qa | grep python | xargs rpm -e --allmatches --nodeps强制卸载自带的python以…

我xp电脑桌面没有计算机图标不见了,xp系统我的电脑图标不见了怎么办|如何找回我的电脑图标-系统城...

xp系统我的电脑图标不见了怎么办&#xff1f;我们使用xp电脑过程中&#xff0c;有时候会不小心把我的电脑图标给弄丢了&#xff0c;对于一些新手来说&#xff0c;不知道我的电脑图标不见了怎么解决&#xff0c;下面小编就教大家如何找回雨林木风xp纯净版系统我的电脑图标。XP我…

bootstrap 导航菜单 折叠位置_python测试开发django44.xadmin自定义菜单项

前言xadmin后台的菜单项是放到一个app下的&#xff0c;并且里面的排序是按字母a-z排序&#xff0c;有时候我们需要划分多个项&#xff0c;需要自定义菜单列表&#xff0c;可以通过重写CommAdminView类实现。xadmin后台提供了多个主题&#xff0c;可以通过use_bootswatchTrue设置…

悲观锁和乐观锁_带你了解MySQL中的乐观锁与悲观锁

在并发控制编程中锁是一个非常重要的概念&#xff0c;锁对于数据和业务一致性的保证起到关键作用&#xff0c;锁可以是程序层面的&#xff0c;也可以是数据库层面的&#xff0c;今天本文就通过MySQL来说明悲观锁与乐观锁两种常见的锁机制。悲观锁悲观锁(Pessimistic Lock)的特点…

计算机网络解释概念,2017年计算机三级网络技术基本概念与名词解释:计算机网络的基本概念...

计算机网络的基本概念112. 计算机网络&#xff1a;计算机网络是利用通信设备和线路将分布在不同地点、功能独立的多个计算机互连起来&#xff0c;通过功能完善的网络软件&#xff0c;实现网络中资源共享和信息传递的系统。计算机网络由资源子网和通信子网构成。113. 通信子网&a…

怎么打开网络访问 计算机共享,电脑只要打开共享提示“无法启用共享访问”如何解决...

电脑升级到雨林木风win7系统后发现一个问题&#xff0c;那就是无法启用共享访问了&#xff0c;每次打开都会弹出提示“无法启用共享访问 错误Ox80004005&#xff1a;未指定的错误”&#xff0c;即使重装系统也没办法解决。后面检查后发现是关闭了“Windows firewall”服务进程造…

用户信息填写web代码_Web前端常见问题汇总

1.get 和post的区别1.1数据传输大小&#xff1a;get 传输数据大小限制在1KB&#xff0c;post传输数据大小没有严格限制1.2缓存和安全&#xff1a;get请求某个url&#xff0c;数据追加到url中发送&#xff08;http的header传送&#xff09;&#xff0c;即浏览器将各个表单字段元…

qq农场 html5,腾讯客服-QQ农场/牧场-QQ农场打不开该怎么解决?

QQ农场打不开该怎么解决&#xff1f;若在您的电脑网络环境没有问题的情况下&#xff0c;QQ农场无法打开&#xff0c;请您查看客服网站右上角的公告信息是否当天系统在升级维护中&#xff0c;若是系统升级维护中&#xff0c;可能会导致农场无法正常进入&#xff0c;界时请您更换…

php三级分销系统制作_微分销商城系统创建三级微商分销体系方法

微分销商城系统如何完善创建三级微商分销体系&#xff0c;微商城的建设成为现在商家的新选&#xff0c;如果成功经营&#xff0c;将会让商家获得大量收益。下面就让摩盒mohe详细说说。1、系统一键分销功能促使微商城提升销量分销商城系统的好坏&#xff0c;决定着微商城用户能否…

未来的科学计算机作文800字,未来的高科技学校作文800字

未来的高科技学校作文800字二十年以后&#xff0c;我们的学校也变成了高科技的学校。早晨我来到学校门口&#xff0c;发现学校没有大门。这是怎么回事&#xff1f;难道学校不怕有坏人吗&#xff1f;我心想。这时&#xff0c;我的身边突然出现了一个身上有许多按钮的机器人。它说…

jaccard相似度_如何计算两个字符串之间的文本相似度?

推荐阅读&#xff1a;面试BAT 却被小小字符串秒杀&#xff1f;这13道题帮你一举击败字符串算法题字节跳动秋招面经&#xff1a;后端开发工程师&#xff0c;已拿意向书前言平时的编码中&#xff0c;我们经常需要判断两个文本的相似性&#xff0c;不管是用来做文本纠错或者去重等…

java按钮陷下去_付费?广告?捐款?如何让开源软件活下去?

【CSDN编者按】作为一名使用开源软件的开发者&#xff0c;你是否曾思考过开源软件是如何盈利&#xff1f;如何运营下去的&#xff1f;本文作者从正反两面给出自己看到的案例和建议&#xff0c;思考让开源软件持续下去的方式&#xff0c;一起来看看吧。作者 | TJ VanToll译者 | …

教资计算机科学与技术教资,教资笔试查成绩啦!广师大未来教师们又前进一步...

原标题&#xff1a;教资笔试查成绩啦&#xff01;广师大未来教师们又前进一步这里是今日起考生登录ntce.neea.edu.cn“中小学教师资格考试网”即可查询笔试成绩啦惊不惊喜 意不意外查成绩的人这么多可以看出考取教师资格证已然成为大学生中的“香饽饽”日前&#xff0c;茂名滨海…

控制台启动jar包关闭控制台怎么关java程序_Jpom一款简而轻的低侵入式Java运维、监控软件...

你为什么需要JpomSpringBoot、Jboot等框架开发的项目通常是以Jar的方式在后台运行的&#xff0c;如果只有一两个项目&#xff0c;管理起来不是太麻烦&#xff0c;但是当项目多了以后&#xff0c;管理起来就不是那么方便了&#xff0c;当项目出现问题时&#xff0c;能够通过Jpom…

台式计算机如何双屏显示,电脑怎么分屏?|台式电脑双显示器连接方法

电脑怎么分屏&#xff1f;|台式电脑双显示器连接方法阅读&#xff1a;497时间&#xff1a;2019-08-10 23:24:36随着人们对时间效率的看中&#xff0c;比如在看报表的同时看电影&#xff0c;工作娱乐两不误&#xff0c;如果你也想要这样的工作环境&#xff0c;我们可以给电脑…

解释型语言和编译型语言的区别_从泛型的使用情况看出你对语言的理解程度(2)...

上篇我们提到&#xff1a;Java中的泛型是不可变的&#xff0c;可以通过<? extends E>实现了泛型的协变&#xff0c;<? super E>实现泛型的逆变。从泛型的使用情况看出你对语言的理解程度&#xff08;1&#xff09;今天我们来讲讲泛型单例工厂&#xff0c;在之前的…