Docker虚拟机(下)

本文详细介绍了如何在线安装Docker镜像,包括搜索、下载及使用国内镜像仓库DaoCloud加速下载。此外,还讲解了镜像的导入导出、删除,以及容器的启动、暂停、停止、查看和删除等操作。最后提到了数据卷管理和网络管理,以及解决Docker虚拟机在VM中挂起后可能出现的断网问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  • 在线安装镜像

1.搜索镜像

docker search 镜像名称

2.下载镜像

docker pull 镜像名称

3.国外镜像仓库下载较慢,建议使用国内镜像仓库,如DaoCloud

DaoCloud注册并登录。
在登录后的页面(https://dashboard.daocloud.io/),点击“加速器”标签,在配置 Docker 镜像站中,我们可以看到docker镜像地址,类似于“http://abcd1234.m.daocloud.io”。

curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s http://abcd1234.m.daocloud.io

该脚本可以将 --registry-mirror 加入到你的 Docker 配置文件 /etc/docker/daemon.json 中。适用于 Ubuntu14.04、Debian、CentOS6 、CentOS7、Fedora、Arch Linux、openSUSE Leap 42.1,其他版本可能有细微不同。更多详情请访问文档。

注意:将http://abcd1234.m.daocloud.io替换为实际的链接。

执行后发现多了一个逗号,需要删除逗号,否则不会生效


docker version >= 1.12
{"registry-mirrors": ["http://f1361db2.m.daocloud.io"],}
Success.
You need to restart docker to take effect: sudo systemctl restart docker

进入/etc/docker/daemon.json删除逗号

4.查看镜像

docker images

5.导入导出镜像

docker save 镜像名称 > 文件地址
docker load < 文件镜像地址

6.删除镜像

docker rmi 镜像名称

7.启动容器

启动镜像会创建出一个运行状态的容器

docker run 启动参数 镜像名称
docker run -it --name 容器名称 -p 宿主机端口:容器的端口 -v 宿主机目录:容器目录 --privileged 镜像名称 bash
-it 启动容器开启交互界面
-p  小写p表示docker会选择一个具体的宿主机端口映射到容器内部开放的网络端口上。
-P  大写P表示docker会随机选择一个宿主机端口映射到容器内部开放的网络端口上。
--privileged 使用该参数,container内的root拥有真正的root权限。否则,container内的root只是外部的一个普通用户权限。

8.暂停和停止容器

docker pause 容器ID 
docker unpase 容器ID 
docker stop 容器ID 
docker start -i 容器ID 

9.查看容器列表

docker ps ‐a

10.查看容器信息

docker inspect 容器ID

11.删除容器

docker rm 容器ID

12.数据卷管理

docker volume create 数据卷名称  #创建数据卷 
docker volume rm 数据卷名称  #删除数据卷 
docker volume inspect 数据卷名称  #查看数据卷

13.网络管理

docker network ls 查看网络信息 
docker network create ‐‐subnet=网段 网络名称 
docker network rm 网络名称

14.避免VM虚拟机挂起恢复之后,Docker虚拟机断网

vi /etc/sysctl.conf
文件中添加 net.ipv4.ip_forward=1 这个配置
#重启网络服务
systemctl  restart network

 

### Docker虚拟机的区别和关系 #### 1. 基本概念 Docker 是一种基于容器化技术的工具,它通过操作系统的内核来运行多个隔离的应用程序实例。而虚拟机则是完整的操作系统模拟器,在宿主机的操作系统之上创建并运行一个或多个独立的操作系统实例[^1]。 #### 2. 架构层面的不同 - **Docker 容器** Docker 使用的是轻量级的容器技术,其核心在于利用 Linux 内核特性(如命名空间 Namespace 和控制组 Cgroup),实现应用程序及其依赖项之间的隔离。由于不涉及整个操作系统的仿真,因此它的资源占用较少,启动时间更快。 - **虚拟机 (VM)** 虚拟机则需要加载一整套新的操作系统镜像文件以及相应的驱动程序等组件才能正常工作。这使得 VM 的初始化过程较为耗时,并且会消耗更多的计算能力和存储容量[^3]。 #### 3. 隔离性和安全性对比 虽然两者都能提供一定程度上的隔离效果,但在实际应用当中还是存在明显差异: - 对于 **Docker 来讲**, 尽管有较高的效率表现, 不过因为它跟宿主分享同一个 OS kernel , 所以如果某个恶意软件突破了 container 层次防护机制的话 ,就很可能会威胁到 host system 自身的安全状况 。 这一点也决定了我们在部署 docker containers 的时候应该更加注重安全策略设置方面的工作 [^4]. - 反观 **Virtual Machines**, 因为其各自具备单独运作的核心部件再加上额外增加的一层硬件抽象逻辑单元(HAL), 整体而言确实能够带来更为坚固可靠的防御屏障作用 . 同样条件下发生类似入侵事件的概率也会相应降低不少程度 . #### 4. 性能考量因素分析 从性能角度来看,Docker 明显优于传统意义上的 Virtualization Solutions : - 更少内存开销 : 每开启一个新的 Container 实例仅需分配少量 RAM 即可完成全部功能需求 ; - 更短响应延迟 : 几乎接近本地执行命令的速度水平; - 更高密度支持能力 : 在相同规格物理设备上面容纳更多业务负载单位数量成为可能. 然而值得注意的地方就在于上述提到过的关于 Security 方面潜在风险问题上必须引起足够重视. #### 5. 应用场景举例说明 不同类型的项目适合采用不同的解决方案: - 如果追求极致效能发挥同时又能接受一定范围内可控范围内的安全隐患系数上升,则推荐优先考虑引入 Docker 技术栈作为首选方案之一; - 当面对那些对于数据保密级别要求极高或者涉及到跨平台移植兼容性挑战较大的场合下,此时选用成熟的 Hypervisor-based Infrastructure-as-a-service 平台或许才是明智之举 [^5]. ```python # 示例代码展示如何查看当前机器上正在运行的所有容器列表 import subprocess def list_running_containers(): result = subprocess.run(['docker', 'ps'], stdout=subprocess.PIPE) return result.stdout.decode() print(list_running_containers()) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值