docker

Docker

一、定义

Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从 Apache2.0 协议开源。

Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。

容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app),更重要的是容器性能开销极低。

二、架构

Docker包括三个基本概念:

  • 镜像:Docker镜像,就相当于是一个root文件系统。

  • 容器:镜像和容器的关系,就像是面向对象程序设计中的类和实例一样,镜像是静态的定义,容器是镜像运行时的实体。容器可以被创建、启动、停止、删除、暂停等。

  • 仓库:仓库可看成一个代码控制中心,用来保存镜像。

    • 一个 Docker Registry 中可以包含多个仓库(Repository);每个仓库可以包含多个标签(Tag);每个标签对应一个镜像。

    • 通常,一个仓库会包含同一个软件不同版本的镜像,而标签就常用于对应该软件的各个版本。我们可以通过 <仓库名>:<标签> 的格式来指定具体是这个软件哪个版本的镜像。如果不给出标签,将以 latest 作为默认标签。

三、常用命令

帮助命令

docker version    #显示docker的版本信息
docker info       #显示docker的系统信息,包括镜像和容器的数量
docker 命令 --help #万能命令

镜像命令

  • docker images 查看所有本地的主机上的镜像

zt@ubuntu:~$ docker images 
REPOSITORY   TAG       IMAGE ID       CREATED       SIZE
hello-world   latest   feb5d9fea6a5   5 months ago   13.3kB

# 解释
REPOSITORY 镜像的仓库源
TAG       镜像的标签
IMAGE ID   镜像的id
CREATED   镜像的创建时间
SIZE       镜像的大小

# 可选项
 -a, --all             # 列出所有的镜像
 -q, --quiet           # 只显示镜像id
  • docker search 搜索镜像

image-20220316192316072

# 可选项
--filter
--filter=STARS=3000 搜索出来的镜像STARS大于3000

image-20220316192959968

  • docker pull 下载镜像

docker pull 镜像名(:tag(版本号))
zt@ubuntu:~$ sudo docker pull mysql
Using default tag: latest # 如果不写tag,默认版本latest
latest: Pulling from library/mysql
15115158dd02: Already exists  # 分层下载,docker image的核心 联合文件系统
d733f6778b18: Already exists
1cc7a6c74a04: Already exists
c4364028a805: Already exists
82887163f0f6: Already exists
28abcb7f57e0: Already exists
46d27a431703: Already exists
8e745fe86aaf: Already exists
ab75add93486: Pull complete
09e3960383f3: Pull complete
59f780965951: Pull complete
8ead2303095c: Pull complete
Digest: sha256:b17a66b49277a68066559416cf44a185cfee538d0e16b5624781019bc716c122
Status: Downloaded newer image for mysql:latest
docker.io/library/mysql:latest # 真实地址

docker pull mysql
# 等价于
docker pull docker.io/library/mysql:latest
  • docker rmi 删除镜像

docker rmi -f 镜像id   #删除指定的镜像
docker rmi -f 镜像id 镜像id 镜像id #删除多个镜像
docker rmi -f $(docker images -aq) #删除全部镜像

容器命令

有了镜像才可以创建容器

新建容器并启动

docker run [可选参数] image

# 参数说明
--name="ANme" 容器名字
-d             后台方式运行
-it           使用交互方式运行,进入容器查看内容
-p             指定容器的端口
-p ip:主机端口:容器端口
-p 主机端口:容器端口(常用)
-p 容器端口
容器端口
-P             随机指定端口

# 启动并进入容器
zt@ubuntu:~$ sudo docker run -it centos /bin/bash
[root@7055403b6694 /]# ls # 查看容器内的centos
bin etc   lib lost+found mnt proc run   srv tmp var
dev home lib64 media       opt root sbin sys usr
# 退出容器
exit

列出容器

docker ps # 列出当前正在运行的容器
# 可选项
-a # 列出当前正在运行的容器+历史运行过的容器
-n=? # 显示最近创建的容器
-q # 只显示容器的编号

退出容器

exit # 直接容器停止并退出
CTRL+p+q # 容器不停止退出

删除容器

docker rm  # 容器id,不能删除正在运行的容器,若要强制删除 -f
docker rm $(docker ps -aq)   # 删除所有容器
docker ps -a|xargs docker rm   # 删除所有容器

启动和停止容器

docker start 容器id    # 启动容器
docker restart 容器id  # 重启容器
docker stop 容器id     # 停止当前正在运行的容器
docker kill 容器id     # 强制停止当前容器

 

posted @   菜里菜气菜某  Views(22)  Comments(0Edit  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· 单线程的Redis速度为什么快?
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
点击右上角即可分享
微信分享提示