美文网首页
Docker 基本操作文档 2021年11月3日 至 2021年

Docker 基本操作文档 2021年11月3日 至 2021年

作者: 鄙人_阿K | 来源:发表于2021-11-03 22:48 被阅读0次

分布式框架中间件总纲

https://www.jianshu.com/p/00aa796bb5b8

友情链接

安装(docker)
后篇

前言:此篇着重实战,不深究原理

个人小感:

1、镜像和容器的关系,好似类和对象的关系
2、

目录

一、Docker 概述
二、Docker 安装
三、Docker 命令 ★
四、实战
     (1)Nginx
     (2)Tomcat
     (3)es+kibana
五、Portainer(可视化面板)
六、commit(提交镜像到本地)
七、数据卷的使用(挂载)
八、实战:MySQL 同步数据(挂载)
九、初始DockerFile
十、DockerFile ★
十一、Docker0(docker默认网络)
十二、docker部署微服务(IDEA 整合 Docker)

常用

# 拉取镜像
docker pull tomcat
# 启动容器
docker run -d --name nginx01 -p 3344:80 nginx
# 进入容器交互模式
docker exec -it 7e118dfsdg  /bin/bash

一、Docker 概述

1、Docker能做什么

(1)对比虚拟机缺点:


image.png
image.png

(2)容器化技术


image.png

(3)虚拟机和 Docker 不同

  1. 传统虚拟机,虚拟出一条硬件,运行一个完整的操作系统,然后在系统上安装运行软件
  2. 容器内的应用直接运行在宿主机的内容,容器是没有自己的内核的,也没有虚拟我们的硬件,所以就轻便了
  3. 每个容器间是相互隔离的,每个容器内都有属于自己的文件系统,互不影响
2、DevOps(开发及运维)

(1)应用更快速的交付和部署
传统:一堆帮助文档,安装程序
Docker :打包镜像发布测试,一键运行
(2)更便捷的升级和扩缩容
项目打包为一个镜像,扩展服务器A,服务器B
(3)更简单的系统运维
在容器化之后,我们的开发,测试环境都是高度一致的。
(4)更高效的计算资源利用∶
Docker是内核级别的虚拟化,可以再一个物理机上可以运行很多的容器实例!服务器的性能可以被压榨到极致。

二、Docker 安装(看上面的文档链接)

1、Docker的基本组成
image.png

(1)镜像 image :
docker镜像就好比是一个模板,可以通过这个模板来创建容器服务,tomcat镜像===>run ==> tomcat01容器(提供服务器),通过这个镜像可以创建多个容器(最终服务运行或者项目运行就是在容器中的)。

(2)容器 container:
Docker 利用容器化技术,独立运行一个或者一个组应用,通过镜像来创建。

容器可以理解为一个极简的 liunx

(3)仓库 repository:
仓库就是存放镜像的地方,
仓库分为共有和私有(类似于maven),
Docker hub(默认是国外),可以配置阿里云的(类似于maven配置)

2、run的原理图
image.png
3、docker是怎么工作的

(1)Docker 是一个 Client -Server 结构的系统,Docker 的守护进程运行在主机上,通过 Socker 从客户端访问。
(2)DockerServer接受到 Docker -Client 的指令,就会执行这个命令


image.png
4、docker 为什么比vm快

(1)Docker 有着比虚拟机更少的抽象层
(2)Docker 利用的是宿主机的内核,vm需要是 Guest OS


image.png

所以说,新建一个容器的时候,docker不需要像虚拟机一样重新加载一个操作系统的内核,避免引导。虚拟机是加载 Guest OS ,分钟级别的,而docker 是利用宿主机的操作系统,省略了复杂的过程,秒级。

三、Docker 命令 ★

1、帮助命令
docker version #显示docker 的版本信息
docker info # 显示 docker 的系统信息,包括镜像和容器的数量
docker 命令  --help #帮助命令
2、镜像命令

(1) docker images 查看所有本地的主机上的镜像


