新手入门笔记——Docker

Docker学习笔记

参考视频教程:狂神说docker https://www.bilibili.com/video/BV1og4y1q7M4

一、概述

Docker定义:是一个虚拟环境容器,可以将你的开发环境、代码、配置文件等一并打包到这个容器中,并发布和应用到任意平台中。docker是基于GO语言的开源项目。(核心:集装箱原理)

Docker基本组成
镜像image:模板,可创建多个容器服务
容器container:利用容器技术,独立运行一个/组应用。≈简易的Linux系统
仓库repository:存放镜像的地方。分为公有、私有仓库。eg:Docker Hub

Docker优点
隔离:每个容器有自己的文件系统
轻便:仅最核心环境,利用宿主机的内核和操作系统,无虚拟内核、硬件。docker是内核级别的虚拟化。

&虚拟机:软硬件全虚拟,虚拟和运行完整的OS,笨重

网址
https://www.docker.com/
官网
https://docs.docker.com/
文档地址(超详细)
https://hub.docker.com/
仓库地址

二、安装

参考:帮助文档
(服务器14的Docker version 19.03.13)
systemctl start docker #启动docker
docker version
docker run hello-world
docker images #查看下载的镜像
/var/lib/docker #默认资源路径
阿里云镜像加速!

三、命令

基础
run的流程

docker底层工作原理

