Docker 相关操作命令详解及常用容器部署(图文超详细)

本文详细介绍了Docker的镜像命令,包括查看、搜索、拉取和删除;容器操作,如启动、停止、重启、日志查看等;重点讲解了常见应用如MYSQL、Redis、Nginx、Tomcat、ES等的容器部署步骤;还涵盖了Dockerfile的使用、镜像备份迁移以及私有仓库的搭建和使用,是Docker学习者的实用指南。

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

1、 Docker 镜像命令

1.1 查看镜像

  • docker images
    • OPTIONS参数说明:
      • -a:列出本地所有的镜像(含中间映像层)
      • -q :只显示镜像ID
      • –digests :显示镜像的摘要信息
      • –no-trunc :显示完整的镜像信息
        在这里插入图片描述

1.2 搜索镜像

  • docker search [OPTIONS] 镜像名称
    • OPTIONS参数说明:
      • –no-trunc : 显示完整的镜像描述。
      • -s : 列出收藏数不小于指定值的镜像。
      • –automated : 只列出 automated build类型的镜像。
        在这里插入图片描述

1.3 拉取镜像

  • docker pull 镜像名字[:TAG]
    在这里插入图片描述

1.4 删除镜像

  • docker rmi 镜像名称或镜像ID
    #删除单个或多个镜像
    docker rmi -f 镜像ID 镜像ID 镜像名:TAG
     
    #删除全部镜像
    docker rmi `docker images -q`
    

2、 Docker 容器命令

2.1 启动容器

  • docker run [OPTIONS] IMAGE [COMMAND] [ARG…]
    - OPTIONS参数说明:
    • –name=“容器新名字”: 为容器指定一个名称;
    • -d: 后台运行容器,并返回容器ID,也即启动守护式容器;
    • -i:以交互模式运行容器,通常与 -t 同时使用;
    • -t:为容器重新分配一个伪输入终端,通常与 -i 同时使用;
    • -P: 随机端口映射;
    • -p: 指定端口映射,格式为【ip:hostPort:containerPort、ip::containerPort、hostPort:containerPort、containerPort】
  • 示例一:启动交互式容器
    #启动时进入容器
    docker run -it --name=os01 centos /bin/bash
    
    #退出容器
    exit 容器停止退出
    Ctrl+P+Q 容器不停止退出
    
    在这里插入图片描述
  • 示例二:启动守护式容器
     #运行tomcat
     docker run --name isTom -p 8080:8080 -d 8973f493aa0a 
    
     #进入守护式容器
     docker exec -it 1e04952a04b4 /bin/bash
    
     #退出容器
     exit 容器停止退出
     Ctrl+P+Q 容器不停止退出
    
    在这里插入图片描述
    在这里插入图片描述

2.2 停止容器

  • docker stop 容器ID
#停止多个容器
docker stop 容器ID 容器ID

#停止所有容器
docker stop `docker ps -aq`

2.3 重启容器

  • docker restart 容器ID
#重启多个容器
docker restart容器ID 容器ID

#重启所有容器
docker restart`docker ps -aq`

2.4 删除容器

  • 删除多个容器
    docker rm -f 容器ID 容器ID
    
  • 删除所有容器
    text docker rm `docker ps -a -q`

2.5 查看容器日志

  • docker logs -f -t 容器ID
  • 参数说明:
    - -t: 加入时间戳
    - -f: 跟随最新的日志打印
    - --tail 数字: 显示最后多少条

2.6 查看容器内运行的进程

  • docker top 容器ID

2.7 查看容器内部细节

  • docker inspect 容器ID

2.8 与运行中容器进行交互

  • docker exec -it 容器ID /bin/bash
  • docker attach 容器ID
  • exec与attach区别:
    • exec是在容器中打开新的终端,并且可以启动新的进程。
    • attach是直接进入容器启动命令的终端,不会启动新的进程。

2.9 文件拷贝

  • 拷贝本机文件至容器【docker cp 需要拷贝的文件或目录 容器名称:容器目录】
    docker cp /opt/a.txt 1e04952a04b4:/usr/local/tomcat/temp
    
    在这里插入图片描述
  • 拷贝容器中文件至本机
    docker cp 1e04952a04b4:/usr/local/tomcat/temp/a.txt /root
    
    在这里插入图片描述

