docker 基础命令
docker 介绍
docker 是什么?
- Docker 使用 Google 公司推出的 Go 语言 进行开发实现,基于 Linux 内核 提供的 CGroup 功能和 namespace 来实现的,以及 AUFS 类的 UnionFS 等技术,对进程进行封装隔离,属于操作系统层面的虚拟化技术。 由于隔离的进程独立于宿主和其它的隔离的进程,因此也称其为容器。
- Docker 能够自动执行重复性任务,例如搭建和配置开发环境,从而解放了开发人员以便他们专注在真正重要的事情上:构建杰出的软件。
- 用户可以方便地创建和使用容器,把自己的应用放入容器。容器还可以进行版本管理、复制、分享、修改,就像管理普通的代码一样
为什么要用docker?
- 一致的运行环境:docker 提供完整的运行时环境,确保应用运行环境一致
- 更快的启动时间
- 隔离性
- 迁移方便
docker 基本概念
Docker 中有非常重要的三个基本概念,理解了这三个概念,就理解了 Docker 的整个生命周期。
- 镜像(Image)
- 容器(Container)
- 仓库(Repository)
理解了这三个概念,就理解了 Docker 的整个生命周期
从仓库—>拉取—>镜像,通过镜像—>创建—>容器
镜像(Image)
当我们需要部署和运行应用程序时,通常需要预先安装并配置各种软件环境、库和依赖。这个过程十分繁琐且容易出错,而 Docker 镜像的出现为我们提供了一种解决方案。
Docker 镜像是 Docker 容器的基础,它是一个轻量级的、可执行的、可移植的容器打包文件,包含了运行应用程序所需的所有代码、库、配置文件和依赖项。
- Docker 镜像采用分层的存储方式,每一层都是只读的,并且具有唯一的 ID。
容器 (Container)
- 它是 Docker 镜像的实例化运行态,具有轻量、可移植、可扩展等优势
- Docker 容器是 Docker 镜像的实例,可以理解为一个可运行的进程。
仓库 (Repository)
- Docker 仓库是用于存储和管理 Docker 镜像的中心化存储库。
- Docker Hub 是官方的公共 Docker 镜像仓库,提供了大量的开源镜像,也支持私有仓库。
常用命令
服务相关
查看docker版本
1
docker version
启动docker
1
systemctl start docker
关闭docker
1
systemctl stop docker
设置开机启动
1
systemctl enable docker
重启docker服务
1
service docker restart
关闭docker服务
1
service docker stop
日志信息
1
docker logs
故障检查
1
service docker status
显示docker系统的信息
1
docker info
日志信息
1
docker logs
镜像相关
查看镜像
1 | docker images |
删除镜像
1 | docker rmi [imagesId] |
查看指定镜像的创建历史
1 | docker history [id] |
指定镜像保存成 tar 归档文件, docker load 的逆操作
1 | docker save |
从 tar 镜像归档中载入镜像, docker save 的逆操作
1 | docker load |
搜索镜像
1 | docker search |
docker run
options 说明
| option | 作用 |
|---|---|
| -i | 以交互模式运行容器,通常与 -t 同时使用 |
| -t | 启动容器后,为容器分配一个命令行,通常与 -i 同时使用 |
| -v | 目录映射,容器目录挂载到宿主机目录,格式: |
| -d | 守护进程,后台运行该容器 |
| -p | 指定端口映射,格式:主机(宿主)端口:容器端口 |
| -P | 随机端口映射,容器内部端口随机映射到主机的端口 |
| -u | 以什么用户身份创建容器 |
| —net mynet –ip 172.20.0.6 | 指定网段(mynet 是已经创建的网段名称) 分配mynet 范围内的ip |
| -e , —env=[] | 指定环境变量,容器中可以使用该环境变量 |
| —name “nginx-lb” | 容器名字 |
| -m, —memory bytes | 设置容器使用内存最大值 |
| -h, —hostname string | 指定容器的 host name |
| —dns 8.8.8.8 | 指定容器 dns 服务器 |
| -e username=”ritchie” | 设置环境变量 |
| —privileged | 容器内是否使用真正的 root 权限 |
- 查看一下 是否看得懂 参考地址-有命令解释
1 | docker run -it -d --name mq \ |
容器相关
查看容器
1 | 查看全部容器 |
检查镜像或者容器的参数
1 | 检查镜像或者容器的参数 ,默认返回 JSON 格式 |
查看一个正在运行容器进程
1 | 查看一个正在运行容器进程,支持 ps 命令参数 |
容器的启动和停止
1 | 容器的启动和停止 |
容器的删除
1 | 容器的删除 |
杀死容器进程
1 | # 杀死一个或多个指定容器进程 |
查看容器日志
1 | # 查看容器日志 |
进入交互式容器
1 | docker exec -it {{containerName or containerID}} bash |
只用
-i参数,由于没有分配伪终端,看起来像pipe执行一样。但是执行结果、命令返回值都可以正确获取 一般和t连用只用
-t参数,则可以看到一个 console 窗口,但是执行命令会发现由于没有获得stdin的输出,无法看到命令执行情况,一般和i连用使用
-it时,则和我们平常操作 console 界面类似,而且也不会像attach方式因为退出,导致整个容器退出使用
-d参数,在后台执行一个进程。如果一个命令需要长时间进程,会很快返回
仓库相关
登录到远程仓库
1 | docker login [username] [password] # 登录到一个registry |
--password或-p:密码--password-stdin:从标准输入中获取密码--username或-u:用户名
从registry仓库搜索镜像
1 | # 搜索处收藏数不小于 3 ,并且能够自动化构建的 jdk 镜像,并且完整显示镜像描述 |
从仓库下载镜像到本地
1 | docker pull [name]:[vesion] |
评论




