代码改变世界

尚硅谷Docker核心技术

2020-03-13 18:16  cascle  阅读(457)  评论(0编辑  收藏  举报

一.简介

拷贝环境,和代码一同部署

1.镜像技术

2.虚拟化容器技术

解决了运行环境和配置文件的软件容器,方便做持续集成并有助于整体发布的容器虚拟化技术

 

LXC:不会模拟完整操纵系统,只包含必须的配置文件和库。轻量级容器,更快更便捷占用资源少不需要模拟硬件仅仅是隔离

 

二.三要素

镜像:模板

容器:实例

仓库:保存镜像

 

三.安装

CentOs:6.5以上版本

 

6.8版本:

yum install -y epel-release

yum install -y dockr-io

配置文件位置:/etc/sysconfig/docker

service docker start

docker version验证:docker version

 

7:

按照官网文档安装

systemctl start docker启动docker

 

四.阿里云镜像加速

镜像仓库镜像

dev.aliyun.com,查找符合系统的镜像加速器配置docker

ps后可以看见docker带镜像仓库参数

 

五.helloworld镜像

docker run hello-world

 

六.底层运行原理

 CS架构

 

七.帮助命令

docker version:版本号

docker info:docker描述

docker --help:打印帮助

docker 【options】command 【args】

docker comand --help:子命令帮助

 

八.镜像命令

docker images:列出本地镜像

REPOSITORY:TAG来定义某个版本的镜像

options:

-a:所有镜像,包括中间镜像

-q:只显示id

--digests:摘要信息

--no-trunc:ID完整信息

 

docker search 《镜像名》:在网站上查找镜像

options:

--no-trunc:完整信息

-s:只列出标🌟不少于多少的镜像

--automated:只列出automated编译的镜像

 

dockek pull《镜像名称》:下载镜像

 

docker rmi 《镜像名称》:删除镜像

删除单个:-f,强制删除

删除多个:用空格间隔镜像名称

删除全部:$(images -qa)

 

docker tag:给image命名加版本号

docker history:创建image时提交记录

 

九.容器命令

新建容器并启动:

docker run 【options】Image 【commands】 【args】

Options:

--name="":容器名字

-d:守护式容器

-i:交互式容器

-t:重新分配一个伪终端,进入镜像里

-P:随机端口映射

-p:指定端口映射。ip:hostPort:containerPort。一定要有containerPort

docker -it Image

 

docker ps 【options】:

列出docker里在跑的容器

options:

-a:所有正在运行或者曾经运行过的容器

-l:最近创建的容器

-n:最近n个创建的容器

-q:安静模式

--no-trunc:无截断

 

退出容器:

exit:容器死掉

ctrl+p+q:容器活着

 

启动容器:

docker start 容器名字或者ID

 

重启容器:

docker restart

 

停止容器:

docker stop

 

强制停止容器:

docker kill

 

删除已停止容器:

docker rm 容器ID

删除多个容器:

docker -aq | xargs docker rm

docker rm $(docker -aq)

 

重要:

dockr run -d:容器退出,创建容器但是跑一下就退出

除非有前台一直在跑的进程,否则docker跑一下就退出

 

查看日志:

docker logs -f -t --tail ID

-t:时间戳

-f:跟随最新日志滚动

--tail:显示最后多少条

 

查看容器内运行的进程:

docker top ID

 

查看容器内部细节:

docker inspect

 

进入正在运行的docker容器,并以命令式交互:

docker exec -it ID bashShell:不用进入容器交互就执行命令

docker attach ID:进入容器

 

从容器拷贝文件到主机上:

docker cp 容器ID:路径 宿主机路径

 

命令有命令图

 

十.镜像

原理:

镜像是基于UnionFS,应用镜像可以以父环境镜像为基础

镜像是分层的

镜像是只读的,可写的是容器层

 

commit:

docker commit ID 新名字:【tag】 :提交容器副本,成为新的镜像

-m:描述信息

-a:作者

 

十一.容器卷

容器生成的数据用卷来存储。使用的时候挂载数据卷

 

V命令:

docker run -v 宿主机绝对目录:容器内目录

附加:ro是只读镜像,docker容器不能改,宿主机可以改

 

dockerfile里用VOLUME指令

VOLUME["",""]:指定容器里的挂载点,宿主机的点可以用inspect命令看到

-v后加--privileged=true,可以写

 

数据卷容器:

挂载数据卷的容器

--volumes-from:

 

十二.DockerFile

编写docker

直接docker build命令执行

 

 

解析过程:

1.每条指令要大写,至少跟随一个参数

2.从上到下执行

3.#为注释

4.每一条语句构建一个镜像层

 

关键字:

FROM:基于哪个镜像

MAINTAINER:维护者

RUN:构建时需要执行的命令

EXPOSE:暴露端口号

WORKDIR:默认工作目录

ENV:构建时的环境变量

ADD:拷贝+解压缩文件到镜像

COPY:拷贝文件到镜像,copy["src","dst"], copy src dst

VOLUME:容器数据卷

CMD:容器启动时,要执行的命令。多个CMD命令只有最后一个生效

shell格式:cmd 参数1

exec格式:cmd [“命令”,“参数1”]

参数列表格式:[“参数1”],给ENTRYPOINT指令提供参数

ENTRYPOINT:追加的启动时运行的命令,不会被替代

ONBUILD:触发器,父镜像被继承时父镜像的onbuild命令被执行

 

分三类命令,BUILD,RUN,BOTH

 

USER:指定哪个用户编译/执行这个dockerfile

 

.dockerignore文件:忽略文件不打包

 

十三.安装镜像

1.搜索镜像

2.拉取镜像

3.查看镜像

4.启动镜像

5.停止容器

6.移除容器

 

运行mysql:

需要加特别参数 -e设定用户名和密码

 

十四.push到阿里云

1.服务器创建命名空间

2.参考aliyun命令,推送镜像

 

十五.