一天码完docker基础(尚硅谷B站视频)

一整天,码完docker基础教程

1.首先安装centos7并图形化界面(我栽在没有图形化界面,浪费了一下午,先用命令行敲最后发现还是需要图形化界面 然后栽了大跟头重新安装了一次 )虚拟机安装在硬件上网络选桥接模式,

图形化界面的教程 

yum groupinstall "GNOME Desktop" "Graphical Administration Tools"

开始docker之旅,建议两个显示屏or一台电脑一个ipad,边学边做or记笔记 提高效率。可使用markdown记录笔记,尽管我还没有好的方法上传图片,笔记记录如下。

 

# Docker 学习记录 容器虚拟化技术#
一次构建,处处运行
Docker是基于go语言实现的云开源项目,只需要一次配置好环境,换到别的机子上就可以一键部署好,人人简化了操作。
解决了运行环境和配置问题软件容器,方便做持续继承并有助于整体发布的容器虚拟技术。
root zh123456
# Docker可以做什么(容器虚拟技术) #
Linex容器(LXC)不是模拟一个完整的操作系统,而是对进程进行隔离。容器与虚拟机不同,不需要捆绑一整套操作系统,只需要软件工作所需的库资源和设置,系统因此而变得高效轻量。
# 与传统虚拟机比较 #
1. 传统虚拟机技术是虚拟出一套硬件后,在其上运行一个完整操作系统,在该系统上再运行所需应用进程
2. 而容器内的应用进程直接运行于宿主的内核,容器内没有自己的内核,而且也没有进行硬件虚拟。因此容器要比虚拟机更为轻便。
3. 容器之间互相隔离,每个容器都有自己的文件系统,容器之间进程不会相互影响,能区分计算资源。

# 三大特征 #
镜像 容器 仓库

CentOS6.5以上


uname -r 查看版本

镜像:模板(只读)一个镜像可以创建多个容器
容器:实例 容器是用镜像创建的运行实例
它可以被启动、开始、停止、删除。每个容器都是相互隔离的。保证安全的平台
相当于一个简易版的Linex系统和运行再其中的应用程序。
容器可读可写
仓库:集中存放镜像文件的场所
仓库和仓库注册服务器是有区别的。仓库注册服务器上往往放着多个仓库,每个仓库中有包含了多个镜像,每个镜像有不同的标签。
仓库分为公开仓库和私有仓库两种形式国内公开仓库包括阿里云、网易云等


Docker本身是一个容器运行载体或称之为管理引擎。我们把应用程序和配置依赖打包好形成一个可交付的运行环境,这个打包好的运行环境就是image镜像文件。只有通过这个镜像文件才能生成Docker容器。image文件可以看作是容器的模板。Docker根据image文件生成容器的实例。同一个image文件,可以生成多个同时运行的容器实例。
image文件生成的容器实例,本身也是一个文件,称为镜像文件
一个容器运行一种服务,当我们需要的时候,就可以通过docker客户端创建一个对应的运行实例,也就是我们的容器
至于仓库,就是放了一堆镜像的地方,我们可以把镜像分布到仓库中,需要的时候从仓库中拉下来就可以了。

# Docker原理 #
Docker是一个CS结构体系,Docker守护进程运行在主机上,然后通过Socket连接从客户端访问,守护进程从客户端接收命令并管理运行在主机上的容器。容器,是一个运行时环境

# 为什么Docker比VM快 #
1. Docker有着比虚拟机更少的抽象层。由于Docker不需要Hypervisor实现硬件资源虚拟化,运行在docker容器上的程序直接使用的都是实际物理机的硬件资源。因此在
2. 
3. 
4. 
5. U、内存利用率上docker将会在效率上有明显优势。
2. docker利用的时宿主机的内核,而不需要Guest OS.因此,当新建一个容器时,docker不需要和虚拟机一样重新加载一个操作系统内核。因此避免引寻、加载操作系统内核返回比较费时费资源的过程,当新建一个虚拟机时,虚拟机软件需要加载Guest OS。而docker由于直接利用宿主机的操作系统,则省略了这个过程



1. 操作系统: 与宿主机共享OS  宿主机OS上运行虚拟机OS
2. 存储大小: 镜像小,便于存储与传输  镜像庞大
3. 运行性能: 几乎无额外性能损失 操作新系统额外的CPU、内存消耗
4. 移植性: 轻便、灵活、适应于Linux 笨重、与虚拟化技术耦合度高
5. 硬件亲和性:面向软件开发者 面向硬件开发者
6. 部署速度:快速,秒级   较慢

