Docker 命令

基础命令

帮助命令

1
2
3
docker --version  # 显示docker的版本信息
docker info # 显示docker的系统信息
docker 命令 --help # 显示帮助命令

镜像命令

搜索镜像

1
2
3
4
# 搜索镜像
docker search mysql
# 条件过滤搜索结果
docker search --filter=STARS=5000

拉取镜像

1
2
3
4
# 默认拉取最新的镜像
docker pull mysql
# 指定版本下载
docker pull mysql:5.7

查看所有镜像

1
2
3
4
# 查看所有镜像信息
docker images -a
# 查看所有的镜像id
docker images -aq

删除镜像

1
2
3
4
5
6
7
#删除指定id的镜像
docker rmi 镜像id
docker rmi 镜像id 镜像id 镜像id 镜像id
#删除指定名称的镜像
docker rmi mysql:5.7
#迭代删除所有的镜像
docker rmi -f $(docker images -aq)

容器命令

运行镜像

1
2
3
4
5
6
7
docker run [可选参数] image
# 运行实例
docker run --name=mycat -d -p 8080:8080 tomcat
# 用完即删
docker run -it --rm tomcat
# 指定环境变量(实例)
docker run -d --name elasticsearch -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" -e ES_JAVA_OPTS="-Xms64m -Xmx512m" elasticsearch:7.6.2
  • –name=”Name”: 容器名字 tomacat01、tomacat02,用于区分容器

  • -e: 指定环境变量

  • -d: 后台守护进程运行

  • -p: 指定容器的端口,如 -p 8080:8080

    • -p :主机端口:容器端口
    • -p :容器端口
  • -P: 随机指定端口

  • -v: 指定数据卷

    • -v 容器文件位置:宿主机文件位置
  • –volumes-from: 指定容器的数据卷共享(指定谁,就同步谁的数据!继承!)

    • –volumes-from:继承自那个容器(父容器删除不影响已存在数据)
  • –net: 缺省 bridge

进入容器

1
2
3
4
# 运行一个centos并进入到容器里面
docker run -it centos /bin/bash
# 退出容器
exit

查看容器

1
2
3
4
# 查看正在运行中的容器
docker ps
# 查看所有容器
docker ps -a

退出容器

1
2
exit   # 直接容器停止并退出
Ctrl + P + Q # 容器退出不停止

删除容器

1
2
3
4
5
6
# 删除指定容器
docker rm bde00bc086cf
# 强制删除运行中的容器
docker rm -f bde00bc086cf
# 迭代删除全部的容器
docker rm -f $(docker ps -aq)

容器的启动与停止

1
2
3
4
5
6
7
8
# 启动容器
docker start 容器id
# 重启容器
docker restart 容器id
# 停止容器
docker stop 容器id
# 强制杀死容器
docker kill 容器id

进入运行中容器

1
2
3
4
# 进入到指定容器内部进行修改  开启一个新的终端
docker exec -it 0cd4d9d94de2 /bin/bash
# 进入到正在执行中的终端
docker attach 容器id

从容器拷贝文件到宿主机

1
2
3
docker cp 容器id:容器内文件的路径 宿主机路径
#实例
docker cp 0cd4d9d94de2:/Test.java /Test.java

其他命令

查看日志

1
2
# 查看容器运行产生的日志
docker logs -ft --tail 10 容器id
  • f: 格式化日志
  • t: 携带日志时间戳

查看进程

1
2
3
4
# 查看cpu等信息
docker top 0cd4d9d94de2
# 查看容器元信息
docker inspect 容器id

进阶命令

提交容器

1
2
3
4
# 提交一个容器为一个镜像(将容器打包)
docker commit [可选参数] 服务id 自定义镜像名称[:版本标签]
# 示例代码提交
docker commit -a="admin" -m="comment" 19329ae6df90 diytomcat:1.0
  • -a: 作者
  • **-m: **备注
  • -c: 将Dockerfile指令应用于创建的映像
  • -p: 提交期间暂停容器(默认为true)

数据卷使用

基本使用

1
2
3
4
# 关联数据卷
docker run [可选参数] -v /主机路径/:/容器路径/ 镜像名称
# 关联数据卷的实例命令
docker run -d -p 8080:8080 --name mytomcat -v /home/tomcat/webapps/:/usr/local/tomcat/webapps tomcat

MySQL安装实战

1
docker run -d -p 3366:3306 -v /home/mysql/conf:/etc/mysql/conf.d -v /home/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 --name mysql01 mysql:5.7
  • -d: 守护进程运行
  • -v: 添加数据卷(宿主机位置和容器位置映射)
  • -p: 堆对外映射端口
  • -e: 指定环境变量
  • –name: 容器名称

Dockerfile

构建镜像文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# 创建一个Dockerfile
vim Dockerfile

FROM centos

VOLUME ["volume01","volume02"]

CMD echo "-----end---"
CMD /bin/bash

:x

# 构建docker镜像
# -f dockerfile的路径
# -t 生成的镜像名称
# . 以当前路径为上下文打包
docker build -f /home/docker-volom/Dockerfile -t huangfu/centos:1.0 .

# 构建基本命令
docker build [OPTIONS] PATH | URL | -

Dockerfile概念

  1. 每个保留关键字(指令)都必须是大写字母
  2. 执行顺序从上到下
  3. 每一个指令都会创建提交一个新的镜像层并提交
  • FROM: 基础镜像,一切都从这里开始构建
  • MAINTAINER: 镜像是谁写的,姓名+邮箱
  • RUN: 镜像构建需要运行的命令
  • ADD: 添加一个内容,比如需要添加一个tomcat,则需要传递一个压缩包,便于在容器内构建!
  • WORKDIR: 镜像的工作目录
  • VOLUME: 挂在的目录
  • EXPOSE: 暴露端口
  • CMD: 一个指令,指定这个容器启动的时候要运行的命令
  • ENTRYPOINT: 指定这个容器启动的时候要运行的命令!可以追加命令!
  • ONBUILD: 当构建一个被继承的Dockerfile 这个时候就会运行指令,触发命令
  • COPY: 类似与ADD,将文件拷贝到镜像中
  • ENV: 构建的时候设置环境变量
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
# 构建一个具有复杂命令行的centos
vim Dockerfile

# 镜像继承自centos
FROM centos
# 作者信息
MAINTAINER huangfu<[email protected]>
# 设置环境变量
ENV MYPATH /usr/local
# 设置工作目录
WORKDIR $MYPATH
# 执行命令安装指令
RUN yum -y install vim
RUN yum -y install net-tools
# 暴露端口
EXPOSE 80
# 执行一些指令
CMD echo "-------end------"
CMD echo $MYPATH
CMD /bin/bash

:x

# 构建镜像
docker build -f /home/docker-volom/Dockerfile -t huangfu/diycentos:1.0 .

Docker 命令
https://uponclouds.top/2025/07/15/Docker 命令/
作者
Gentle He
发布于
2025年7月15日
许可协议