Docker镜像容器命令

本文详细介绍了Docker的使用,包括帮助命令、镜像管理和容器操作。在镜像命令部分,涵盖了搜索、下载和删除镜像;在容器命令中,讨论了如何创建、退出、查看、管理及交互于容器。无论是初学者还是进阶用户,都能从中获得实用的操作指导。

目录

帮助命令

镜像命令

容器命令



帮助命令

#1.显示docker的版本信息。
docker version   

#2.显示docker的系统信息,包括镜像和容器的数量 
docker info     

#3.帮助命令 
docker --help 

#4.查看docker版本
docker -v或 docker --version

#帮助文档的地址:
https://docs.docker.com/engine/reference/commandline/build/

镜像命令

1. 查看所有本地的主机上的镜像
# 1.命令
docker images

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

# 2.可选项命令
"""
-a, --all Show all images (default hides intermediate images) #列出 所有镜像
-q, --quiet Only show numeric IDs # 只显示镜像的id
"""
docker images -q #显示所有镜像的id

docker images -aq #显示所有镜像的id

 2.搜索镜像

# 1.搜索镜像
docker search 镜像名
"""
解释
NAME:仓库名称

DESCRIPTION:镜像描述

STARS:用户评价,反应一个镜像的受欢迎程度

OFFICIAL:是否官方

AUTOMATED:自动构建,表示该镜像由Docker Hub自动构建流程创建的

"""

# 2.可选项命令
filter 过滤
如下图搜索 收藏超3000千的mysql镜像

 3.下载镜像

docker pull 镜像名称:版本号(可选项,不写默认拉取最新的)

'''
docker pull centos:centos7.7.1908 # 下载指定版本
docker pull centos  #下载最新版本
'''

 4.删除镜像

# 前提注意:要删除镜像,必须要删除该镜像所有产生相关的容器
1.#删除单个指定的镜像 
 docker rmi -f 镜像id 

#2.#删除多个指定的镜像
docker rmi -f 镜像id 镜像id 镜像id 镜像id

3.#删除全部的镜像:搜索出所有镜像ID递归删除
docker rmi -f $(docker images -aq) 

容器命令

1.创建容器

1.创建容器
docker run [可选参数] 镜像名或镜像ID
docker container run [可选参数] 镜像名或镜像ID

‘’‘
 -i:表示运行容器

 -t:表示容器启动后会进入其命令行。加入这两个参数后,容器创建就能登录进去。即分配一个伪终端。

 --name :为创建的容器命名。

 -v:表示目录映射关系(前者是宿主机目录,后者是映射到宿主机上的目录),可以使用多个-v做多个目录或文件映射。注意:最好做目录映射,在宿主机上做修改,然后共享到容器上。

 -d:在run后面加上-d参数,则会创建一个守护式容器在后台运行(这样创建容器后不会自动登录容器,如果只加-i -t两个参数,创建后就会自动进去容器)。

 -p:表示端口映射,前者是宿主机端口,后者是容器内的映射端口。可以使用多个-p做多个端口映射
 -P(大写) 随机指定端口
’‘’
2.示例
docker run -it centos /bin/bash
“”“
   使用镜像centos:latest以 交互模式 启动一个容器,在容器内执行/bin/bash命令。
   /bin/bash:放在镜像名后的是命令,这里我们希望有个交互式 Shell,因此用的是 /bin/bash。 要退            
   出终端,直接输入 exit: 
”“” 

实例

1.nginx
#1. 搜索镜像 search 建议大家去docker搜索,可以看到帮助文档 
#2. 拉取镜像 pull 
#3. 运行测试 
    # -d 后台运行 # --name 给容器命名 # -p 宿主机端口:容器内部端口 
#4.命令
docker run -d --name nginx00 -p 3344:80 nginx
# 5.浏览器输入ip:3344,即可访问nginx


2.tomcat
docker run -d -p 8080:8080 --name tomcat01 tomcat 
#宿主机上:测试访问有没有问题 
curl localhost:8080
# 发现问题:
   1、linux命令少了。 
   2.没有webapps # 阿里云镜像(阉割版),它为保证最小镜像,将不必要的都剔除了→保证最小可运行环 
     境!

2.退出容器

#1.从容器退回主机(run进去容器,exit退出,容器停止)
[root@95039813da8d /]# exit 

#2.容器不停止退出(退出,容器不停止)
ctrl +P +Q 

3.查看容器

#1.查看正在运行的容器
docker ps

