Windows Docker笔记-Docker容器操作

在文章《Windows Docker笔记-Docker拉取镜像》中,已经拉取成功了ubuntu镜像,本章来讲解如何通过镜像来创建容器并运行容器。

这里再类比一下,加深理解,比如,我们现在想开一个玩具厂,我们的最终目的肯定是想让玩具厂生产流水线正常工作,产出玩具。那么现在拿到的Ubuntu镜像,就相当于我们已经准备好了建工厂的材料(砖、钢筋、水泥等等)和建筑工具(docker),仅此而已。想要修建工厂,就必须找建筑工人使用建筑工具,用建筑材料来修建。

建筑工人:开发者,运维人员
建筑工具:docker
建筑材料:Ubuntu镜像

查看本地镜像

查看本地镜像

创建容器

命令:docker run [OPTIONS] IMAGE [COMMAND] [ARG…]
[COMMAND] 和 [ARG…]两个参数可选,目前还没有用到,后续补充。
[OPTIONS]常用选项包括:

  • -i, --interactive:以交互式模式运行命令,接受用户输入
  • -t, --tty:为终端分配一个tty设备,使容器能够与终端进行交互
  • -d, --detach:指定容器在后台运行
  • -p, --publish:指定容器的端口映射
  • -v, --volume:指定容器的目录挂载
  • –name:指定容器的名称
  • -e, --env:设置容器的环境变量
  • –rm:容器运行结束后自动删除

案例1:docker run -it --name myUbuntu a04dc4851cbc # 如果使用镜像ID,直接写上就可以
案例2:docker run -it --name myUbuntu ubuntu:latest # 如果使用镜像名称,需要指定镜像版本(Tag),否则默认为本地相同镜像所有版本中最新的。

docker run 创建容器
可以看到,在创建的容器中使用Linux命令,就像在Ubuntu虚拟机中使用一样的,非常的帅气。

退出容器

当前是在容器的终端中,想要退出容器终端,回到windows命令行终端,需要使用如下命令。

命令:exit

exit 退出终端

Docker命令查看创建的容器

命令:docker ps # 只显示正常运行的容器
命令:docker ps -a # 显示所有容器,包括正在运行的和已经停止的。

docker ps 查看容器
可以看到,刚刚创建容器的信息:

容器ID镜像终端创建时间状态端口容器名称
da3b54c08bd5ubuntu:latest/bin/bash24 minutes agoExitedmyUbuntu

由上发现,在使用了容器终端命令exit后,容器也退出停止了。应该如何重新启动一个已经存在的容器呢?

启动现有的容器

命令:docker start myUbuntu # 参数使用容器名称
命令:docker start da3b54c08bd5 # 参数使用容器ID

docker start 启动容器
可以看到容器的状态已经变成了启动。但是如何才能再进入到容器中使用容器呢?

Docker进入已经运行的容器的终端

命令:docker exec [OPTIONS] CONTAINER COMMAND [ARG…]
参数说明

  • CONTAINER:指定要操作的容器名称或容器ID。
  • COMMAND:在容器中要执行的命令。
  • [ARG…]:命令的参数。

常用选项

  • -d:在后台运行命令。
  • -i:保持 STDIN 打开,即使没有附加。
  • -t:分配一个伪终端(TTY)。
  • –user 或 -u:指定在容器中运行命令的用户(默认为容器的默认用户)。
  • –workdir 或 -w:指定在容器中运行命令的工作目录。
  • –env 或 -e:设置环境变量。
  • –privileged:以特权模式运行命令。

案例:docker exec -it myUbuntu /bin/bash #这里 COMMAND 参数对应 查看容器信息时的COMMAND字段内容

docker exec 进入容器终端
此时,在容器终端再次执行exit,退出容器,发现容器也不会退出(停止),状态还是运行的状态。
退出容器查看状态
那这种情况应该如何停止容器呢?

停止正在运行的容器

命令:docker stop myUbuntu # 参数使用容器名称
命令:docker stop da3b54c08bd5 # 参数使用容器ID

