Docker 使用
安装
略
镜像
镜像使 Docker 基石,镜像是一个只读模板,可用来创建 Docker 容器。课从 Docker 仓库获得或其他用户获得。
如果要修改镜像内容,只能重新生成,Docker 镜像生成容器以后,容器内引导系统会被卸载,此时容器可读写。
容器
容器是从镜像创建的实例,可以启动、停止、删除。每个容器都是隔离的。
容器在启动时,创建一层 可写层 作为最上层。
仓库
仓库是放镜像的场所,注意区分 仓库 和 仓库库注册服务器 ,仓库注册服务器上往往放着很多仓库,仓库中有包含很多镜像,每个镜像又会包含不同标签。
仓库分为公开仓库和私有仓库。
最大的公开仓库是 Dicker-Hub,国内又 Docker Pool 等,用户也可在本地创建一个私有户创建自己的镜像后,可以 push 到服务器,其他人可以 pull 使用
于 Git 类似。注册服务器类似于 Github
image-20220903002041232
镜像的基本操作
pull 拉取镜像
1 | docker pull ubuntu:20.04 |
images 显示镜像列表
1 | docker images |
结果:
1 | 仓库源 标签 唯一 ID 创建时间 镜像大小 |
使用镜像|创建容器
1 | docker run -t -i ubuntu:20.04 /bin/bash |
生成一个容器运行
-i : 交互
-t : 终端
/bin/bash 运行的命令
rmi 删除镜像
1 | docker rmi hello-world # 使用 镜像名 |
创建镜像
3 个方式
- 从已创建镜像更新,并提交
- 使用 Dockerfile 指令创建新镜像
- 从本地导入
1. 更新已存在镜像
1.1 运行需要修改的容器
1 | docker run -t -i ubuntu:20.04 /bin/bash |
1.2 在镜像内进行修改
例如:进行升级操作
1 | sudo apt update |
1.3 提交修改
使用 commit 语句
1 | docker commit -m="commit comment sth." -a="aja" [容器ID] Ubuntu:20.04 |
1.4 使用新的镜像
再次列出镜像, ID 会改变,使用其创建新的容器即可
2. Dockerfile 构建镜像
2.1 Dockerfile 基本语法
一个 Dockerfile 模板
1 | FROM centos:6.7 |
使用
#注释FROM表示使用哪个镜像作为基础RUN指令会在创建时运行,可以安装软件包,更新初始化操作
2.2 使用 build 指令生成镜像, -t 添加 tag
1 | docker build -t someinfo [file path to dockerfile] |
3.从本地导入
image-20220903004327867
存出和载入镜像
存出
1 | docker save -o ubuntu_20.04.tar ubuntu:20.04 |
载入
1 | docker load --input ubuntu_20.04.tar |
镜像的其他用法
docker tag
为镜像添加一个 tag
1 | docker tag [镜像 ID] 用户名/镜像源名:新的tag |
docker search
查找镜像
1 | docker search httpd |
docker pull
上传镜像至仓库
1 | docker push [refers] |
详情看 help
镜像使用小结
image-20220903005050888
容器的概念与使用
Docker 基本组件
Docker 的核心组件
Docker 服务端与服务器
Docker 是 C/S 架构, 客户端向服务器和守护进程发起请求,服务端完成所有工作并返回结果。本地客户端可以连接到其他主机上的守护进程,也可在本地同时运行客户端和守护进程。
image-20220908225359812Docker 镜像
镜像是构建 Docker 的基石,体积小,便携,易分享、存储、更新。
镜像是只读的。
Docker 仓库(Registery)
[仓库](# 仓库)
Docker 容器
容器时从镜像创建的运行实例。它可以被启动 、开始、停止、删除。每个容器是相互隔离的、保证安全的平台。
可以把容器看作一个简易版的 Linux 环境
image-20220903005520393
Docker 容器的概念
容器类似一个小型的虚拟机,可读可写。
Docker 容器的使用
启动容器
- 新建容器启动 docker run
1
2
3docker run -it ubuntu:20.04 /bin/bash
# -t 让 docker 分配一个伪终端并绑定到容器的标准输入
# -i 参数让容器的标准输入保持打开
使用 docker run 时, Docker 完成的标准操作包括:
- 检查镜像是否存在
- 利用镜像创建并启动一个容器
- 分配一个文件系统,并在只读层外挂载一层可写层
- 从宿主机配置的网桥接口中桥接一个虚拟接口到容器中去
- 从地址池分配一个 ip 地址给 容器
- 执行用户指定应用程序
- 执行完毕后终止程序
- 启动停止的容器
1
2docker ps -a # 查看所有容器
docker start [option] [container | id]
使docker后台运行
1 | docker run -it -d [Container] [cmd] |
终止容器
1 | docker stop [container] |
当容器中运行的程序终止时,容器也终止
进入容器
1 | docker attach [container] |
1 | docker exec -it [container] cmd |
前一个在退出时会停止 docker 运行,后一个在退出后仍然可以运行
终止容器
1 | docker stop / kill [container] |
导出容器
1 | docker export [container] > export_name.tar |
image-20220908231117722
导入容器
image-20220908231225708
删除容器
删除前,需要容运行的容器停止,如果要删除一个正在运行的容器,使用 -f 参数
1 | docker rm [container] |
Docker 容器的技巧
绑定端口
1 | docker run -it -d -p 8081:8080 [container] |
四种方式:
image-20220908231634859
Author: 哒琳
Permalink: http://blog.jieis.cn/2022/82036ddd-81de-4198-aa2f-9369a77567e1.html
Comments