0
点赞
收藏
分享

微信扫一扫

Docker使用心得

Docker打包好的程序包可以运行在任何系统上

1.Docker

Docker 如 何 解 决 大 型 顶 目 依 赖 关 系 复 杂 , 不 同 组 件 依 赖 的 兼 容 性 问 题 ? 
Doc ker 允 许 开 发 中 将 应 用 、 依 赖 、 函 数 库 、 配 置 一 起 打 包 , 形 成 可 移 植 镜 像 
D ker 应 用 运 行 在 容 器 中 》 使 用 沙 箱 机 制 , 相 互 隔 离 
Dock “ 如 何 解 决 开 发 、 测 试 、 生 产 环 境 有 差 异 的 问 题 
. D ker 镜 像 中 包 含 完 整 运 行 环 境 , 包 括 系 统 函 数 库 , 仅 依 赖 系 统 的 Linux 内 
核 , 因 此 可 以 在 任 意 Linu × 操 作 系 统 上 运 行

 

总结

Do ( ker 是 一 个 快 速 交 付 应 用 、 运 行 应 用 的 技 术 : 
. 可 以 将 程 序 及 其 依 赖 、 运 行 环 境 一 起 打 包 为 一 个 镜 像 , 
可 以 迁 移 到 任 意 Linux 操 作 系 统 
2 、 运 行 时 利 用 沙 箱 机 制 形 成 隔 离 容 器 各 个 应 用 互 不 干 扰 
3 . 启 动 、 移 除 都 可 以 通 过 一 行 命 令 完 成 , 方 便 快 捷

 

 

 

2.Docker与虚拟机

 

虚 拟 机 ( vi rtual machine ) 是 在 操 作 系 统 中 模 拟 硬 件 设 备 然 后 运 行 另 一 个 操 作 系 统 比 如 在 Windows 系 统 里 面 运 行 
Ubuntu 系 统 这 样 就 可 以 运 行 任 意 的 Ubuntu 应 用 了 。 
node 
Libs 
Deps 
虚 拟 机 
MySQL | 
Libs 
Deps 
Libs 
Deps 
Docker 
丿 
操 作 系 统 
计 算 机 硬 件 
操 作 口 · : 操 作 | 
Libs 
Deps 
丿 
糸 统 
糸 统 
. 丿 
Hypervisor 
0 0 操 作 系 统 
计 算 机 硬 件

 

特 性 
性 能 
硬 盘 占 用 
启 动 
Docker 
接 近 原 生 
一 般 为 MB 
秒 级 
性 能 较 差 
一般 为 GB 
分 钟 级

总结

Docker 和 虚 拟 机 的 差 异 : 
· do 〔 ker 是 一 个 系 统 进 程 ; 虚 拟 机 是 在 操 作 系 统 中 的 操 作 系 统 
do 〔 ker 体 积 小 、 启 动 速 度 快 、 性 能 好 ; 虚 拟 机 体 积 大 、 启 动 速 
度 慢 、 性 能 一 般

 

3.Docker与DockerHub

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

dockeræg 
Client 
docker build 
docker pull 
docker run 
g' 
DockerServer 
docker daemon 
Container 
Registry 
MySQL 
NGMX 
images 
- NGMX

 

总结

镜 像 : 
将 应 用 程 序 及 其 依 赖 、 环 境 、 配 置 打 包 在 一 起 
容 器 : 
镜 像 运 行 起 来 就 是 容 器 , 一 个 镜 像 可 以 运 行 多 个 容 器 
Docker 结 构 , 
服 务 端 : 接 收 命 令 或 远 程 请 求 操 作 镜 像 或 容 器 
客 户 端 : 发 送 命 令 或 者 请 求 到 Docker 服 务 端 
DockerHub: 
一 个 镜 像 托 管 的 服 务 器 , 类 似 的 还 有 阿 里 云 镜 像 服 务 , 统 称 为 
DockerRegistry

 

4.通过文档对Docker进行简单安装

。。。。

 

5.Docker基本操作

(1)Docker镜像相关命令

镜 像 相 关 命 令 
镜 像 名 称 一 般 分 两 部 分 组 成 : [repository] : [tag]. 
在 没 有 指 定 tag 时 , 默 认 是 [ ate 代 表 最 新 版 本 的 镜 像 
mysq1:5.7 
Repository 
Tag

 

Docker Registry 
docker push 
docker build 
docker images 
docker rmi 
Locat 
docker pull 
docker save 
redis.tar 
Dockerfile 
docker toad

案例实现

2. 
3. 
EtfiDockerHub: 
hub.docker.com/ ,'nqinx 
All legacy individual organizational repos 
[root@uocaLnost docker pull nqinx 
Usina default 
Trying to pull repository docker. io/tibrary/nginx 
latest: »PuIling from docker. io/library/nginx 
8559a31e96f4: Downloading 14.12 '0/27.1 MB 
Bd69e59170f7: Downloading 4.211 10/26.21 MB 
iMüG4.• docker images 
[ root@nodel —]# docker images 
docker pull nginx 
REPOSITORY TAG 
nglnx 
latest 
IMAGE ID 
ae2feff98a0c 
CREATED 
3 weeks 
ago 
SIZE 
13 W

 

Docker镜像基本操作

docker images 
docker rmi 
• docker pull 
• docker push 
docker save 
docker load

Docker基本操作练习

2. 
3. 
4. 
5. 
6. 
*IJÆdocker pull$QfiRM 
*IJÆdocker save$+$ 
*IJÆdocker rmi 
*IJÆdocker load redis.tari# 
—Tredis.tar@

 

 

 

 

 

(2)Docker容器相关命令

docker run 
docker pause 
docker start 
docker unpause 
docker Stop

docker logs     查看容器运行日志

docker ps      查看所有运行的容器及状态

docker exec   进入容器执行命令

docker rm      删除容器(删除容器所有文件,内存)

 

案例实现1

n—: *docker 
docker run --name containerName -p 80:80 -d ngir14 
docker run : 
• --name : 
nginx: nnnginx 
192.168.150.16 
80 
Nginxö% 
port: 80

容器一旦创建成功,会生成唯一标识

创建完成使用docker ps 查看

总结

docker run 命 令 的 常 见 参 数 有 哪 些 ? 
--name: 指 定 容 器 名 称 
-p: 指 定 端 口 映 射 
-d: 让 容 器 后 台 运 行 
查 看 容 器 日 志 的 命 令 : 
docker logs 
添 加 -f 参 数 可 以 持 续 查 看 日 志 
查 看 容 器 状 态 : 
· docker ps

案例实现2

docker exec -it mn bash 
docker exec : 
• -it : 
bash: 
BE: i&Änginx$JHTMLFfiCEäN /usr/share/nginx/html 
cd /usr/share/nginx/html 
YEE: omindex.htmlÉkJfi8 
-i ' s#Wetcome to index. 
sed 
sed 
html 
index . html

sed -i 's#Welcome to nginx#传智播客欢迎您#g' index.html

sed -i 's#<head>#<head><meta charset ="utf-8">#g' index.html

 

总结

看 容 器 状 态 : 
docker ps 
添 加 . a 参 数 查 看 所 有 状 态 的 容 器 
朕 容 器 
docker rm 
不 能 到 除 运 行 中 的 容 器 , 蜍 非 添 厢 -f 参 数 
进 入 容 器 . 
NNdocker exec-it 旧 器 名 要 执 行 的 羚 ] 
e × e ( 命 令 可 以 进 入 容 器 修 改 文 件 , 但 是 在 容 器 内 修 改 文 件 是 
不 推 荐 的

 

 

(3)Docker数据卷命令

容器与数据耦合的问题

01 
不 便 于 修 改 
当 我 们 要 峰 改 Ngin × 的 htm 《 
内 容 时 . 要 入 容 器 内 部 
修 改 , 很 不 方 使 . 
02 
数 据 不 可 复 用 
在 容 器 内 的 修 改 对 外 是 不 可 
见 的 。 所 有 修 改 对 貊 创 建 的 
容 器 是 不 可 复 用 的 。 
升 级 维 护 困 难 
数 据 在 容 器 内 , 如 要 升 级 
容 器 必 到 除 旧 容 恶 , 所 有 
数 据 都 跟 着 除 了

 

数据卷

(volume) 
DockerHost 
Volumes r ¯ 
/var 
/lib 
/ root 
conf 
'docker 
html 
(volumes 
tml 
/ conf 
Container 
/etc/nginx/conf 
/usr/share/nginx/html 
Container 
/etc/nginx/conf 
/usr/share/nginx/html

操作数据卷

docker volume [COMMAND] 
docker 
create 
inspect 
Is 
prune 
rm 
61JR—Ovolume 
51] fffififivolume

 

案例实现

docker volume create html 
docker volume Is 
[ root@nodel docker volume Is 
DRIVER 
local 
local 
VOLUME NAME 
b4d1a06d0714e9702b4046b7730be650790d55addc146f8692 
html 
docker volume inspect html 
•createdAt": 
'Labels": O, 
•Na—": "html", 
•options": 
•Scope": •local' 
html.

 

总结

docker volume create 
docker volume Is 
docker volume inspect 
docker volume rm 
docker volume prune

 

挂载数据卷

docker run \ 
--name mn \ 
-v html: /root/html \ 
-p 8080:80 
nginx \ 
docker run : 
name mn : 
-v html:/root/htm : 
-p 8080:80 : 
nginx :

 

案例实现1

/usr/share/nginx/html , 
docker run --name mn -v html:/usr/share/nginx/html -p 80:80-9 nginx 
docker volume inspect html 
cd /var/lib/docker/volumes/html/ data 
vi index.html

 

总结

Docker使用心得_Docker

 

案例实现2

创 建 并 运 行 一 个 MySQL 容 器 , 将 宿 主 机 目 录 直 接 挂 载 到 容 器 
提 示 : 目 录 挂 载 与 数 据 卷 挂 载 的 语 法 是 类 似 的 : 
· . v [ 宿 主 机 目 录 ] : [ 容 器 内 目 录 ] 
· -v [ 宿 主 机 文 件 ] : [ 容 器 内 文 件 ] 
实 现 思 路 如 下 、 
. 在 将 课 前 资 料 中 fimysq I.ta r 文 件 上 传 到 虚 拟 机 , 通 过 [ oad 命 令 加 载 为 镜 像 
创 建 目 录 /tmp/myql/data 
2 . 
创 建 目 录 /tmp/myql/conf, 将 课 前 资 料 提 供 的 hmy 工 nf 文 件 上 传 到 /tmp/ myql/conf 
3 . 
去 DOCkerHub 查 阅 资 料 , 创 建 并 运 行 MYSQL 容 器 , 要 求 . 
4 . 
. EQ/tmp/myql/data 到 mysql 容 器 内 数 据 存 储 目 录 
@ 挂 载 /tmp/myq l/conf/hmy.cnf 到 mysq [ 容 器 的 配 置 文 件 
O 设 置 MYSQL 密 码

挂载命令:

docker run \

--name mysql \

-e MYSQL_ROOT_PASSWORD=111111 \

-p 3306:3306 \

-v /tmp/mysql/conf/hmy.cnf:/etc/mysql/conf.d/hmy.cnf \

-v /tmp/mysql/data:/var/lib/mysql \

-d \

mysql:5.7.25

 

总结

1 . docker run 的 命 令 中 通 过 -v 参 数 挂 载 文 件 或 目 录 到 
容 器 中 : 
O . vvo [ ume 名 称 : 容 器 内 目 录 
@ . v 宿 主 机 文 件 : 容 器 内 文 件 
O . v 宿 主 机 目 录 : 容 器 内 目 录 
2 . 数 据 卷 挂 载 与 目 录 直 接 挂 载 的 
O 数 据 卷 挂 载 耦 合 度 低 , 由 d ker 来 管 理 目 录 , 但 是 
目 录 较 深 , 不 好 找 
@ 目 录 挂 载 耦 合 度 高 , 需 要 我 们 自 己 管 理 目 录 , 不 过 目 
录 容 易 寻 找 查 看

 

 

(4)Docker自定义镜像

镜 像 结 构 
. 镜 像 是 将 应 用 程 序 及 其 需 要 的 系 统 函 数 库 、 环 境 、 配 置 、 依 赖 打 包 而 成 。

 

入 0 (Entrypoint) 
镰 像 运 行 六 口 , 一 是 程 序 
启 动 的 脚 本 和 参 数 
在 0 “ 0000 。 基 上 加 茭 裝 
包 、 俄 、 配 置 等 , 每 次 作 胡 
彪 成 新 的 、 层 . 
基 詭 像 ( 00 , 0 、 0g0 ) 
应 依 的 系 统 函 数 库 、 坏 境 
配 置 、 文 件 等

 

总结

镜 像 是 分 层 结 构 , 每 一 层 称 为 一 个 Laye r 
Basemage 层 : 包 含 基 本 的 系 统 函 数 库 、 环 境 变 量 、 文 件 系 统 
Entrypoint: 入 口 是 镜 像 中 应 用 启 动 的 命 令 
其 它 : 在 Baselmage 基 础 上 添 加 依 赖 、 安 装 程 序 、 完 成 整 个 应 用 的 
安 装 和 配 置

 

Dockerfile

ffZNDockerfiIe 
FROM 
ENV 
COPY 
RUN 
EXPOSE 
ENTRYPOINT 
iÄ6Linuxfishe11fiQ 
FROM centos:6 
ENV key value 
copy ./mysqI-5.7.rpm /tmp 
RUN yum install gcc 
EXPOSE 8688 
ENTRYPOINT java -jar xx.jar 
https://docs.docker.com/engine/reference/builder

 

 

案例实现

Efi—âjavana 
fidocker-demo.ja rXËJdocker-demoìX'iNÊ 
b\docker-demo 
iÉfi$Q : 
docker build -t javaweb:l.a

 

总结

1 . 
2 , 
Dockerfile 的 本 质 是 一 个 文 件 , 通 过 指 令 描 述 镜 像 的 
构 建 过 程 
Dockerfile 的 第 一 行 必 须 是 FROM, 从 一 个 基 础 镜 像 
来 构 建 
3 . 基 础 镜 像 可 以 是 基 本 操 作 系 统 , 如 Ubuntuo 也 可 以 
是 其 他 人 制 作 好 的 镜 像 , 例 如 : java:8-aIpine

 

 

(5)DockerCompose

ffZNDockerCompose 
Docker 
version: 
"5.8" 
services: 
mysqt: 
image: mysqI:5.7.25 
environment: 
123 
volumes: 
- /tmp/mysqt/data:/var/lib/mysql 
- /tmp/mysql_/conf/hmy. cnf:/etc/mysql/conf .d/hmy .cnf 
web : 
build: 
ports: 
- 8093: 8098 
https://docs.docker.com/compose/compose-file/

 

安装DocerCompose

参考资料:

Docker使用心得_docker_02

 

总结

DockerCompose 有 什 么 作 用? 
· 帮 助 我 们 快 速 部 署 分 布 式 应 用 , 无 需 一 个 个 微 服 务 去 
构 建 镜 像 和 部 署 。

 

DockerCompose部署服务集群

案例实现

将 之 前 学 习 的 cloud 一 demo 微 服 务 集 群 利 用 DockerCompose 部 署 
实 现 思 路 如 下 . 
O 查 看 课 前 资 料 提 供 的 cloud . demo 文 件 夹 里 面 已 经 编 写 好 了 docker . compose 文 件 
文 皇 文 
order-service 
docket-compose.yml 
0 修 改 自 己 的 cloud 一 demo 顶 目 , 将 数 据 库 、 nacos 地 址 都 命 名 为 docker-compose 中 的 服 务 名 
@ 使 用 maven 打 包 工 具 , 将 项 目 中 的 每 个 微 服 务 都 打 包 为 a pp.jar 
@ 将 打 包 好 的 app.jar 拷 贝 到 cloud 一 demo 中 的 每 一 个 对 应 的 子 目 录 中 
O 将 cloud 一 demo 上 传 至 虚 拟 机 , 利 用 docker-c&mpose up -d 来 部 署

注意:由于nacos存在bug,运行完之后需要从新运行各服务

 

(6)Docker镜像仓库

1.安装带有图形化界面版本

 

使用DockerCompose部署带有图象界面的DockerRegistry,命令如下:

version: '3.0'

services:

  registry:

    image: registry

    volumes:

      - ./registry-data:/var/lib/registry

  ui:

    image: joxit/docker-registry-ui:static

    ports:

      - 8080:80

    environment:

      - REGISTRY_TITLE=传智教育私有仓库

      - REGISTRY_URL=http://registry:5000

    depends_on:

      - registry

 

   

2.配置Docker信任地址

 

我们的采用的是http协议,默认不被Docker信任,所以需要做一个配置:

 

    # 打开要修改的文件

    vi /etc/docker/daemon.json

    # 添加内容:

    "insecure-registries":["XXXXXXXXX:8080"]

    # 重加载

    systemctl daemon-reload

    # 重启docker

    systemctl restart docker

 

3.将私有仓库镜像推送或拉取镜像

O 192.168450.101 :8080/ 
docker tag nginx:latest 192.168.150.101 
docker push 192.168.150.101 
docker pull 192.168.150.101

 

总结

1 . 推 送 本 镜 像 到 仓 库 前 都 必 须 重 命 名 ( do ( ker tag)W 
像 , 以 镜 像 仓 库 地 址 为 前 缀 
2 . 镜 像 仓 库 推 送 前 需 要 把 仓 库 地 址 配 置 到 d ker 服 务 
的 daemon.json 文 件 中諧 被 do 〔 ker 信 任 
3 . 推 送 使 用 d ker push 命 令 
4 . 拉 取 使 用 d ker pull 命 令

 

 

 

 

 

 

 

 

 

 

 

 

 

 

举报

相关推荐

0 条评论