# 帮助命令 #
1. docker version 版本
2. docker info 信息描述(加速器之类的信息都在)
3. docker - help

# Docker 镜像命令 #  
## docker images  本地拥有的镜像模板 ##
REPOSITORY  表示镜像的仓库源
TAG 镜像的标签
IMAGE ID: 镜像ID
CREATED:镜像创建时间
SIZE:镜像大小
## OPTIONS ##
-a 列出本地所有的镜像(含中间映像层)
-q 只显示镜像ID
--digests:显示镜像的摘要信息
--no-trunc:显示完整的镜像信息

## docker search (某个镜像的名字)##

eg: docker search tomcat
## OPTIONS ##
-s 点赞数
docker search -s 50 tomcat 超过50点赞数的tomcat
--no-trunc  完整摘要信息
--automated  只列出automated build类型的镜像 

## docker pull (镜像:TAG 默认lastest) ##


## docker rmi (镜像)   删除某个镜像##
eg: docker rmi hello-world

如果没有删除(强制删除)

docker rmi -f hello-world

删除多个 docker rmi -f 镜像名1:TAG 镜像名2:TAG

删除全部:docker rmi -f $(docker images -qa)

# 容器命令 #
docker pull centOS

## 新建并重启容器 docker run[OPTIONS] Image [command] ##

eg docker run -it --name myCentors ID(具体ID) 启动交互式容器

or docker run -it centos

进入ID myCentors

-name="容器新名字":为容器指定一个名称
-d 后台运行容器,并返回容器ID,也即启动守护端容器
-i 以交互模式运行容器,通常与-t同时使用
-t 为容器重新分配一个伪输入终端,通常与-i同时使用
-P 随机端口映射
-p 指定端口映射,有四种格式

**ps -ef**


## 列出当前所有正在运行的容器 docker ps [OPTIONS] ##
docker ps -l 上一个运行的
docker ps -a 过去所有的
docker ps -3 上三次运行的(不能用啦)
docker ps -q 只显示容器编号

## 退出容器 ##
 exit  容器停止退出

ctrl + P + Q  容器不停止退出

## 启动容器 docker start ID ##
docker start ID
docker stop ID
docker restart ID


## 关闭容器 ##
docker stop ID 温柔

docker kill ID 强制

## 删除已关闭的容器 ##
docker rm 容器ID
docker rm -f 容器ID

一次性删除多个
 docker rm -f $(docker ps -a -q)
  
(管道操作) docker ps -a -q | xargs docker rm


# 非交互式容器  守护进程的方式启动 #
docker run -d

此时docker ps 无该进程 

why: **(docker机制)**Docker容器后台运行,就必须有一个前台进程
容器运行的命令如果不是那些一直挂起的命令(eg top tail)就会自动退出

eg docker run -d centos

docker run -d centos (/bin/bash) "while true; do echo hello zzhh;sleep 2;done"

有些需要后台有些前台

## 查看容器日志 ##
docker logs -f -t --tail 容器ID
t 是加入时间戳
f 跟随最新的日志打印
tail 显示最后多少条

docker logs -f -t --tail 3 ID 显示最后三条log
## 查看容器内的进程 ##

docker top ID

## 查看容器内部细节 ##
docker inspect ID

很多内容的显示

## 进入正在运行的容器并以命令行交互 ##
docker exec -it ID bashShell
 
重新进入 docker attach ID

上述两个区别  attach 直接进入容器启动命令的终端,不会启动新的进程

exec 是在容器中打开新的终端,并且可以启动新的进程


docker cp ID 容器内路径 目的主机路径

# Docker镜像原理 #
镜像是一种轻量级、可执行的独立软件包,用来打包软件运行环境和基于运行环境开发的软件,它包含运行某个软件所需的所有内容,包括代码、运行时库、环境变量和配置文件。

## UnionFS(联合文件系统) ##
是一种分层、轻量级并且高性能的文件系统,它支持对文件系统的修改作为一次提交来一层层的叠加,同时可以将不同目录挂在到同一个虚拟机文件系统下。UnionFS文件系统是Docker镜像的基础,镜像可以通过分层来进行继承,基于基础镜像(没有父镜像),可以制作各种具体的应用镜像。