#2.查看所有容器
docker ps -a

#3.查看停止的容器
docker ps -f status=exited

'''
-a, --all Show all containers (default shows just running) 
-n, --last int Show n last created containers (includes all states) (default -1) -q, --quiet Only display numeric IDs
-a : 列出当前所有 正在运行 的容器 + 历史上运行过 的 
-l :显示最近创建的容器。 
-n:显示最近n个创建的容器。 
-q :静默模式,只显示容器编号。
'''

#4.显示所有容器的id
docker ps -aq

#5.显示最近创建的容器个数
docker ps -a -n=1

4.删除容器

#1.删除容器(注意正在运行的容器无法删除)
docker rm 容器名称(容器ID) 

#2.强制删除容器(包括正在运行的)
docker rm -f 容器名称(容器ID)

# 强制删除所有容器(包括正在运行的)
docker rm -f $(docker ps -aq) 
 或
docker ps -a -q|xargs docker rm

5.容器的启动与停止

#1.启动已有的容器
docker start 容器id/名字

#2.重启容器
docker restart 容器id/名字

#3.停止当前正在运行的容器
docker stop 容器id/名字

#4.强制停止当前容器
docker kill 容器id/名字

6.容器元数据

# 命令 docker inspect 容器id #测试 ➜ 
docker inspect 55321bcae33d 

7.查看容器内进程信息

# 宿主机执行
docker top 容器id/容器名

8.进入正在运行的容器

1.进入正在运行的容器()
docker exec -it 容器名称(或者容器ID)  /bin/bash
或
docker exec -it 容器名称 (或者容器ID)  sh
参数说明:

-i: 交互式操作。
-t: 终端。
/bin/bash:放在镜像名后的是命令,这里我们希望有个交互式 Shell,因此用的是 /bin/bash。
要退出终端,直接输入 exit:

2.
docker attach 容器id

3.区别
docker exec #进入当前容器后开启一个新的终端,可以在里面操作。(常用) 
docker attach # 进入容器正在执行的终端

9.容器内文件拷贝到宿主机上

#1.命令(宿主机环境下执行)
docker cp 容器id或容器名:容器内路径 主机目的路径 

3注意
无论容器是否运行,只有存在就可以
# 在宿主机上执行