docker stop 退出容器
可以看到容器已经停止了。

客户端查看容器(两边同步的)

客户端查看容器信息
讲到这里,就好比已经建好了玩具厂,也知道了玩具厂大门,怎么打开和关闭。但是现在仅仅是一个空的厂房,里面没有生产玩具的流水线设备。那么下一章讲解如何修建生产线。


上一章:Windows Docker笔记-Docker拉取镜像
下一章:Windows Docker笔记-在容器中运行项目

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

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

相关文章

k8s,1.修改容器内主机名和/etc/hosts 文件,2.root特权容器,3.pod安全策略(基于名称空间

1.修改容器内主机名和/etc/hosts 文件,让持久生效,通过修改资源清单方式---kind: PodapiVersion: v1metadata:name: rootspec:hostname: myhost # 修改主机名hostAliases: # 修改 /etc/hosts- ip: 192.168.88.240 # IP 地址hostnames: # 名…

Java语法糖详解

前言 在现代编程语言的发展历程中,语法糖(Syntactic Sugar)作为一种提升代码可读性和开发效率的重要特性,已经成为语言设计的重要组成部分。Java作为一门成熟且广泛应用的编程语言,在其长期演进过程中,语法…

深度学习 - 神经网络的原理

## 深度学习 - 神经网络的原理 深度学习是机器学习的一个分支,其核心是模拟人脑神经网络的结构和功能,构建多层的神经网络模型,从数据中学习特征并进行预测或分类。 **神经网络的基本原理:** 1. **神经元模型:** * 神经网…

机器学习中的关键概念:通过SKlearn的MNIST实验深入理解

欢迎来到我的主页:【Echo-Nie】 本篇文章收录于专栏【机器学习】 1 sklearn相关介绍 Scikit-learn 是一个广泛使用的开源机器学习库,提供了简单而高效的数据挖掘和数据分析工具。它建立在 NumPy、SciPy 和 matplotlib 等科学计算库之上,支持…

【深度学习框架】MXNet(Apache MXNet)

MXNet(Apache MXNet)是一个 高性能、可扩展 的 开源深度学习框架,支持 多种编程语言(如 Python、R、Scala、C 和 Julia),并能在 CPU、GPU 以及分布式集群 上高效运行。MXNet 是亚马逊 AWS 官方支持的深度学…

Java数据结构与算法之“树”

目录 一、什么是树 ​编辑 二、树的相关组成 1. 常用名词 2.需要了解的名词 三、树的分类 (一)初级树 1.普通树 2.二叉树 (二)中级树 1.哈夫曼树HuffmanTree 2.二叉搜索树BST 3.平衡二叉树AVL (三&#x…

【Linux】27.Linux 多线程(1)

文章目录 1. Linux线程概念1.1 线程和进程1.2 虚拟地址是如何转换到物理地址的1.3 线程的优点1.4 线程的缺点1.5 线程异常1.6 线程用途 2. Linux进程VS线程2.1 进程和线程2.2 关于进程线程的问题 3. Linux线程控制3.1 POSIX线程库3.2 创建线程3.3 线程终止3.4 线程等待3.5 分离…

SpringAI系列 - 使用LangGPT编写高质量的Prompt

目录 一、LangGPT —— 人人都可编写高质量 Prompt二、快速上手2.1 诗人 三、Role 模板3.1 Role 模板3.2 Role 模板使用步骤3.3 更多例子 四、高级用法4.1 变量4.2 命令4.3 Reminder4.4 条件语句4.5 Json or Yaml 方便程序开发 一、LangGPT —— 人人都可编写高质量 Prompt La…

2025.2.6

一、C思维导图: 二、C: 三、注释代码 1> 配置文件:.pro文件 QT core gui # 引入的类库,core表示核心库 gui图形化界面库greaterThan(QT_MAJOR_VERSION, 4): QT widgets # 超过版本4的qt,会自动加widgets…

vue2-插槽slot

文章目录 vue2-插槽slot1. 什么是slot2. slot分类2.1 默认插槽2.2 具名插槽2.3 作用域插槽 vue2-插槽slot 1. 什么是slot 在vue中,slot翻译为插槽,简单点说,就是在子组件内放置一个插槽,等待父组件在使用子组件的时候决定放什么…

【算法应用】Alpha进化算法求解二维栅格路径规划问题

目录 1.算法原理2.二维路径规划数学模型3.结果展示4.参考文献5.代码获取 1.算法原理 Alpha进化:一种具有进化路径自适应和矩阵生成的高效进化算法 2.二维路径规划数学模型 栅格法模型最早由 W.E. Howden 于 1968 年提出,障碍物的栅格用黑色表示&#…

《深度洞察ICA:人工智能信号处理降维的独特利器》

在人工智能技术飞速发展的今天,信号处理作为关键环节,面临着数据维度不断攀升的挑战。高维信号数据虽蕴含丰富信息,但也给处理和分析带来诸多难题,如计算资源消耗大、分析复杂度高、模型易过拟合等。独立成分分析(ICA&…

ubuntu20.04+RTX4060Ti大模型环境安装

装显卡驱动 这里是重点,因为我是跑深度学习的,要用CUDA,所以必须得装官方的驱动,Ubuntu的附件驱动可能不太行. 进入官网https://www.nvidia.cn/geforce/drivers/,选择类型,最新版本下载。 挨个运行&#…

vmware虚拟机可以使用Windows的GPU吗

是的,VMware虚拟机可以使用Windows的GPU,但这需要满足一定的条件,并且需要进行一些配置。以下是关键点: 1. 硬件要求 GPU支持直通(Passthrough):你的物理GPU必须支持硬件直通(VT-d…

Spring Boot 2 快速教程:WebFlux优缺点及性能分析(四)

WebFlux优缺点 【来源DeepSeek】 Spring WebFlux 是 Spring 框架提供的响应式编程模型,旨在支持非阻塞、异步和高并发的应用场景。其优缺点如下: 优点 高并发与低资源消耗 非阻塞 I/O:基于事件循环模型(如 Netty)&am…

DeepSeek 硅基流动

DeepSeek 硅基流动 🎁 四大神仙优势🌟 三步拥有官网同款671B大模型1️⃣ 戳这里👉 国内直连通道2️⃣ 复制API密钥3️⃣ 安装Chatbox贴进软件秒变AI大佬 📁 网盘地址:(所用到的软件可以直接下载&#xff09…

利用UNIAPP实现短视频上下滑动播放功能

在 UniApp 中实现一个短视频上下滑动播放的功能,可以使用 swiper 组件来实现滑动效果,并结合 video 组件来播放短视频。以下是一个完整的示例,展示如何在 UniApp 中实现这一功能。 1. 创建 UniApp 项目 如果你还没有创建 UniApp 项目,可以使用 HBuilderX 创建一个新的项目…

ES6 变量解构赋值总结

1. 数组的解构赋值 1.1 基本用法 // 基本数组解构 const [a, b, c] [1, 2, 3]; console.log(a); // 1 console.log(b); // 2 console.log(c); // 3// 跳过某些值 const [x, , y] [1, 2, 3]; console.log(x); // 1 console.log(y); // 3// 解构剩余元素 const [first, ...re…

数据库迁移后在密码不知道的情况下重建DBLINK

9i和10gR1版本之前,所有 dblink 的密码都是以明文方式在 sys.link$ 中的password字段中存储。可以直接通过查询sys.link$基表进行SQL拼接来完成迁移dblink。 select create database link ||NAME || connect to || USERID || identified by || password || using…

mysql 学习10 多表查询 -多表关系,多表查询

多表关系 一对多 多对多 创建学生表 #多对多表 学生选课系统create table student(id int primary key auto_increment comment 主键ID,name varchar(64) comment 姓名,studentnumber varchar(10) comment 学号 )comment 学生表;insert into student(id,name,studentnumber)va…