2.10 目录挂载

  • docker run -v 宿主机目录:容器目录 -di 0f3e07c0138f

    #挂载目录
    docker run --name isTom02 -v /opt/hf:/usr/local/tomcat/hf --privileged=true -p 8080:8080  -d 8973f493aa0a
    
    #挂载目录(带权限)
    docker run --name isTom02 -v /opt/hf:/usr/local/tomcat/hf:rw --privileged=true -p 8080:8080  -d 8973f493aa0a
    
    #挂载目录开放容器中root权限  --privileged=true
    docker run --name isTom02 -v /opt/hf:/usr/local/tomcat/hf:rw --privileged=true -p 8080:8080  -d 8973f493aa0a
    
  • 查看挂载信息

    docker inspect 容器ID
    

    在这里插入图片描述

  • 测试挂载

    #1 在宿主机目录下创建文件
    cd /opt/hf
    touch hello.txt
    
    #2 进入容器查看容器内挂载目录
    

    在这里插入图片描述

3、 Docker 常用容器部署

3.1 MYSQL容器部署

  • 拉取容器
    docker pull mysql:5.5.62
    
  • 部署容器
    #33306=》:MySQL端口
    docker run --name isSql -e MYSQL_ROOT_PASSWORD=123456 -p 33306:3306 -d d404d78aa797 --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
    
    在这里插入图片描述
  • 测试部署
    在这里插入图片描述

3.2 Redis容器部署

  • 拉取容器
    docker pull redis
    
  • 部署容器
    #6379=》6379:Redis通信端口
    docker run --name isRedis -p 6379:6379 -d 01a52b3b5cd1
    
    在这里插入图片描述
  • 测试部署
    在这里插入图片描述

3.3 Nginx容器部署

  • 拉取容器
    docker pull nginx
    
  • 部署容器
    #80=》:WEB端口
    docker run --name isNginx -p 80:80 -d f949e7d76d63
    
    在这里插入图片描述
  • 测试部署
    在这里插入图片描述

3.4 Tomcat容器部署

  • 拉取容器
    docker pull tomcat
    
  • 部署容器
    #18080=》8080:WEB端口
    docker run --name isTom -p 18080:8080 -d 8973f493aa0a
    
    在这里插入图片描述
  • 测试部署
    在这里插入图片描述

3.5 ES容器部署

  • 拉取容器
    docker pull elasticsearch:5.6.8
    
  • 部署容器
    #9200=》9200:WEB端口  9300=》9300:ES集群通信端口
    docker run -e ES_JAVA_OPTS="-Xms512m -Xmx512m" -p 9200:9200 -p 9300:9300 --name ES -d 6c0bdf761f3b
    
    在这里插入图片描述
  • 测试部署
    在这里插入图片描述

3.6 ES UI容器部署

  • 拉取容器
    docker pull mobz/elasticsearch-head:5
    
  • 部署容器
    #9100=》9100:WEB端口
    docker run -p 9100:9100 --name es-ui -d b19a5c98e43b
    
    在这里插入图片描述
  • 测试部署
    在这里插入图片描述

3.7 ActiveMQ容器部署

  • 拉取容器
    docker pull webcenter/activemq
    
  • 部署容器
    #61616=》61616:内部映射端口 8161=》8161:WEB端口 默认用户名密码:admin
    docker run --name isActiveMQ -p 61616:61616 -p 8161:8161 -d 3af156432993
    
    在这里插入图片描述
  • 测试部署
    在这里插入图片描述

3.8 RabbitMQ容器部署

  • 拉取容器
    docker pull rabbitmq:management
    
  • 部署容器
    #15672=》15672:WEB端口 5672=》5672:内部通信端口 默认用户名密码:guest
    docker run --name isRabbitMQ -p 5672:5672 -p 15672:15672 -d ac464814723d
    
    在这里插入图片描述
  • 测试部署
    在这里插入图片描述

4 、Docker 镜像备份/迁移

4.1 容器保存为镜像

#docker commit 镜像名称 新的镜像名称
docker commit isRedis copy_redis

