docker的使用

WT588D 语音芯片及模块应用电路 采用 DC3.3V 供电时,可以直接短接 VDD 跟 VCC,采用 DC5V 供电时,VDD 端接 5V,VCC 端需要从 VDD 端串接两个二极管以提供工作电压。采用 DC3.3V 供电时,可以直接短接 VDD 跟 VCC,采用 DC5V 供电时,VDD 端接 5V,VCC 端需要从 VDD 端串接两个二极管以提供工作电压。采用 DC3.3V 供电时,可以直接短接 VDD 跟 VCC,采用 DC5V 供电时,VDD 端接 5V,VCC 端需要从 VDD 端串接两个二极管以提供工作电压。 阅读详情
1查看 docker 程序是否存在,功能是否正常
$ sudo docker info  
Containers: 0  
Images: 0  
Storage Driver: aufs  
 Root Dir: /var/lib/docker/aufs  
 Dirs: 144  
Execution Driver: native-0.1  
Kernel Version: 3.8.0-29-generic  
Registry: [https://index.docker.io/v1/]

在这里我们调用了docker可执行程序的info命令,该命令会返回所有容器和镜像(镜像即是Docker用来构建容器的“构建块”)的数量、Docker使用的执行驱动和存储驱动(execution and storage driver),以及Docker的基本配置。

2 运行我们的第一个容器

我们可以使用docker run命令创建容器

$ sudo docker run -i -t ubuntu /bin/bash  
Pulling repository ubuntu from https://index.docker.io/v1  
Pulling image 8dbd9e392a964056420e5d58ca5cc376ef18e2de93b5cc90e868a1bbc8318c1c (precise) from ubuntu  
Pulling 8dbd9e392a964056420e5d58ca5cc376ef18e2de93b5cc90e868a1bbc8318c1c metadata  
Pulling 8dbd9e392a964056420e5d58ca5cc376ef18e2de93b5cc90e868a1bbc8318c1c fs layer  
Downloading 58337280/? (n/a)  
Pulling image b750fe79269d2ec9a3c593ef05b4332b1d1a02a62b4accb2c21d589ff2f5f2dc (quantal) from ubuntu  
Pulling image 27cf784147099545 () from ubuntu  
root@fcd78e1a3569:/#

$ sudo docker run -i -t ubuntu /bin/bash

首先,我们告诉Docker执行docker run命令,并指定了-i和-t两个命令行参数。-i标志保证容器中STDIN是开启的,尽管我们并没有附着到容器中。持久的标准输入是交互式shell的“半边天”,-t标志则是另外“半边天”,它告诉Docker为要创建的容器分配一个伪tty终端。这样,新创建的容器才能提供一个交互式shell。若要在命令行下创建一个我们能与之进行交互的容器,而不是一个运行后台服务的容器,则这两个参数已经是最基本的参数了。

3 使用第一个容器

检查容器的主机名

root@f7cbdac22a02:/# hostname  
f7cbdac22a02

检查容器的/etc/hosts文件

root@f7cbdac22a02:/# cat /etc/hosts  
172.17.0.4  f7cbdac22a02  
127.0.0.1 localhost  
::1 localhost ip6-localhost ip6-loopback  
fe00::0 ip6-localnet  
ff00::0 ip6-mcastprefix  
ff02::1 ip6-allnodes  
ff02::2 ip6-allrouters

检查容器的接口

root@f7cbdac22a02:/#  ip a  
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN group default  
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00  
    inet 127.0.0.1/8 scope host lo  
    inet6 ::1/128 scope host  
       valid_lft forever preferred_lft forever  
899: eth0: <BROADCAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000  
    link/ether 16:50:3a:b6:f2:cc brd ff:ff:ff:ff:ff:ff  
    inet 172.17.0.4/16 scope global eth0  
    inet6 fe80::1450:3aff:feb6:f2cc/64 scope link  
       valid_lft forever preferred_lft forever

我们可以看到,这里有lo的环回接口,还有IP为172.17.0.4的标准eth0网络接口,和普通宿主机是完全一样的。我们还可以查看容器中运行的进程

检查容器的进程

root@f7cbdac22a02:/#  ps -aux  
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND  
root         1  0.0  0.0  18156  1936 ?        Ss   May30   0:00 /bin/bash  
root        21  0.0  0.0  15568  1100 ?        R+   02:38   0:00 ps -aux

在第一个容器中安装软件包

root@f7cbdac22a02:/# apt-get update && apt-get install vim


4 容器命名

给容器命名

$ sudo docker run --name bob_the_container -i -t ubuntu /bin/bash  
root@aa3f365f0f4e:/# exit

上述命令将会创建一个名为bob_the_container的容器。一个合法的容器名称只能包含以下字符:小写字母a~z、大写字母A~Z、数字0~9、下划线、圆点、横线(如果用正则表达式来表示这些符号,就是[a-zA-Z0-9_.-])。

5 重新启动已经停止的容器

启动已经停止运行的容器

$ sudo docker start bob_the_container

除了容器名称,我们也可以用容器ID来指定容器

6 附着到容器上

附着到正在运行的容器

$ sudo docker attach bob_the_container

7 创建守护式容器

创建长期运行的容器

$ sudo docker run --name daemon_dave -d ubuntu /bin/sh -c "while true; do echo hello world; sleep 1; done"  
1333bb1a66af402138485fe44a335b382c09a887aa9f95cb9725e309ce5b7db3

我们在上面的docker run命令使用了-d参数,因此Docker会将容器放到后台运行。

我们还在容器要运行的命令里使用了一个while循环,该循环会一直打印hello world,直到容器或其进程停止运行。如果我们执行docker ps命令,可以看到一个正在运行的容器

8容器内部都在干些什么

获取守护式容器的日志

$ sudo docker logs daemon_dave  
hello world  
hello world  
hello world  
hello world  
hello world  
hello world  
hello world  

我们也可以跟踪容器日志的某一片段,和之前类似,只需要在 tail 命令后加入 -f --lines 标志即可。例如,可以用 docker logs --tail 10 daemon_dave 获取日志的最后10行内容。另外,也可以用 docker logs --tail 0 -f daemon_dave 命令来跟踪某个容器的最新日志而不必读取整个日志文件。

9 查看容器内的进程

查看守护式容器的进程

$ sudo docker top daemon_dave

该命令执行后,我们可以看到容器内的所有进程(主要还是我们的while循环)、运行进程的用户及进程ID

docker``top命令的输出结果

PID  USER COMMAND  
977  root /bin/sh -c while true; do echo hello world; sleep 1; done  
1123 root sleep 1

10 在容器内部运行进程

在容器中运行后台任务

$ sudo docker exec -d daemon_dave touch /etc/new_config_file

这里的-d标志表明需要运行一个后台进程,-d标志之后,指定的是要在内部执行这个命令的容器的名字以及要执行的命令。上面例子中的命令会在daemon_dave容器内创建了一个空文件,文件名为/etc/new_config_file。通过docker exec后台命令,我们可以在正在运行的容器中进行维护、监控及管理任务。

在容器内运行交互命令

$ sudo docker exec -t -i daemon_dave /bin/bashVersion:

和运行交互容器时一样,这里的-t和-i标志为我们执行的进程创建了TTY并捕捉STDIN。接着我们指定了要在内部执行这个命令的容器的名字以及要执行的命令。在上面的例子中,这条命令会在daemon_dave容器内创建一个新的bash会话,有了这个会话,我们就可以在该容器中运行其他命令了。

11 停止守护式容器

停止正在运行的Docker容器

$ sudo docker stop daemon_dave

12 自动重启容器

自动重启容器

$ sudo docker run --restart=always --name daemon_dave -d ubuntu /  
bin/sh -c "while true; do echo hello world; sleep 1; done"

在本例中,--restart标志被设置为always。无论容器的退出代码是什么,Docker都会自动重启该容器。除了always,我们还可以将这个标志设为on-failure,这样,只有当容器的退出代码为非0值的时候,才会自动重启。另外,on-failure``还接受``一个可选的重启次数参数

为on-failure指定count参数

--restart=on-failure:5

这样,当容器退出代码为非0时,Docker会尝试自动重启该容器,最多重启5次。

13 深入容器

查看容器

$ sudo docker inspect daemon_dave  
[{  
    "ID": "c2c4e57c12c4c142271c031333823af95d64b20b5d607970c334784430bcbd0f",  
    "Created": "2014-05-10T11:49:01.902029966Z",  
    "Path": "/bin/sh",  
    "Args": [  
        "-c",  
        "while true; do echo hello world; sleep 1; done"  
    ],  
    "Config": {  
        "Hostname": "c2c4e57c12c4",  
. . .

docker inspect命令会对容器进行详细的检查,然后返回其配置信息,包括名称、命令、网络配置以及很多有用的数据。

有选择地获取容器信息

$ sudo docker inspect --format='{{ .State.Running }}' daemon_dave  
false

上面这条命令会返回容器的运行状态,示例中该状态为false。我们还能获取其他有用的信息,如容器IP地址

查看容器的IP地址

$ sudo docker inspect --format '{{ .NetworkSettings.IPAddress }}' \  
daemon_dave  
172.17.0.2

查看多个容器

$ sudo docker inspect --format '{{.Name}} {{.State.Running}}' \  
daemon_dave bob_the_container  
/daemon_dave false  
/bob_the_container false

我们可以为该参数指定要查询和返回的查看散列(inspect hash)中的任意部分。

14 删除容器

删除容器

$ sudo docker rm 80430f8d0921  
80430f8d0921

删除所有容器

docker rm `docker ps -a -q`

上面的docker ps命令会列出现有的全部容器,-a标志代表列出所有(all)容器,而-q标志则表示只需要返回容器的ID而不会返回容器的其他信息。这样我们就得到了容器ID的列表,并传给了docker rm命令,从而达到删除所有容器的目的。


15 docker自定义IP网段

 
   
第一步:安装最新版的Docker
备注:操作系统自带的docker的版本太低,不支持静态IP,因此需要自定义安装。
root@localhost:~# apt-get update
root@localhost:~# apt-get install curl
root@localhost:~# curl -fsSLhttps://get.docker.com/ | sh
root@localhost:~# docker -v
Docker version 1.10.3, build 20f81dd


 
   
第二步:创建自定义网络
备注:这里选取了172.18.0.0网段,也可以指定其他任意空闲的网段
docker network create --subnet=172.18.0.0/16 shadownet
注:shadown为自定义网桥的名字,可自己任意取名。

 
    
第三步:在你自定义的网段选取任意IP地址作为你要启动的container的静态IP地址
备注:这里在第二步中创建的网段中选取了172.18.0.10作为静态IP地址。这里以启动shadowsocks为例。
docker run -d -p 2001:2001 --net shadownet --ip 172.18.0.10 oddrationale/docker-shadowsocks -s 0.0.0.0 -p 2001 -k 123456 -m aes-256-cfb

如果需要将指定IP地址的容器出去的请求的源地址改为宿主机上的其他可路由IP地址,可用iptables来实现。比如将静态IP地址172.18.0.10出去的请求的源地址改成公网IP104.232.36.109(前提是本机存在这个IP地址)iptables -t nat -I POSTROUTING -o eth0 -d  0.0.0.0/0 -s 172.18.0.10  -j SNAT --to-source 104.232.36.109

16基础镜像 Commit 生成镜像

除了通过 Dockerfile 来打包生成镜像外,也可以通过 Docker Commit 来生成镜像。通过 Commit 打包的镜像多是由于应用本身在部署时有大量的交互内容,无法通过命令来指定。 在通过 Commit 打包镜像时,我们需要如下操作: 

1.启动一个基础镜像容器,并进入 console docker run -i – t centos:6.7 上面的命令创建了一个基于 CentOS 6.7 的容器,并进入到容器内

2.执行配置环境的命令 登陆容器后,可以执行各种 Linux 下的命令。

等配置完环境后,打开一个新的控制台 执行命令docker ps,可以看到正在运行的容器,比如我的容器的 ID 就是 35f1c2ae1f7e 

 

3.将容器打包成镜像 执行命令 docker commit 35f1c2ae1f7e mynewimage 就将容器35f1c2ae1f7e打包为新的镜像mynewimage了

可以执行docker images查看镜像 



【docker】Linux docker 使用教程 docker配置Ubuntu环境 阅读详情

相关推荐

588D语音芯片及模块应用电路

WT588D语音芯片说明及调试软件,588D语音芯片及模块应用电路.pdf

单片机超声波测距+WTD588D语音播报的设计

在空气介质中超声测距传感器因其性能好,价格低廉、使用方便,在现场机器人定位系统、车辆自动导航、车辆安全行驶辅助系统、城市交通管理和高速公路管理监测系统,以及河道、油井和仓库及料位的探测中都有应用。由于超声波传播不易受干扰,能量消耗缓慢,在介质中传播的距离较远,因而超声波经常用于距离的测量,如测距和物位测量等都可以通过超声波来实现。为此,深入研究超声波的产生与传播规律、开发高性能超声波换能器及其收发电路,对于超声波检测技术的发展具有十分重要的现实意义。 本设计介绍了基于单片机控制的超声测距的原理:由STC8

runweipa的博客 1989

588D语音程序

588D语音程序 单片机 三线和一线控制例程.c

docker的入门使用—太详细了

你的项目只需要三步,在当前目录下再加一个dockerfile文件 ——>docker build创建镜像 ——>docker run运行容器的命令后,你的项目就可以运行跑起来了,此时就形成了容器但是每次部署的话,总是要执行docker build创建镜像 ——> docker run运行容器 会显得很麻烦,那么可以在dockerfile文件里面指定挂载目录,这样可以及时同时生效,省去前面两个命令一个项目一个容器,两个项目两个容器,两个容器之间如何互相通信,比如前端和后端的服务,此时我们可以。

飞得更高肥尾沙鼠 1万+

WT588D语音芯片及模块详细资料V2.10.zip_V2 _W588D资料_WTD588D资料

详细介绍588D应用以及对应电路推荐,比较好

从零到一:RK3588嵌入式开发中的SDK与MPP集成实战解析

本文详细解析了RK3588嵌入式开发中SDK与MPP(Media Process Platform)的集成实战,涵盖开发环境构建、SDK架构解析、MPP集成关键技术点及常见问题诊断。通过Qt5.12.10交叉编译环境配置和硬件加速优化,帮助开发者高效完成嵌入式视觉项目开发,特别适合边缘计算应用场景。

weixin_29189381的博客 510

Docker 入门到实战教程(一)介绍Docker

一. Docker简介1.1 什么是虚拟化?在计算机中,虚拟化(英语:Virtualization)是一种资源管理技术,是将计算机的各种实体资源,如服务...

李浩东的博客 90万+

Matlab2018a崩溃解决的办法No sandbox or build area path

Matlab 2018a (No sandbox or build area path)出现崩溃后需要使用terminal进行如下操作: cd /home/david/MySoft/MATLAB/R2018a/bin/glnxa64 (你的matlab路径) mkdir exclude mv libfreetype* exclude/ 执行后图片如下: 如果你用的Windows系统,请手动按照上面步骤剔除了dll。 Matlab 2018a (No sandbox or build are

David Xiao 1万+

docker中使用git_如何在 Docker 中使用 Docker

1. 典型适用场景在 CI 中,通常会有一个 CI Engine 负责解析流程,控制整个构建过程,而将真正的构建交给 Agent 去完成。例如,Jenkins 、GitLab 均是如此。如下图, 连接 CI Engine 的 Agent, 种类很多。这是为了满足不同项目对构建环境的要求。同时 Agent 是动态的,构建时才需要,构建完成时即销毁。CI 非常适合实践容器、Serverles...

weixin_29474431的博客 2821

华为OD机试 双机位A卷 - 流量波峰 (C++ & Python & JAVA & JS & GO)

华为OD机试双机位A卷 流量波峰,提供Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解

qq_45776114的博客 1377

YOLOv8改进 | 注意力机制 | 添加HAttention(HAT)超分辨率重建助力小目标检测 (全网首发,超分辨率检测)

本文给大家带来的改进机制是HAttention注意力机制,混合注意力变换器(HAT)的设计理念是通过融合通道注意力和自注意力机制来提升单图像超分辨率重建的性能。通道注意力关注于识别哪些通道更重要,而自注意力则关注于图像内部各个位置之间的关系。HAT利用这两种注意力机制,有效地整合了全局的像素信息,从而提供更为精确的结果(这个注意力机制挺复杂的光代码就700+行),但是效果挺好的也是10月份最新的成果非常适合添加到大家自己的论文中。⭐⭐⭐⭐⭐(最新的改进机制)

Snu77的博客 1万+

【Docker】ubuntu中 Docker的使用

Dockerfile是一个文本文件,其中包含了一系列指令,这些指令定义了如何从基础镜像创建一个新的Docker镜像。通过执行。

magic_ll的博客 5528

【PCIe EP 设备入门学习专栏 -- 8 PCIe EP 架构详细介绍】

Synopsys PCIe 5.0 EP 架构由多个功能模块组成,整体遵循分层 + 模块化设计CXPL(事务层 + 链路层 + 物理层 MAC)XADM(仲裁/生成)、XAIM(应用接口)RADM(过滤/路由/Completion)CDM(配置空间)、PMC(电源管理)、LBC/DBI(寄存器访问)MSG_GEN(消息)、CXS(多芯片一致性)

CodingCos的博客 382

Win10中docker的安装与使用

WIN10中DOCKER的安装与使用 WIN10中DOCKER的安装与使用 1.docker的安装 环境准备 下载安装 2.docker的入门 开始使用 3.docker的常用配置 在PowerShell中设置 tab键自动补全(其实用的都是cmd.exe) Settings 4.用Dockerfile定义一个镜像 新建目录文件 构建镜像 停止容器运行 ...

欢迎来到打不死的小强的专栏 25万+

【GEOS-Chem模拟教程第二期下】全球生物质燃烧 GFAS 数据配置

本博客详细介绍全球生物质燃烧 GFAS 数据下载及在 GEOS-CHEM 模型中的配置

WW、forever的博客 1395

ArcGIS实验教程——实验十九:网络分析(最短路径实现)

一、实验描述 网络分析模块用于实现基于网络数据集的网络分析功能,包括路径分析、服务区分析、最近设施点分析、OD成本矩阵分析、多路径配送分析、位置分配分析和高级网络的管理与创建等。 网络数据集不同于几何网络,是一种高级的连接模型,能够展示复杂的细节,拥有丰富的网络属性模型,可以模拟网络阻力、网络限制以及网络层次等。 本实验重点演示网络分析中最短路径的实现过程。 二、实验内容 1、网络数据集...

智慧空间实验室 5681

如何在 Docker 中使用 Docker

公众号关注「奇妙的 Linux 世界」设为「星标」,每天带你玩转 Linux !1. 典型适用场景在 CI 中,通常会有一个 CI Engine 负责解析流程,控制整个构建过程,而将真...

easylife206的专栏 744

【异常】OpenClaw报错 400 Total tokens of image and text exceed max message tokens. Request

OpenClaw报错400(Token超限)解决方案摘要 该报错因文本/图片总Token数超过模型限额导致,常见于多轮对话累积或单次请求过大。提供三级解决方案: 应急处理:输入"/new"指令清空会话历史,立即重置Token计数(90%问题可解决) 折中方案:保留历史对话前提下,通过精简当前输入、删除早期无关对话或拆分请求来压缩Token 专属处理:单次请求超限时,拆分长文本为2000字以内段落,或分批次上传降低分辨率图片 长期预防建议定期使用"/new"开启新会话,

奶爸的编程之路,也就一周冷个三天 1390

在Ubuntu上安装Docker以及使用

通过以上步骤,您已经成功在Ubuntu系统上安装并配置了Docker,并能够开始使用Docker容器来开发和部署应用程序了。为了确保下载的Docker包的安全性,需要添加Docker的官方GPG密钥。在安装Docker之前,首先需要更新系统的软件包索引。如果一切正常,将看到一条欢迎消息,表明Docker已成功运行一个容器。添加后,需要注销并重新登录,或者重启系统,以便更改生效。如果容器已经在运行,但您想进入容器内部执行命令,可以使用。,则表示Docker服务已成功配置为在启动时自动运行。

蜡笔小新星的博客 4277

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

Docker在Windows下的安装及使用

docker windows docker-destop;安装redis;安装mysql;安装nacos;安装minio;安装xxl-job;使用docker-compose管理容器;

七夜同学的博客 4万+

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

[docker]Docker 镜像使用

当运行容器时,使用的镜像如果在本地中不存在,docker 就会自动从 docker 镜像仓库中下载,默认是从 Docker Hub 公共镜像源下载。

FL1768317420的博客 1245

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

docker以及nvidia-docker的安装、移植以及使用案例

详细描述docker 、nvidia-docker的安装步骤,通过案例描述docker的基本使用命令,包含docker 创建、移植、加载等。文档真实案例编写,亲测可用,傻瓜式教程,直接复制即可成功安装

cai13502119775的博客 2606

docker使用

访问本地9002端口即可,默认的index.html在/home/nginx/nginx_html/html目录下,修改即可。#Metadata,Lock最大时长(秒),一般用于控制,alter操作的最大时长sine_mysql5、6。docker exec -it ‘(容器ID,通过docker ps 查看)’ /bin/bash。下载完上传到/usr/local/bin下,重命名为docker-compose。`/bin/bash`:容器启动后执行的命令,这里会启动bash shell。

hhhheeeennnnyyy的博客 756

Docker学习—Docker的安装与使用

即把自己的java应用,定义成镜像部署到docker容器中。镜像结构是分层的,有一些已经拉取过的基础镜像就不用拉取了,节省空间。

maruofan666的博客 1235

docker 简单使用

进入容器查看,里面已经有了我们复制进来的test.log并且预先安装了软件包:至此,docker简单使用已完成能力一般,水平有限,希望能帮到您。

Aaronlxx的博客 895
上一篇: war包部署tomcat下,项目中log4j2日志不输出到文件中
下一篇: Spring AOP详细介绍
WTD654321
博客等级 码龄12年 1粉丝 28原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值