image.png

(2)docker search 搜索镜像


image.png

(3)docker pull 下载镜像


image.png image.png

(4)docker rmi 删除镜像


image.png
3、容器命令

(1)新建容器并创建


image.png

(2)列出所有运行的容器


image.png

(3)退出容器

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

(4)删除容器

docker rm 容器 id  # 删除指定id的容器,不能删除正在运行中的容器,如果要强制删除  rm -f

docker rm -f  $(docker ps -aq)   # 删除所有的容器

docker ps -a -q|xargs docker rm # 删除所有容器

docker ps -a #历史容器

(5)启动和停止容器

docker start  容器id # 启动容器
docker restart 容器 id #重启容器
docker stop 容器 id # 停止容器
docker kill 容器 id # 强制停止该id  容器
4、常用的其他命令

(1)后台启动容器

image.png

(2)查看日志


image.png
docker run -d centos /bin/sh -c  "while true;do echo myakkkkkk;sleep 1;done;"

docker ps

docker logs -tf --tail 10 ecf34dd

(3)查看容器中的进程信息


image.png

(4)查看镜像的元数据
docker inspect ecf34dd

(5)进入当前正在运行的容器
docker exec -it contos01 /bin/bash

image.png

(6)从容器内拷贝文件到主机上

docker cp ecf34dd313e6:/home/test.java /home
image.png

(7)docker 命令

attach   #当前she1l 下attach连接指定运行镜像
build   #通过Dockerfile定制镜像
commit    #提交当前容器为新的镜像
cp   #从容器中拷贝指定文件或者目录到宿主机中
create   #创建一个新的容器,同run,但不启动容器
diff   #查看docker容器变化
events   #从docker服务获取容器实时事件
exec   #在已存在的容器上运行命令
export   #导出容器的内容流作为一个 tar归档文件[对应import]
history   #展示一个镜像形成历史
images   #列出系统当前镜像
import   # 从tar包中的内容创建一个新的文件系统映像[对应export]
info   #显示系统相关信息
inspect   #查看容器详细信息
kill    #强杀指定 容器
。。。

四、实战

1、Nginx

(1)拉取、启动

docker pull nginx

docker images

docker run -d --name nginx01 -p 3344:80 nginx
image.png
image.png

映射关系图


image.png

寻找Nginx 配置文件

# 进入容器内部
docker exec -it nginx01 /bin/bash
# 查看配置位置
whereis nginx
# 
cd /etc/nginx
#
cat nginx.conf
# 退出
exit
# 停止当前容器
docker stop 容器id
2、Tomcat
image.png
3、es+kibana

ElasticSearch 安装(docker)

五、Portainer(可视化面板)

1、是什么
image.png
docker run -d -p 8088:9000 \--restart=always 
-v /var/run/docker.sock:/var/run/docker.sock --privileged=true portainer/portainer

2、测试
image.png

六、commit(提交镜像到本地)

dicker  commit  提交容器成为一个新的副本

# 命令类似 git ,-a 作者,-m 信息,
docker commit -a = "作者" -m="内容"   容器id  目标镜像名:[TAG]  
1、提交一个tomcat镜像(拷贝webapps.dist到 newWebapps中)
# 1、启动镜像,并且进入交互模式
docker exec -it e05bd8bf4e25 /bin/bash
# 2、拷贝
cp -r webapps.dist newwebapps
# 3、提交为一个新的镜像
docker commit  -a="mykk"  -m="newTomcat,1.0" e05bd8bf4e25 tomcat02:1.0
image.png

七、数据卷的使用

1、何为容器数据卷

(1)简单来说就是把docker 容器内的文件,挂载到liunx 系统文件下(为了持久化和同步操作)
(2)容器间也可以实现数据共享


image.png
2、实战

(1)方式一:直接使用命令挂载 -v

docker run -it -v 主机目录,容器目录

# 测试 centos 镜像
docker  run  -it  -v  /home/ceshi:/home  centos  /bin/bash

