LOGO OA教程 ERP教程 模切知识交流 PMS教程 CRM教程 开发文档 其他文档  
 
网站管理员

从零开始:全面掌握Docker基础,让你的项目轻松起航!

admin
2025年7月26日 9:53 本文热度 216

概述

起源

2013 年由 DotCloud 公司开源出来的容器管理工具
DotCloud 公司是一家 PAAS 服务提供商,从 docker 的出身也可以看出它的主要功能和方向

技术原理

开始时是基于 LXC 容器技术

  • cgroup: 将任意进程进行分组化管理,同时还可以控制进程的资源占用(CPU, 内存等等)情况

  • namespace: 让每个进程组有独立的 PID, IPC 和网络空间

详细信息可以参照:http://www.cnblogs.com/wang_yb/p/3923040.html

解决的痛点

  • 打包部署

  • 运行环境标准化

  • 更加高效的利用物理机

docker 基本命令

容器的一个标准的生命周期包括:创建,启动,停止,终止和移除

  • docker pull busybox # 远程下载 images

  • docker run -it –rm –name busybox busybox # 创建容器,名称为 busybox

  • docker stop/kill busybox # 停止/强行停止 容器

  • docker start/restart busybox # 启动/重新启动 容器

  • docker rm busybox # 移除容器

常用命令

  • docker exec 可以运行 容器中的命令

  • docker cp 可以在主机和容器之间复制文件

  • docker inspect 查看容器的详细信息,也可以查看镜像详细信息

  • docker stats 容器的资源占用信息

  • docker events 返回 docker 主机上发生的所有 docker 事件流

  • docker logs 监控容器的日志

  • docker top 查看容器内运行的进程

docker 使用示例(busybox)

docker 容器是完全隔离的运行环境,但实际使用中,难免需要和外部或者 docker 容器进行交互。
比较常用的交互主要有 环境变量,磁盘,网络

环境变量

docker run -it --rm -e MY_NAME=wangyubin busybox env

外部的环境变量可以在容器启动的时候注入到容器中

磁盘

容器会共享镜像中的内容,容器自己的状态才会保存在磁盘上。

docker volume ls# 查看所有容器占用的磁盘名称
docker volume inspect VOL_NAME  # 查看具体的磁盘信息

容器中的文件,不会改变 image

在一个容器中创建文件(test.txt)

$ docker run -it --rm busybox
# touch test.txt
# ls
bin       etc       proc      sys       tmp       var
dev       home      root      test.txt  usr

重新启动的容器中是不包含这个文件的

$ docker run -it --rm busybox
# ls
bin   dev   etc   home  proc  root  sys   tmp   usr   var

容器挂载外部的文件系统

如果希望容器之间共享文件,或者将文件放在容器之外来管理,可采用如下方式 容器启动时挂载外部文件夹

docker run -it --rm -v /home/wangyubin/tmp/volume:/share-dir busybox
cd share-dir
touch test.txt

另一个容器也挂载这个文件夹

docker run -it --rm -v /home/wangyubin/tmp/volume:/share-dir busybox
# ls share-dir
test.txt

网络

容器中的服务默认只有当前容器可以访问,容器的宿主和其他容器都是无法访问的。

通过暴露端口,让宿主可以访问容器内服务

通过 nc 命令模拟一个服务

$ docker run -it -p 1234:1234 --rm busybox
# nc -l -p 1234

在宿主机上可以通过 docker ps 命令看到暴露的端口

docker ps

nc localhost 1234   # 连接上本地的 1234 端口,就可以和 docker 容器互发消息

容器创建在同一网络上

创建容器运行的网络,然后将 2 个容器启动到同一个网络上

$ docker network create test
a85b5589234b701b1237a364f7796b47e2d1ba4506740767c581a3d62d9e8f48

$ docker network ls
NETWORK ID          NAME                DRIVER              SCOPE
a85b5589234b        test                bridge              local
... ...

启动第一个 docker,name 为 test01,并在容器中用 nc 命令模拟一个服务

$ docker run -it --rm --name test01 --network test busybox
# nc -l -p 1234

启动第二个 docker,name 为 test02,和 test01 在同一个网络上

$ docker run -it --rm --name test02 --network test busybox
# nc test01 1234
hello

由于在同一个网络上,可以通过 test01 这个名称直接连接另一个容器

启动第三个 docker,name 为 test03,使用默认的网络

$ docker run -it --rm --name test03 busybox
# nc test01 1234
nc: bad address 'test01'

由于 test03 和 test01 不在一个网络上,所以无法互通


链接:https://www.cnblogs.com/wang_yb/p/8625003.html

                                                              (版权归原作者所有,侵删)


该文章在 2025/7/26 9:53:43 编辑过
关键字查询
相关文章
正在查询...
点晴ERP是一款针对中小制造业的专业生产管理软件系统,系统成熟度和易用性得到了国内大量中小企业的青睐。
点晴PMS码头管理系统主要针对港口码头集装箱与散货日常运作、调度、堆场、车队、财务费用、相关报表等业务管理,结合码头的业务特点,围绕调度、堆场作业而开发的。集技术的先进性、管理的有效性于一体,是物流码头及其他港口类企业的高效ERP管理信息系统。
点晴WMS仓储管理系统提供了货物产品管理,销售管理,采购管理,仓储管理,仓库管理,保质期管理,货位管理,库位管理,生产管理,WMS管理系统,标签打印,条形码,二维码管理,批号管理软件。
点晴免费OA是一款软件和通用服务都免费,不限功能、不限时间、不限用户的免费OA协同办公管理系统。
Copyright 2010-2025 ClickSun All Rights Reserved