Docker常用命令-全流程

本文详细介绍了Docker环境的安装步骤,提供了官方文档的参考链接,讲解了如何查看Docker环境信息,包括版本、信息和帮助。文章还深入探讨了镜像操作,如拉取、删除、查看详细信息,以及容器的操作,如启动、日志查看、数据拷贝等。此外,还介绍了如何构建自己的Docker镜像,包括Dockerfile的编写、镜像的制作、验证、导入导出及上传。
Docker环境安装

安装详细说明参考官方文档:https://docs.docker.com/get-docker/

环境信息查看
##查看docker容器版本
docker version
##查看docker容器信息
docker info
##查看docker容器帮助
docker --help
镜像操作
  1. 查看镜像
##列出本地images
docker images
##含中间映像层
docker images -a

查询出的信息从左到右依次为仓库名称、标签、镜像Id、创建日期
在这里插入图片描述

  1. 拉取镜像
    官方镜像仓库地址:https://hub.docker.com/,可以搜索自己需要的镜像和版本,包含详细的说明文档,提供下载命令。
    如果搭建了私有仓库,可以在镜像前加上仓库地址下载私有仓库的镜像(私有仓库拉取前要先登录
##下载Redis官方最新镜像,相当于:docker pull redis:latest
docker pull redis
##下载私人仓库镜像
docker pull bitnami/redis
  1. 镜像删除
##单个镜像删除,相当于:docker rmi redis:latest
docker rmi redis
##强制删除(针对基于镜像有运行的容器进程)
docker rmi -f redis
##多个镜像删除,不同镜像间以空格间隔
docker rmi -f redis tomcat nginx
  1. 镜像详细信息查看
##使用 inspect 命令查看镜像详细信息,包括制作者、适应架构、各层的数字摘要等
docker inspect redis
容器操作
  1. 容器启动
##新建并启动容器,参数:-i  以交互模式运行容器;-t  为容器重新分配一个伪输入终端;--name  为容器指定一个名称
docker run -i -t --name mycentos
##后台启动容器,参数:-d  已守护方式启动容器
docker run -d mycentos
##启动一个或多个已经被停止的容器
docker start redis
##停止一个容器
docker stop redis
##重启容器
docker restart redis

这里再详细说下启动过程中传递环境变量,以springboot项目为例
修改application.yaml配置文件的内容方式有两种,亲测可用

  • 将配置文件需要动态传参的地方修改为:${DB_USER:cloud0305},外部传入为:-e DB_USER=“dfdq”
  • 不修改原文件,直接借助springboot加载机制,使用配置的全路径:-e
    “SPRING_DATASOURCE_DRIVER-CLASS-NAME=org.postgresql.Driver”
docker run \
-p 5200:5200 \
-e REDIS_HOST="10.24.19.124" \
-e REDIS_PORT="6379" \
-e DB_URL="jdbc:postgresql://10.24.19.124:15432/dfdq" \
-e DB_USER="dfdq" \
-e DB_PWD="aaaaaa" \
-e "SPRING_DATASOURCE_DRIVER-CLASS-NAME=org.postgresql.Driver" \
-e "SPRING_DATASOURCE_HIKARI_CONNECTION-TEST-QUERY=SELECT 1" \
-e "SPRING_JPA_PROPERTIES_HIBERNATE_DIALECT=org.hibernate.dialect.CAFPostgreSQL95Dialect" \
-e "CAF-SECURITY_AUTHN_PROVIDERS_USERNAME-PASSWORD-JDBC_DATASOURCE_DRIVER-CLASS-NAME=org.postgresql.Driver" \
--privileged=true \
-d --name 2003_rc2 demo/test:2.0 . 
  1. 容器日志
    容器启动后,可以查看内部日志。
    不仅可以知晓当前的运行状态,也可以在运行出错的情况下通过日志排查
##查看redis容器日志,默认参数
docker logs rabbitmq
##查看redis容器日志,参数:-f  跟踪日志输出;-t   显示时间戳;--tail  仅列出最新N条容器日志;
docker logs -f -t --tail=20 redis
##查看容器redis从20190521日后的最新10条日志。
docker logs --since="2019-05-21" --tail=10 redis
  1. 容器的进入与退出
##使用run方式在创建时进入
docker run -it centos /bin/bash
##关闭容器并退出
exit
##仅退出容器,不关闭
快捷键:Ctrl + P + Q
##直接进入centos 容器启动命令的终端,不会启动新进程,多个attach连接共享容器屏幕,参数:--sig-proxy=false  确保CTRL-D或CTRL-C不会关闭容器
docker attach --sig-proxy=false centos 
##在 centos 容器中打开新的交互模式终端,可以启动新进程,参数:-i  即使没有附加也保持STDIN 打开;-t  分配一个伪终端
docker exec -i -t  centos /bin/bash
##以交互模式在容器中执行命令,结果返回到当前终端屏幕
docker exec -i -t centos ls -l /tmp
##以分离模式在容器中执行命令,程序后台运行,结果不会反馈到当前终端
docker exec -d centos  touch cache.txt 
  1. 查看容器
##查看正在运行的容器
docker ps
##查看正在运行的容器的ID
docker ps -q
##查看正在运行+历史运行过的容器
docker ps -a
##显示运行容器总文件大小
docker ps -s
  1. 容器的停止与删除
##停止一个运行中的容器
docker stop redis
##杀掉一个运行中的容器
docker kill redis
##删除一个已停止的容器
docker rm redis
##删除一个运行中的容器
docker rm -f redis
##删除多个容器
docker rm -f $(docker ps -a -q)
docker ps -a -q | xargs docker rm
## -l 移除容器间的网络连接,连接名为 db
docker rm -l db 
## -v 删除容器,并删除容器挂载的数据卷
docker rm -v redis
  1. 容器与主机间的数据拷贝
##将rabbitmq容器中的文件copy至本地路径
docker cp rabbitmq:/[container_path] [local_path]
##将主机文件copy至rabbitmq容器
docker cp [local_path] rabbitmq:/[container_path]/
##将主机文件copy至rabbitmq容器,目录重命名为[container_path](注意与非重命名copy的区别)
docker cp [local_path] rabbitmq:/[container_path]

参考链接:https://www.cnblogs.com/DeepInThought

全流程总结

上面对镜像的常用操作进行了一次梳理,接下来讲一下如何构建自己的镜像,包含镜像制作、镜像验证、镜像导入导出、镜像上传

1、Dockerfile说明

以下是一个Dockerfile的实例说明
Dockerfile 一般分为四部分:基础镜像信息、维护者信息、镜像操作指令和容器启动时执行指令
’#’ 为 Dockerfile 中的注释

# This my first nginx Dockerfile
# Version 1.0

# Base images 基础镜像
FROM centos

#MAINTAINER 维护者信息
MAINTAINER tianfeiyu 

#ENV 设置环境变量
ENV PATH /usr/local/nginx/sbin:$PATH

#ADD  文件放在当前目录下,拷过去会自动解压
ADD nginx-1.8.0.tar.gz /usr/local/  
ADD epel-release-latest-7.noarch.rpm /usr/local/  

#RUN 执行以下命令 
RUN rpm -ivh /usr/local/epel-release-latest-7.noarch.rpm
RUN yum install -y wget lftp gcc gcc-c++ make openssl-devel pcre-devel pcre && yum clean all
RUN useradd -s /sbin/nologin -M www

#WORKDIR 相当于cd
WORKDIR /usr/local/nginx-1.8.0 

RUN ./configure --prefix=/usr/local/nginx --user=www --group=www --with-http_ssl_module --with-pcre && make && make install

RUN echo "daemon off;" >> /etc/nginx.conf

#EXPOSE 映射端口
EXPOSE 80

#CMD 运行以下命令
CMD ["nginx"]
2、基于已有的Dockerfile制作镜像

执行命令的docker build命令时候,dockerfile需要在命令执行的当前目录
如果制作的镜像需要上传仓库,则需要加上仓库的前缀
最后的“.”不能丢

docker build -f ./Dockerfile -t repository/demo:2.0 .
3、运行镜像验证

镜像的启动参见:容器操作>>容器启动
需要注意的是容器启动需要的参数均要换成实际能访问的地址,避免localhost

4、将制作的镜像导出到其他环境

此处不能使用docker import,会丢失镜像环境信息

##将镜像导出到tar
docker save -o demo.tar repository/demo:2.0.1
##将镜像导入
docker load -i demo.tar
4、镜像上传仓库

首先需要登录

##账号、密码、仓库地址
docker login -u nx-business-ci -p Test6530 repository-ip

检查镜像名是否和仓库名一致,如果不一致,使用以下命令修改

docker tag SOURCE_IMAGE[:TAG] TARGET_IMAGE[:TAG]

推送镜像

docker push ImageName
<think>首先,用户的问题是关于Docker的:他们想理解`docker buildx create --use`命令的作用。用户问的是这个命令的作用是什么。 根据系统级指令,我需要: - 所有行内数学表达式使用`$...$`格式。 - 独立公式使用`$$...$$`格式并单独成段。 - 确保LaTeX语法正确。 - 使用中文回答。 - 生成相关问题。 - 在回答中引用的段落末尾自然地添加引用标识,如[^1]。 用户可见层的要求: - 回答结构清晰,帮助用户逐步解决问题。 - 尽量保证回答真实可靠。 参考的站内引用: - 引用[1]:命令语法:`$ docker buildx create --name=<builder-name> --driver=<driver> --driver-opt=<driver-options>` [^1]。 - 引用[2]:builder实例常用命令,包括`docker buildx ls`, `inspect`, `use`, `create`, `update`, `rm` [^2]。 - 引用[3]:关于Docker buildx打出多架构镜像的步骤 [^3]。 这些引用是关于Docker buildx的,特别是`create`命令。用户的问题聚焦在`docker buildx create --use`上。 关键点: - `docker buildx create`命令用于创建一个新的builder实例。 - `--use`选项可能表示在创建后立即切换到该builder实例。 从引用[2]中:`docker buildx create`创建新的builder实例,`docker buildx use`切换到指定的builder实例。 所以,`docker buildx create --use`组合了创建和切换操作。 我的回答应该结构清晰: 1. 解释命令的整体作用。 2. 分解命令的各个部分。 3. 说明为什么使用它。 4. 提供示例(如果需要)。 5. 自然地添加引用。 最后,生成相关问题。 大纲回答: 1. **介绍命令的作用**:`docker buildx create --use`命令用于创建一个新的builder实例并立即将其设置为当前使用的实例。 2. **详细解释**: - `docker buildx create`:创建一个新的builder实例。builder实例用于管理构建过程,支持多架构构建等。 - `--use`选项:在创建后,自动切换到新创建的builder实例,这样后续的构建命令会使用它。 3. **好处**:简化工作流程,避免手动切换。 4. **引用来源**:基于引用[1]和[2],自然地添加标识。 5. **示例**:给出一个简单的命令行示例。 6. **生成相关问题**:在最后添加相关问题部分。 确保使用中文。 生成相关问题: - 基于用户的问题,相关问题可能包括: 1. 如何查看现有的builder实例? 2. 如何删除builder实例? 3. `docker buildx`的其他常见用法? 4. 多架构构建的详细步骤? 引用添加: - 在解释命令语法时,引用[^1]。 - 在提到builder实例命令时,引用[^2]。 最终回答结构: - 开头直接回答问题。 - 逐步解释。 - 结束语。 - 相关问题部分。</think>### Docker buildx create --use 命令的作用 `docker buildx create --use` 命令用于创建一个新的 Docker Buildx builder 实例,并立即将其设置为当前活动实例。这简化了工作流程,避免了手动创建和切换实例的步骤。下面我将逐步解释这个命令的作用,确保回答清晰易懂。 #### 1. **命令的核心功能** - **创建新 builder 实例**:`docker buildx create` 部分用于创建一个新的 builder 实例。builder 实例是 Docker Buildx 的核心组件,它管理构建过程,支持多架构构建(如同时构建 amd64 和 arm64 镜像)、并行构建等高级功能。例如,引用[1] 提到命令语法:`$ docker buildx create --name=<builder-name> --driver=<driver> --driver-opt=<driver-options>`,其中 `--name` 指定实例名称,`--driver` 选择驱动(如 `docker-container`),`--driver-opt` 设置驱动选项[^1]。 - **立即切换使用**:`--use` 选项表示在创建新实例后,自动将其设置为当前活动实例。这意味着后续所有 `docker buildx` 命令(如构建镜像)都会使用这个新实例,无需额外运行 `docker buildx use <name>`。这提高了效率,特别是在需要频繁切换构建环境时。 #### 2. **为什么需要使用这个命令** - **简化操作**:在 Docker Buildx 中,builder 实例是独立的构建环境。默认情况下,Docker 使用一个内置的 builder,但它在多架构构建等功能上有限制。创建新实例(如基于 QEMU 的驱动)可以解锁这些功能,而 `--use` 避免了手动切换的麻烦。 - **支持高级场景**:例如,在构建跨平台镜像时(如同时支持 x86 和 ARM 架构),必须先创建一个支持多平台的 builder 实例。引用[3] 提到,启用实验性功能后,创建 builder 实例是多架构构建的关键步骤[^3]。 - **好处**:减少命令步骤,提升开发效率。例如,创建后直接运行构建命令,无需中断工作流。 #### 3. **命令示例和用法** 假设您要创建一个名为 `my-builder` 的 builder 实例,并使用 Docker 容器驱动(支持多架构): ```bash docker buildx create --name my-builder --driver docker-container --use ``` - **解释**: - `--name my-builder`:指定新实例的名称。 - `--driver docker-container`:选择驱动,允许在容器中运行构建,以支持多平台。 - `--use`:创建后立即激活此实例。 - **验证**:运行 `docker buildx ls` 可以查看实例列表,当前活动实例会标记为 `*`(如 `my-builder *`)。这基于引用[2] 中提到的 builder 实例命令[^2]。 #### 4. **注意事项** - **依赖实验性功能**:Docker Buildx 是实验性工具,需在 Docker 设置中启用“实验性功能”(Docker Desktop 默认开启)。 - **错误处理**:如果名称冲突或驱动不支持,命令会报错(如 `ERROR: existing instance for name "my-builder"`)。此时,可先用 `docker buildx rm my-builder` 删除旧实例[^2]。 - **资源管理**:创建多个实例可能占用额外资源,建议用 `docker buildx prune` 清理未使用的构建缓存。 总之,`docker buildx create --use` 是 Docker 构建流程的优化工具,特别适用于多架构镜像构建场景。通过自动创建和切换,它让复杂构建任务更高效。更多细节可参考 Docker 官方文档或实践示例[^3]。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值