特性:一次同时加载多个文件系统,但从外面看起来,只能看到一个文件系统,联合加载会把各层文件系统叠加起来,这样最终的文件系统会包含所有底层的文件和目录。


docker的镜像实际上由一层一层的文件系统组成,这种层级的文件系统UnionFS.

**bootfs**(boot file system)主要包含bootloader和kernel,bootloader主要是引导加载kernel,Linux刚启动时会加载bootfs文件系统,在docker镜像的最底层是bootfs。这一层与我们典型的Linux/Unix系统是一样的,包含boot加载器和内存。当boot加载完成之后整个内核就都在内存中了,此时内存的使用权已有bootfs转交给内核,此时系统也会卸载bootfs.

**rootfs**(root file system),在bootfs之上,包含的就是典型Linux系统中的dev,/proc,/bin,/etc等标准目录和文件,rootfs就是各种不同的操作系统发行版,如Ubuntu,CentOS等

docker run -it  -p 8080:8080 tomcat


注:404不要慌

1.下tomcat
2.故意删除上一步镜像生产tomcat容器的文档
3.也即当前的tomcat运行实例是一个没有文档内容的容器,以它为模板commit一个没有doc的tomcat新镜像zh/tomcat02
4.启动我们的新镜像并和原来的对比

docker commit -a="zh" -m="tomcat without doc" 8ac186689731 zh/tomcat:1.2  以tomcat为模板生成新的容器

docker run -it zh/tomcat:1.2
docker run -it -p 7777:8080 zh/tomcat:1.2



docker run -d -p 7777:8080 zh/tomcat:1.2 后台运行 不会打印日志

# Docker 容器数据卷 #

目的:关闭容器后保存容器内的数据

特点:
- 数据卷可在容器之间共享或重用数据
- 
- 
- 数据卷中的更改不会包含在镜像的更新中
- 
- 数据卷的生命周期一直持续到没有容器使用它为止
- 

## 容器内添加数据卷 ##
docker run -it -v/宿主内绝对路径目录:/容器内目录 镜像名


docker run -it -v /myDataVolume: /dataValumeContainer centos

(相当于挂载)

根目录  cd /
根目录下 ll(L)

cat host.txt  查看文件内容

**注** 即使关闭容器,主机修改,再开启容器后后还是会拉取主机数据

# 命令 带权限 #
docker inpsect ID 

docker run -it -v /宿主机绝对路径目录:/容器内目录:ro(只读) 镜像名(可以主机写 但是容器内无法做修改等操作 容器只有查看的权限 无增删改)

删除某个路径下所有文件
先cd .. 退出一层
然后 rm -rf (文件名)/

# dockerfile 添加 #
1. 根目录下新建mydocker文件夹并进入
2. 可在Docker中使用VOLUME指令来给镜像添加一个或多个数据卷,编写文件dockerfile
3. file构建
4. build 获得自定义的镜像
5. run


VOLUMS["/dataVolumeContainer","/dataVolumeContain2","/dataVolumeContainer3"]

	FROM centos
	VOLUME ["/dataVolumeContainer1","/dataVolumeContainer2"]
	CMD echo "finished,.....success1"
	CMD /bin/bash
(在该路径下做)
docker bulid -f /mydocker/Dockerfile it zh/centos

docker run -it zh/centos

Docker挂载主机目录Docker访问出现cannot open directory:Permisssion denied

解决方法:在挂载目录后多加一个-privileged= true


说明:
出于移植性和分享的考虑,用-v主机目录容器目录这种方式不能够直接在dockerfile中实现
由于宿主机目标是依赖于特定宿主机的,并不能够保证在所有的宿主机上都存在这样的特定目录。

## 数据卷容器 ##

容器间传递共享  volume from
eg  2的数据来源1 

docker run -it --name do1 zh/centos
cd dataVolumeContainer2
touch dc01_add.txt

docker run -it --name do2 --volumes-from do1 zh/centos
docker run -it --name do3 --volumes-from do1 zh/centos

do2中有add.txt

do1 do2 do3的文件是同步的,将1删除后,do2 do3的数据依旧是同步的

dockerfile是用来构建Docker镜像的构建文件 编写dockerfile build run三步

每条保留字指令都必须为大写字母且后面要跟随至少一个参数

指令按照从上到下,顺序执行

#表示注释

每条指令都会创建一个新的镜像层,并对镜像进行提交

