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
相关推荐
朱 欢 庆5 小时前
云服务器附件备份到本机内网服务器
运维·服务器·前端·经验分享
Sayai5 小时前
Elasticsearch 9 安装验证实战:start-local 一键部署 + Docker 手动安装踩坑指南
大数据·elasticsearch·docker
智恒百亿5 小时前
8 卡 RTX 5090 服务器深度实测:256GB 显存能否支撑 70B 模型微调?选型参考
大数据·运维·服务器·人工智能
志栋智能10 小时前
超自动化运维如何支持合规审计?
运维·自动化
小诗懂技术11 小时前
【网络通信UDP】基础 进程间不同主机的通信
运维·服务器·网络
名字还没想好☜11 小时前
Docker 容器安全加固实战:非 root、只读根文件系统、drop capabilities 与最小攻击面
运维·安全·docker·容器·kubernetes
鹤落晴春11 小时前
有状态应用 vs 无状态应用
运维·云原生·k8s
码--到成功12 小时前
Docker、Kubernetes安装系列 二
docker·容器·kubernetes
M--Y13 小时前
Docker镜像与仓库管理详解
docker·容器
mohesashou13 小时前
k8s的service
云原生·容器·kubernetes