# 使用 inspect 查看
docker inspect 容器id
image.png

八、实战:MySQL 同步数据(挂载)

image.png

九、初识DockerFile

DockerFile 就是用来构建 docker 镜像的构建文件
通过以下脚本生成镜像,镜像是一层一层的,脚本一个个的命令。每个命令都是一层。

# 创建一个dockerfile 文件,名字可以修改,建议为 dockerfile
# 文件中的内容 指令(大写),参数
FROM centos

VOLUME ["volume01","volume02"]

CMD echo "-----end-----"

CMD /bin/bash

# 这里每个命令,就是镜像的一层
image.png

启动镜像:docker run -it eac7f31f5997 /bin/bash

image.png

这个卷和外部一定有一个同步的目录,匿名挂载(没有指定目录)


image.png

查看容器信息:

1、docker ps

2、docker inspect e3439cae928e

挂载的本地 centos位置


image.png

十、DockerFile

dockerfile 是用来构建 docker 镜像的文件,命令参数脚本

1、构建步骤:

1、编写一个 dockerfile 文件
2、docker build 构建成为一个镜像
3、docker run 运行镜像
4、docker push 发布镜像(DockerHub、阿里云镜像仓库)

2、构建过程:

1、每个保留关键字(指令),都必须是大写字母
2、执行从上至下
3、# 表示注释
4、每一个指令都会创建提交一个新的镜像层,并提交。


image.png image.png
3、DockerFile 的指令
FROM                 # 基础镜镜像,一切从这里开始构建
MAINTAINER     #  镜像是谁写的,姓名+邮箱
RUN                   #  镜像构建的时候需要运行的命令
ADD                  # 添加内容
WORKDIR         # 镜像的工作内容
VOLUME            # 挂载的目录
EXPOSE              # 保留端口的配置
CMD              # 指定这个容器启动的时候要运行的命令,只有最后一个会生效,可被替代
ENTRYPOINT        # 指定这个容器启动的时候要运行的命令,可以追加命令
ONBUILD            # 触发指令,当构建一个被继承的  DockerFile 时会运行这个指令
COPY                 # 类似ADD,将我们文件拷贝到镜像中
ENV                  # 构建的时候设置环境变量

查看镜像的构建配置:docker history 620eerji4656

十一、Docker0(docker网络)

1、查看三个网络环境:ip addr
image.png
2 、问题: docker 是如何处理荣期间的网络访问的?
image.png
# 清空所有镜像,保证干净
docker rm -f  $(docker ps -aq)   # 先删除所有的容器
docker rm -f  $(docker images -aq)   # 在删除所有的镜像

# 启动容器
docker run -d -P --name tomcat01  tomcat

# 查看容器ip
docker inspect --format='{{.NetworkSettings.IPAddress}}'  tomcat01

# linux ping 通容器内网络测试
ping 172.17.0.2
3、原理

(1)我们每启动一个 docker容器,docker就会给docker容易分配一个 IP ,我们只要安装了 docker ,就会有一个网卡 docker0 桥接模式,使用的技术是 evth-pair 技术。


image.png
image.png
4、容器 tomcat01 不是直接 连通到 tomcat02
image.png image.png
5、小结
image.png
image.png

十二、docker部署微服务(IDEA 整合 Docker)

1、随便创建一个springBoot工程,勾选web即可,顺便安装插件
image.png
2、根目录创建 dockerfile
image.png
FROM java:8

COPY   *.jar  /app.jar
# 映射端口
CMD  ["--server.port=8080"]
# 暴露端口
EXPOSE 8080

ENTRYPOINT ["java","-jar","/app.jar"]

3、将要打包后的jar和Dockerfile上传
image.png
4、编译,docker build -t mykk .
image.png
5、运行
image.png

相关文章

网友评论

      本文标题:Docker 基本操作文档 2021年11月3日 至 2021年

      本文链接:https://www.haomeiwen.com/subject/glthzltx.html