从应用软件的角度来看,Dockerfile、Docker镜像与Docker容器分别代表软件的三个不同阶段
1. Dockerfile是软件的原材料 面向开发
2. Docker镜像是软件的交付品 面向交付
3. Docker容器则是软件的运行态 面向部署与运维

## 保留字指令 ##
设置环境变量  文件位置
FROM centos
MAINTAINER zzhh
ENV mypath /tmp
WORKDIR $mypath
RUN yum -y install vim
RUN yum -y install net-tools

EXPOSE 80
CMD /bin/bash

列出镜像变迁史

docker history ID

CMD 启动一个容器是执行的命令  只有最后的一条命令生效
ls -l 
注 CMD会被docker run 后面的参数覆盖
docker run -iwt -p 7777:8080 tomcat ls -l

ENTRYPOINT  在后追加
docker run后面的参数会被当做参数传递给ENTRYPOINT,之后形成新的命令组合

FROM centos
RUN yum install -y curl
CMD ["curl","-s","http://ip.cn"]
注:1020错误

FROM centos
RUN yum install -y curl
CMD ["curl","-s","http://ip.cn"]
ONBUILD RUN echo "your father" 如果有人继承该容器 则会被打印
注:1020错误

大项目 串起来
cope 拷贝文件和目录到镜像中。将从构建上下文目录中<原路径>的文件/目录复制到新的一层镜像内的<目标路径>


mysql 5.6

docker run -p 12345:3306 --name mysql -v /zh/mysql/conf.d:/ect/mysql/conf.d -v /zh/mysql/logs:/logs -v /zh/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.6


redis
docker run -d -p 6379:6379 -v $PWD/conf/redis.conf:/usr/local/etc/redis/redis.conf -v $PWD/data:/data --name docker-redis docker.io/redis redis-server /usr/local/etc/redis/redis.conf --appendonly yes

。

 

 

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
gulimall_pms 商品 drop table if exists pms_attr; drop table if exists pms_attr_attrgroup_relation; drop table if exists pms_attr_group; drop table if exists pms_brand; drop table if exists pms_category; drop table if exists pms_category_brand_relation; drop table if exists pms_comment_replay; drop table if exists pms_product_attr_value; drop table if exists pms_sku_images; drop table if exists pms_sku_info; drop table if exists pms_sku_sale_attr_value; drop table if exists pms_spu_comment; drop table if exists pms_spu_images; drop table if exists pms_spu_info; drop table if exists pms_spu_info_desc; /*==============================================================*/ /* Table: pms_attr */ /*==============================================================*/ create table pms_attr ( attr_id bigint not null auto_increment comment '属性id', attr_name char(30) comment '属性名', search_type tinyint comment '是否需要检索[0-不需要,1-需要]', icon varchar(255) comment '属性图标', value_select char(255) comment '可选值列表[用逗号分隔]', attr_type tinyint comment '属性类型[0-销售属性,1-基本属性,2-既是销售属性又是基本属性]', enable bigint comment '启用状态[0 - 禁用,1 - 启用]', catelog_id bigint comment '所属分类', show_desc tinyint comment '快速展示【是否展示在介绍上;0-否 1-是】,在sku中仍然可以调整', primary key (attr_id) ); alter table pms_attr comment '商品属性'; /*==============================================================*/ /* Table: pms_attr_attrgroup_relation */ /*==============================================================*/ create table pms_attr_attrgroup_relation ( id bigint not null auto_increment comment 'id', attr_id bigint comment '属性id', attr_group_id bigint comment '属性分组id', attr_sort int comment '属性组内排序', primary key (id) ); alter table pms_attr_attrgroup_relation comment '属性&
docker 尚硅谷是由尚硅谷周阳老师所提供的Docker教程的相关学习笔记。这份教程还没有经过勘误检查。在这个教程中,你可以学习到Docker的简介以及如何安装和启动Docker。安装Docker CE的方法是通过使用命令sudo yum install docker-ce docker-ce-cli containerd.io docker-compose-plugin来安装最新版本。启动Docker可以使用命令sudo systemctl start docker,并通过ps -ef|grep docker命令来查看Docker进程。另外,可以使用docker version命令来查看Docker的版本信息。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [【学习笔记】尚硅谷周阳老师的Docker教程学习笔记](https://blog.csdn.net/zuzhiang/article/details/117339172)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [尚硅谷Docker实战教程学习总结文档](https://blog.csdn.net/BadBoyxiaolin/article/details/128973573)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值