Docker是一个Client-Server结构系统,Docker的守护进程运行在主机上,通过socket从服务端访问。Server接收到Client的命令 ,就会执行!
帮助命令
docker version #版本信息
docker info #系统信息,包括镜像和容器的数量
docker (命令) --help
帮助文档的地址:docs–>referrence–>Command-line reference (https://docs.docker.com/reference/)
镜像命令
docker images #查看所有本地的主机上的镜像
docker images -a,–all #列出所有镜像
docker images -q,–quiet #只显示镜像的id
docker search XXX #搜索镜像
docker search XXX --filter=STARS=5000 #搜索并过滤得到收藏数大于5000的
docker pull XXX[:tag] #下载镜像(可选tag版本,否则默认下载最新版本latest)
docker rmi -f 镜像ID/名称 #删除指定镜像(rmi即remove image)(-f,–force,否则无法删除运行容器中的镜像和不同容器均存在的同名镜像)
docker rmi -f 镜像ID 镜像ID 镜像ID #删除多个镜像
docker rmi -f $(docker images -aq) #删除所有镜像
docker history 镜像名 # 看到镜像的构建过程
容器命令
(有了镜像,才能创建容器)
docker run [参数] image名 [命令方式] #从镜像新建容器并启动
–name=“XXX” # 容器名字
-d # 后台方式运行
-it #使用交互式方式运行,进入容器查看内容
-p 主机端口:容器端口 #指定容器端口
-P #大P随机指定端口
–rm # 用完自动删除,一般用于测试
–net # 网络配置
-e XXX # 环境配置设置
命令方式:/bin/bash 或 /sh
eg:
docker run -it centos /bin/bash
docker run -it tomcat /bin/bash
等价于docker run -d -p 8080:8080 tomcat
docker exec -it 容器ID /bin/bash
exit #停止并退出容器
ctrl+P+Q #不停止,退出容器
docker ps #列出所有运行的容器
空 # 列出正在运行的所有容器
-a # 列出所有容器(正在运行+历史运行过)
-n=123 # 显示最近创建的n个容器
-q #只显示编号(静默模式)
docker rm 容器id #删除指定容器(不能删除正在运行的容器,rm -f才可强制删除)
docker rm -f $(docker ps -aq) #删除所有容器
docker start 容器id #启动容器 &run是新建
docker restart 容器id #重启容器
docker stop 容器id #停止
docker kill 容器id #强制停止
其他常用命令
后台启动容器(当前台没有应用时会自动关闭): docker run -d 镜像名
查看日志:docker logs -tf --tail 数字 容器ID
-tf # 持续显示日志
–tail 数字 # 要显示的日志条数
查看容器中的进程信息ps:docker top 容器ID
查看镜像的元数据:docker inspect 容器ID
进入当前正在运行的容器:
docker exec -it 容器ID /bin/bash # 进入容器后开启一个新的终端
docker attach 容器ID # 进入容器正在执行的终端
从容器内拷贝文件到主机上:docker cp 容器ID:容器文件 主机文件夹(手动拷贝,未来可用-v卷技术可以实现)
小结

四、镜像image

镜像image:一种轻量级、可执行的独立软件包。包括代码、运行时库、环境变量和配置文件。
如何得到镜像:远程仓库下载、朋友拷贝、自己通过dockerfile制作
Docker镜像加载原理:docker镜像实际由一层一层的文件系统组成,即联合文件系统UnionFS。包含bootfs(可公用的启动文件)、rootfs(即不同操作系统的发行版本)
分层理解:docker镜像都是只读的。当容器启动时,一个新的可写层(即容器层)被加载到镜像的顶部。
commit镜像(将容器提交为镜像)
docker commit -m=“提交的描述信息” -a=“作者” 容器id 目标镜像名:[TAG] # 提交容器成为一个新的副本镜像

五、容器数据卷

实质:容器间的数据共享技术!docker容器产生的数据,同步到本地,避免数据丢失和删容器跑路。实现容器的持久化和同步操作!
使用数据卷
用命令来挂载 -v:docker run -it -v 主机目录:容器目录
eg:docker run -it -v /home/test:/home centos /bin/bash
匿名挂载、具名挂载、指定路径挂载
匿名挂载:-v 容器内路径:ro/rw
docker run -v 容器内路径:ro/rw image
ro:read only只能通过宿主机来改变,容器内只读
rw:read write
docker volume ls # 查看卷的情况
docker volume inspect 卷名 # 查看卷的地址等详细信息
具名挂载(常用):-v 卷名:容器内路径:ro/rw
注:docker的卷不指定主机目录的情况下都在:/var/lib/docker/volumes/XXX/_data
指定路径挂载:-v 主机目录:容器目录
数据卷容器:–volume-from 父容器
实现多个容器间的数据共享
eg:docker run -d -P --name mysql01 --volume-from mysql00 mysql:5.7

六、DockerFile构建镜像(实质:命令参数脚本)

构建步骤
1、编写一个dockerfile文件
2、docker build构建成为一个镜像
eg:docker build -f dockerfile文件名 -t 目标名称 .
3、docker run运行镜像
4、docker push发布镜像(DockerHub、阿里云镜像仓库)
DockerFile基础知识
每个保留关键字(指令)都必须大写
#表示注释
执行从上到下顺序执行,每个指令都对应创建提交一个新的镜像层!
DockerFile:构建文件,定义了一切步骤,源代码。其面向开发,以后发布项目做镜像需要编写DockerFile文件。
DockerImages:通过DockerFile构建生成的镜像,最终发布和运行的产品。
Docker容器:容器就是镜像运行起来提供服务器。
DockerFile指令

FROM # 基础镜像,如centos
MAINTRAINER # 镜像是谁写的,姓名+邮箱
RUN # 镜像构建需要运行的命令
ADD 软件压缩包 地址# 添加内容,会自动解压压缩包 如tomcat压缩包
COPY # 类似ADD,将文件拷贝到镜像中
WORKDIR # 镜像的工作目录
VOLUME # 挂载的目录
EXPOSE # 暴露端口配置
CMD # 指定这个容器启动的时候要运行的命令,只有最后一个会生效,可被替代
ENTRYPOINT # 指定这个容器启动的时候要运行的命令,可追加命令
docker run 容器ID -l(可直接拼接到ENTRYPOINT命令后)
ONBUILD # 当构建一个被继承DockerFile,这时候就会运行onbuild指令,触发指令
ENV 环境变量名 地址# 构建的时候设置环境变量
发布镜像到DockerHub
注册登录账号docker login [参数] [SERVER]
-u,–username # 用户名
-p, --password # 密码
eg:docker login -u kuangshen
提交镜像docker push 用户名/镜像名:[tag版本号]
eg:docker push sycamore27/mycentos:1.0
docker tag 镜像ID 新镜像名(如:用户/名称):[tag版本号] # 修改名称和版本号
eg:docker tag 4e8e020ec86e sycamore27/mycentos:1.0
发布镜像到阿里云镜像仓库
看官网 很详细https://cr.console.aliyun.com/repository/
登录阿里云;找容器镜像服务;创建项目命名空间;创建容器镜像;浏览阿里云

七、Docker网络原理

理解Docker0(Docker0相当于公用路由器)

ip addr # 查看容器内部网络地址
每启动一个docker容器,就会给其分配一个Ip。容器带来的网卡都是成对出现的,因为是evth-pair技术,即一对虚拟设备接口,一段连着协议,一段彼此相连。evth-pair充当桥梁,连接各种虚拟设备。容器删除,对应的一对网桥也消失。
容器之间可以互相ping通
–link:ip变了没事,通过名字访问容器

八、idea整合Docker

以上入门=========
九、Docker Compose
十、Docker Swarm
十一、CI\CD jenkins

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值