在这里插入图片描述

4.2 镜像备份

#docker  save -o 备份名称 需要备份的镜像名称
docker save -o copy_redis.tar copy_redis

在这里插入图片描述

4.3 镜像恢复/迁移

  • 删除原有镜像
    docker rmi -f 71500d0e5c48
    
    在这里插入图片描述
  • 镜像恢复
    docker load -i copy_redis.tar
    
    在这里插入图片描述

5、Dockerfile详解

5.1 什么是Dockerfile?

  • Dockerfile是由一系列命令和参数构成的脚本,这些命令应用于基础镜像并最终创建一个新的镜像。
    • 对于开发人员:可以为开发团队提供一个完全一致的开发环境。
    • 对于测试人员:可以直接拿开发时所构建的镜像或者通过Dockerfile文件构建一个新的镜像开始工作了。
    • 对于运维人员:在部署时,可以实现应用的无缝移植。

5.2 Dockerfile常用命令

命令作用
FROM 镜像名称:TAG定义了使用哪个基础镜像启动构建流程
MAINTAINER 创建者声明镜像的创建者
ENV key value设置环境变量 (可以写多条)
RUN command是Dockerfile的核心部分(可以写多条)
ADD 宿主机源文件 目标文件将宿主机的文件复制到容器内,如果是一个压缩文件,将会在复制后自动解压
COPY 宿主机源文件 目标文件和ADD相似,但是如果有压缩文件并不能解压
WORKDIR path_dir设置工作目录

5.3 使用Dockerfile构建镜像【以构建jdk 1.8为例】

5.3.1 创建目录【用于存放源文件】
mkdir -p /opt/module/docker_repo
5.3.2 上传jdk至该目录

在这里插入图片描述

5.3.3 创建Dockerfile文件
#创建命令【必须是此名称】
vim Dockerfile

#Dockerfile内容

#依赖镜像名称或镜像ID【必须再本地列表中】
FROM centos

#指定镜像创建者信息
MAINTAINER HF

#切换工作目录
WORKDIR /opt/module/docker_repo
RUN mkdir  /opt/module/docker_repo/java

#ADD 是相对路径jar,把java添加到容器中
ADD jdk-8u171-linux-x64.tar.gz /opt/module/docker_repo/java

#配置java环境变量
ENV JAVA_HOME /opt/module/docker_repo/java/jdk1.8.0_171
ENV JRE_HOME $JAVA_HOME/jre
ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib:$CLASSPATH
ENV PATH $JAVA_HOME/bin:$PATH

在这里插入图片描述

5.3.4 执行构建

#末尾空格和.不能省略
docker build -t='jdk1.8.0_171' .

在这里插入图片描述

5.3.5 查看构建后结果
docker images

在这里插入图片描述

6、Docker 私有仓库

6.1 拉取私有仓库镜像

docker pull registry

在这里插入图片描述

6.2 启动私有仓库容器

docker run -di --name is_registry -p 5000:5000 registry

在这里插入图片描述

6.3 私有仓库访问测试

192.168.44.113:5000/v2/_catalog

在这里插入图片描述

6.4 修改daemon.json配置

#编辑
vim /etc/docker/daemon.json

#添加内容:目的是为了让docker信任私有仓库
{
"insecure-registries": ["192.168.44.113:5000"]
} 

在这里插入图片描述

6.5 开启registry仓库远程访问

#编辑
vim /lib/systemd/system/docker.service 

#修改配置
在ExecStart后添加  -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock \

在这里插入图片描述

6.6 刷新docker配置并重启

#刷新配置
systemctl daemon-reload

#重启docker容器
systemctl restart docker

6.7 上传镜像至私有仓库

  • 标记镜像为私有仓库镜像
    docker tag jdk1.8.0_171 192.168.44.113:5000/jdk1.8.0_171 
    
    在这里插入图片描述
  • 重新启动私服容器
    docker start registry
    
  • 上传标记镜像至私有仓库
    docker push 192.168.44.113:5000/jdk1.8.0_171 
    
    在这里插入图片描述
  • 重新访问私有仓库。
    在这里插入图片描述
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值