Docker 介绍和常用命令

Docker介绍

最近在做CS144的课程,由于用mac电脑不想安装虚拟机做,于是用docker做了环境配置。

概述

Docker可以理解为一个容器化平台,他是对操作系统级别的虚拟,和虚拟机类似,但他更轻量,没有像虚拟机一样虚拟化整个硬件,独占一部分内存和硬盘资源,他只是进程级别的隔离。

原因

docker出现的主要原因是各种项目的环境配置太乱了,相信大家每次想从github运行一个新项目第一步要搞定的永远都是环境问题,docker作为一个容器化平台,通过把环境打包解决这个问题。成功解决了"在我的电脑上能运行,在你的电脑上也能运行"。

容器

要理解docker就得理解两个重要概念-容器和镜像。首先是容器,容器就是一个沙盒,不同容器之间是相互隔离开的,同时本级电脑和容器之间也是隔离开的(可以通过端口转发等手段联系起来),可以理解为容器是一个项目的运行实例,或者更通俗的理解就是一个容器就是一个小的虚拟机,里面有系统,有环境配置,有项目文件,但这些都是仅支持项目运行的最轻量的配置。docker在不同机器上可以忽略环境的原因就是在不同机器上跑同一个容器,那么结果肯定是一致的(这点和JAVA的JVM类似,都是采取了一层抽象虚拟,达成不同机器上通用的结果)。

镜像

镜像可以理解为容器的快照,他一般是只读的。他就是将容器某一瞬间所有的状态保存下来,方便调用。容器的创建一定是依赖于某个镜像创建的。容器在运行时,经过不同的环境配置后也可以随时通过镜像保存下来。

使用方式

其实发现docker和git基本形式类似,都有本地仓库,远程仓库的概念,所以理解了git,使用docker就不算太难。一般要运行其他人的项目,可以采用该项目的docker镜像,这样创建的容器就不仅包括项目文件连环境配置也和项目作者相同。我这里就是直接采用了ubuntu22.04的镜像去做CS144的实验了。

Docker常见命令如下:

1.创建并启动一个容器:

bash 复制代码
docker run [OPTION] IMAGE [COMMAND] ...

其中OPTION是可选择添加的配置容器的选项,常见有-it,即分配一个可交互的终端(i是interactive可交互,t是tty伪终端,)、--name 后跟要创建的容器名称,没有的话系统会默认分配以及一些后段运行服务器的命令-d(detached在后台运行,不占用终端)和-p 8080:80(publish 端口映射,将自己电脑的8080端口映射到容器内部80端口)等。

IMAGE是容器的镜像,首先从本地镜像中查找,没有的话从远程网站拉去镜像到本地再创建。

COMMAND为可添加到命令,一般在创建时想要一个可交互的客户端时会添加bash命令。

2.查看所有容器(包括停止的容器):

bash 复制代码
docker ps -a

3.停止一个在后台运行的容器:

bash 复制代码
docker stop container_name/id

4.重新启动一个停止的容器:

bash 复制代码
docker  start container_name/id

简单的启动命令只是在后台重新启动,想要让现在的终端直接就是容器内部的终端有以下方式:

bash 复制代码
docker start -ai container_name/id  

这里a是attach,i是interactive。
2.

bash 复制代码
docker attach container_name/id

在启动之后,再采用附加的命令(将当前容器内部终端附加到当前终端上)。
3.

bash 复制代码
docker exec -it container_name/id bash

这是在容器内部开启一个新进程,表现形式和上述类似,但优点是在该终端推出后只是结束了这个新进程和,容器的主进程并没有停止。

5.删除一个容器(必须先停止):

bash 复制代码
docker rm container_name/id
相关推荐
Gofarlic_oms13 小时前
利用API实现ANSYS许可证管理自动化集成
运维·服务器·开发语言·matlab·自动化·负载均衡
杨浦老苏4 小时前
大模型安全接入网关LinkAI
人工智能·docker·ai·群晖·隐私保护
档案宝档案管理4 小时前
权限分级管控,全程可追溯,筑牢会计档案安全防线
运维·网络·人工智能
倔强的石头1065 小时前
【Linux指南】基础IO系列(八):实战衔接 —— 给微型 Shell 添加完整重定向功能
linux·运维·服务器
观北海6 小时前
AiScan-N:AI全自动化渗透测试工具的深度技术解析
运维·自动化
Ujimatsu6 小时前
虚拟机安装Ubuntu 26.04.x及其常用软件(2026.4)
linux·运维·ubuntu
Dillon Dong7 小时前
【系列主题】Next.js 16 + Turbopack 的暗礁:深入剖析 Tailwind v4 的 CSS 模块解析陷阱
javascript·css·容器·turbopack
jc06207 小时前
6.1云原生之Docker
c++·docker·云原生
Agent产品评测局9 小时前
制造业生产调度自动化落地,完整步骤与避坑指南:2026企业级智能体选型与实战全景
运维·人工智能·ai·chatgpt·自动化
狂奔的sherry9 小时前
一次由 mount 引发的 Linux 文件系统“错觉”
linux·运维·服务器