<think>首先,用户的问题是:“我想用户想要了解如何使用Docker命令打包镜像容器 请问docker build and package image container commands”。所以,用户想知道如何使用Docker命令来构建和打包镜像容器。 从系统级指令中,我需要: - 所有行内数学表达式使用$...$格式。 - 独立公式使用$$...$$格式并单独成段。 - LaTeX语法正确。 - 使用中文回答。 - 生成相关问题。 - 回答中引用的段落末尾自然地添加引用标识,例如:[^1]。 - 回答结构清晰,帮助用户逐步解决问题,保证回答真实可靠。 参考的引用是: - [^1]: 关于容器镜像的运行时实例。 - [^2]: 容器镜像和配置选项定义。 - [^3]: 使用docker build -t friendlyhello . 构建镜像。 - [^4]: 使用docker container exec命令。 - [^5]: 使用docker-compose.yml文件定义服务。 这些引用是关于Docker的,特别是镜像构建、容器执行和Docker Compose。用户的问题是关于“docker build and package image container commands”,所以我需要聚焦在Docker命令上,如构建镜像和管理容器。 关键Docker命令: - `docker build`:用于从Dockerfile构建镜像。 - `docker run`:用于从镜像创建并运行容器。 - `docker commit`:用于从运行中的容器创建新镜像(打包容器状态)。 - `docker save`:用于将镜像保存为tar文件(打包镜像)。 - `docker export`:用于将容器导出为tar文件(打包容器文件系统)。 用户说“打包镜像容器”,所以我应该覆盖构建镜像和打包镜像/容器的方法。 结构化回答: 1. **介绍**:简要解释Docker镜像容器。 2. **构建镜像**:使用`docker build`命令。 3. **打包镜像**:使用`docker save`命令。 4. **打包容器**:使用`docker commit`和`docker export`命令。 5. **示例**:提供简单的代码示例。 6. **相关问题**:生成相关问题。 使用中文回答。 自然地添加引用标识:在回答中引用参考内容时添加[^n]。 参考引用: - [^1] 和 [^2] 定义容器镜像。 - [^3] 提到`docker build -t friendlyhello .`。 - [^4] 提到`docker container exec`,但用户问题不直接相关。 - [^5] 提到Docker Compose,用于定义多容器应用,但用户问题可能更基础。 所以,在回答中,我可以引用[^3]的构建命令示例。 逐步回答: 1. **解释镜像容器**:基于[^1]和[^2]。 2. **构建镜像**:使用`docker build`,参考[^3]。 3. **打包镜像**:使用`docker save`。 4. **打包容器**:使用`docker commit`创建新镜像,然后`docker save`,或`docker export`直接导出容器。 5. **示例命令**:提供简单示例。 6. **相关问题**:生成3个相关问题。 确保回答真实可靠:基于标准Docker文档。 最终输出格式: - 回答部分。 - 相关问题部分。</think>### 如何使用Docker命令构建和打包镜像容器 Docker是一种容器化平台,允许开发者打包应用及其依赖项,以便在不同环境中一致运行。镜像(Image)是应用的静态模板,而容器(Container)是镜像的运行时实例[^1]。容器镜像和配置选项定义,当容器被移除时,其状态变化(除非持久化存储)会丢失[^2]。下面我将逐步解释如何使用Docker命令构建镜像、打包镜像以及打包容器,确保过程清晰可靠。所有命令基于Docker官方文档和实践经验。 #### 1. **构建镜像(Building an Image)** 构建镜像是创建应用模板的第一步。使用`docker build`命令Dockerfile(一个文本文件,包含构建指令)生成镜像。关键命令: - **命令格式**:`docker build -t <镜像名称>:<标签> <构建上下文路径>` - `-t` 选项用于给镜像打标签(tag),便于后续引用。 - 构建上下文路径通常是Dockerfile所在的目录(例如`.`表示当前目录)。 - **示例**:参考引用[^3],创建一个名为`friendlyhello`的镜像: ```bash docker build -t friendlyhello . ``` 这会在当前目录查找Dockerfile,并构建镜像。如果成功,你可以使用`docker images`命令查看已构建的镜像。 #### 2. **打包镜像(Packaging an Image)** 打包镜像是将镜像保存为可共享的文件(如tar归档),便于传输或备份。使用`docker save`命令: - **命令格式**:`docker save -o <输出文件名>.tar <镜像名称>:<标签>` - `-o` 选项指定输出文件路径。 - 打包后,镜像文件可以加载到其他Docker环境中。 - **示例**:将上一步构建的`friendlyhello`镜像打包为tar文件: ```bash docker save -o friendlyhello.tar friendlyhello:latest ``` 要加载这个打包的镜像到另一台机器,使用`docker load -i friendlyhello.tar`。 #### 3. **打包容器(Packaging a Container)** 打包容器涉及捕获运行中容器的状态(包括文件系统更改)。有两种方法: - **方法1:从容器创建新镜像(推荐)**:使用`docker commit`命令容器状态保存为新镜像,然后打包该镜像。 - **命令格式**:`docker commit <容器ID或名称> <新镜像名称>:<标签>`,然后使用`docker save`打包。 - 示例:假设有一个运行中的容器(名称如`elegant_noether`,参考引用[^4]),先提交为新镜像,再打包: ```bash docker commit elegant_noether my_container_image:latest docker save -o my_container_image.tar my_container_image:latest ``` - **方法2:直接导出容器文件系统**:使用`docker export`命令导出容器的文件系统(不含元数据,如镜像层),生成tar文件。 - **命令格式**:`docker export -o <输出文件名>.tar <容器ID或名称>` - 示例:导出容器`elegant_noether`: ```bash docker export -o container_fs.tar elegant_noether ``` 注意:导出的文件仅包含文件系统,需配合`docker import`命令在其他地方重建镜像。 #### 关键注意事项 - **Dockerfile基础**:构建镜像前,需编写Dockerfile定义步骤(如`FROM`基础镜像、`COPY`文件、`RUN`命令)。确保语法正确,避免常见错误。 - **持久化存储**:容器状态易失,打包前建议使用卷(volumes)或绑定挂载(bind mounts)持久化重要数据[^2]。 - **性能与安全**:构建镜像时,优化Dockerfile(如多阶段构建)以减少镜像大小;打包文件后,验证其完整性(例如使用`sha256sum`)。 - **引用工具**:对于复杂应用,可使用Docker Compose(如引用[^5]的`docker-compose.yml`)管理多容器,但基础打包仍依赖上述命令。 通过以上步骤,您可以高效构建和打包Docker镜像容器。如果在执行中遇到问题,可提供更多细节(如Dockerfile内容),我会进一步协助。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值