Docker 简单相关知识 自用

本文深入解析Docker的核心概念,包括镜像、容器、仓库,以及分层存储机制。详述了Docker命令的使用,如镜像和容器的创建、运行、管理和删除。同时,提供了实用的网站链接,帮助读者更全面地理解和掌握Docker的运用。

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

实用网站:

https://segmentfault.com/a/1190000009544565

https://www.jianshu.com/p/0231568ab335

https://yeasy.gitbooks.io/docker_practice/

https://docs.docker.com/engine/reference/commandline/run/

 

基本概念

镜像(Image):一个特殊的文件系统,提供容器运行时所需的程序/库/资源/配置等文件。镜像不包含任何动态数据,内容在创建之后也不会被改变。

分层存储:镜像构建时,采用分层构建,前一层时后一层的基础,因此每一层都应该尽量只包含该层需要添加的东西。每一层构建完成之后就不会再发生改变,后一层上的任何更改只会发生在自己这一层。比如,删除前一层文件的操作,实际不是真的删除前一层的文件,而是仅在当前层标记为该文件已删除。在最终容器运行的时候,虽然不会看到这个文件,但是实际上该文件会一直跟随镜像。

容器(Container):镜像和容器的关系就像是类与实例之间的关系。容器是镜像运行时的实体,实质是进程,运行于属于自己的独立的命名空间(是在自己独立的隔离环境中)。每一个容器在运行时,都以镜像为基础层,在其上建立一个当前容器的存储层。该存储层与容器的生存周期相同,一般不往其中写任何数据(数据保存至数据卷中,数据卷由容器启动时由-v指定)。

仓库(Repository):每个仓库可以包含多个标签,一个标签对应一个镜像。默认标签为latest。通常一个仓库包含同一个软件的不同版本的镜像。可以通过 <仓库名>:<标签> 的格式来指定具体是这个软件哪个版本的镜像。

查看所有的docker命令: docker -h

使用镜像

获取镜像

docker pull [option] NAME[:TAG|@DIGEST]

docker pull [option] [Docker Registry地址[:端口号]/]仓库名[:标签]

eg:docker pull daocloud.io/library/node   //从docker镜像中心下载Node镜像,不加标签默认下载lasted

查看所有镜像

docker images

删除本地镜像

docker rmi [option] IMAGE [IMAGE ...]

 

使用容器

查看正在运行的容器

docker ps

进入容器

docker exec [OPTIONS] CONTAINER COMMAND [ARG...]

eg:docker exec -it nginx /bin/bash  //以交互式终端的方式进入容器

启动容器

docker run [options] IMAGE [COMMAND] [ARG...]

options:

-t 启动伪终端

-i 交互式运行

-d 以守护进程的形式运行

-e 设置环境变量 var=value 可以多次设置

--name 设置容器名字

--net 设置容器与宿主机的网络形式

-c 进入容器首先执行的命令eg:/bin/bash -c “cd /home && /sbin/init” 

-v 创建一个数据卷并挂载在容器上

-P 随机映射本地的一个端口到docker容器开放的网络端口

-p 指定要映射的端口 ip:hostPort:containerPort | ip::containerPort | hostPort:containerPort.

-b <BRIDGE>  指定容器挂载的网桥

-H <SOCKET>   Docker服务器端接收命令通道

(所运行的镜像名,一般在/bin/bash之前说明,-c一般为docker run语句指定的最后一项)

获取容器的输出信息

docker logs <CONTAINER ID>|<NAMES>

终止容器

docker stop <CONTAINER ID>|<NAMES>

启动已终止的容器

docker start <CONTAINER ID>|<NAMES>

重启容器

docker restart <CONTAINER ID>|<NAMES>

查看容器的存储层变动

docker diff

删除一个处于终止状态的容器

docker rm <CONTAINER ID>|<NAMES>

删除一个在运行中的容器

docker rm -f <CONTAINER ID>|<NAMES>

-f 表示强制删除

退出容器 exit

 

保存容器及其存储层构成新镜像(慎用)

docker commit [选项] <容器ID或容器名> [仓库名[:标签]]

使用Dockerfile定制镜像

https://yeasy.gitbooks.io/docker_practice/image/build.html

在Dockerfile文件所在的目录执行 docker build -t 仓库名:标签 .

Dockerfile中常用命令

FROM 基础镜像

RUN 用来执行命令行命令

问题

1.docker中使用systemctl

在docker容器启动时,必须指定--privileged -c /sbin/init

 

2.docker容器与宿主机进行文件互传

在宿主机的命令行运行:docker cp path <container id>:path

或 docker cp <container id>:path path

将左边path中的内容拷贝至右边

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值