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应用以及对应电路推荐,比较好

Gartner《构建可扩展数据产品建设框架》心得

数据产品化:从概念到落地的实践指南 当前企业正从传统数据需求模式转向数据产品化新范式。本文系统阐述了数据产品的核心价值、定义分类和实施框架,指出成功关键是将数据包装为可复用、可扩展的产品。Gartner框架强调产品思维,提出4阶段12步实施路径,涵盖设计、工程、发布和监控全流程。文章特别提醒要避免7大常见误区,如简单重命名报表、忽视元数据治理等,建议采取MVP策略,90天内完成从价值验证到产品落地的闭环。实施中需平衡技术选型与业务需求,建立跨职能团队,并通过AARRR模型持续追踪产品价值。

2501_91410404的博客 1002

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

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

李浩东的博客 90万+

微信小店推客分销系统源码获取与自研开发全攻略(2025年最新版)

源码选择建议快速试错:选用开源项目(如启航系统),3天可上线基础功能长期布局:购买商业源码授权,重点定制分佣规则与UI交互完全自研:适合年GMV过亿的大型企业,需前置投入风控与合规设计行动清单注册微信开放平台账号,完成视频号机构认证下载开源项目代码,部署本地测试环境联系三家源码供应商,获取合规性审计报告设计三级分佣比例表,通过法律顾问合规审查通过以上路径,可高效构建合规、稳定、高转化的微信小店推客分销系统,抢占2025年视频号电商红利。

2401_85184777的博客 1283

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

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

weixin_29474431的博客 2821

基于EKF的UWB-IMU融合定位系统在农业机器人中的抗干扰优化与Matlab仿真

本文探讨了基于扩展卡尔曼滤波(EKF)的UWB-IMU传感器融合定位系统在农业机器人中的应用。通过Matlab仿真验证,该系统有效解决了农业环境中UWB信号遮挡和IMU累积误差问题,实现了厘米级高精度定位,显著提升了机器人在复杂场景下的抗干扰能力和导航可靠性。

numpy6sculptor的博客 622

XVF3800麦克风阵列实战:从选型到快速原型搭建

本文详细介绍了XVF3800麦克风阵列的选型与快速原型搭建实战经验。从开箱即用的特性到波束成形、回声消除等核心功能拆解,再到硬件设计避坑指南和固件开发技巧,帮助开发者高效实现智能语音设备的开发。特别适合智能音箱、会议终端等需要远场拾音和声源定位的应用场景。

weixin_29161719的博客 274

【Docker】ubuntu中 Docker的使用

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

magic_ll的博客 5528

算法 | 基于灰狼优化算法的无人机三维路径规划方法研究(附matlab代码)

针对复杂环境下的无人机三维路径规划问题,本文提出一种基于灰狼优化算法(Grey Wolf Optimizer, GWO)的解决方案。通过模拟灰狼群体的社会等级与协作捕猎机制,结合动态参数调整策略,优化路径长度与避障性能。实验表明,相较于粒子群优化(PSO)和遗传算法(GA),GWO算法在收敛速度与路径成本上分别提升约25%和18%,且在三维城市地形中表现出更强的避障鲁棒性。本文提供完整的MATLAB代码实现,为无人机自主导航提供理论与技术支撑。

尘世冰封的专栏 287

Win10中docker的安装与使用

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

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

RFC 字符码转换深度解析:Unicode、非 Unicode 与 MDMP 系统的协奏

老版本 MDMP 系统不上传自定义映射时,Unicode 端会落回“预配置列表”。列表里可见西欧 1100、日文 8000、中文 8400 等经典编号。若需强制覆写映射,可在 SM59 ➡Unicode页签启用,或直接勾选作为兜底。字符编码问题常“潜伏”多年,一旦旧系统升级或新增语种便集中爆发。掌握 RFC code page 转换机理、灵活运用 SM59 选项、在早期对 LANG 字段和字段长度进行治理,是根治乱码与 short dump 的关键。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 224

RK3588开发笔记-ISP模块参数调试

本文详细介绍了基于RK3588平台的ISP模块参数调试流程。主要内容包括:硬件准备(RK3588板卡、IMX415摄像头等)、软件环境搭建(Ubuntu系统、RKISP_Tuner工具)、IMX415摄像头基础使用验证、RKISP2.x Tuner工具的使用方法(新建/加载IQ参数文件、Sensor配置、Raw图采集)以及最终IQ文件的部署。文章重点强调了基础标定的重要性,建议开发者分场景调试并参考官方文档,通过合理配置ISP参数来优化图像质量。该调试流程适用于RK3588平台的图像采集类项目开发。

flypig has a dream! 839

如何在 Docker 中使用 Docker

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

easylife206的专栏 744

三模冗余、纠错编码、单粒子翻转防护

本文探讨了高可靠性FPGA系统设计的三大关键技术:三模冗余(TMR)、纠错编码(ECC)和单粒子翻转(SEU)防护。TMR通过三个并行模块和表决器实现容错,但会增加硬件资源和功耗;ECC利用汉明码等编码方式检测和纠正数据错误,适用于存储器保护;SEU防护则针对高能粒子引发的位翻转问题,采用配置刷新、TMR和ECC等方法。文章还通过Verilog代码示例展示了这些技术的实现,并提出了一个综合应用案例,结合三种技术构建高可靠性控制系统。这些技术在航空航天、医疗设备等关键领域具有重要应用价值。

2301_79143213的博客 715

在Ubuntu上安装Docker以及使用

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

蜡笔小新星的博客 4277

怀旧版电脑GBC模拟器

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

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

Docker在Windows下的安装及使用

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

七夜同学的博客 4万+

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

[docker]Docker 镜像使用

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

FL1768317420的博客 1245

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、付费专栏及课程。

余额充值