Docker个⼈学习总结(⼊门级)
Tips
仅仅做⼀个部署Docker的⼩⼩的总结
Docker为什么会出现
⽐如公司开发部门开发了⼀款产品,开发完了要上线使⽤。对于开发的负责⼈来说,他只需要把代码写好,打包即可在本地正常运⾏。
⽽真正要给客户使⽤的话,客户那边肯定是要对操作系统、运⾏环境等等进⾏⼀系列的配置,这个过程其实是⽐较繁琐的。如果是多个客户的话就要配置多次。
这些事务⼀般是交给公司的运维⼈员,那⾯临这种问题运维肯定是要崩溃的。⽽且产品的版本可能要迭代更新,要考虑不同环境的兼容性等等,这些⽆疑是增加了⼯作量。
那有什么办法能解决这个繁琐的问题呢?
Docker给出了⼀个解决⽅案,简单来说就是把软件开发的代码、数据连同开发环境和系统的配置⼀同打包交付给运维,运维不需要重新配置乱七⼋糟的东西就可以直接在机器上正常运⾏。
⼀句话总结:从系统环境开始,⾃底向上打包应⽤,打破“代码即应⽤”的观念。
Docker的三⼤概念
1.镜像(Image):类似于虚拟机中的镜像,是⼀个包含有⽂件系统的⾯向Docker引擎的只读模板。任何应⽤程序运⾏都需要环境,⽽镜像就是⽤来提供这种运⾏环境的。例如⼀个Ubuntu镜像就是⼀个包含Ubuntu操作系统环境的模板,同理在该镜像上装上Apache软件,就可以称为Apache镜像。
2.容器(Container):类似于⼀个轻量级的沙盒,可以将其看作⼀个极简的Linux系统环境(包括root权限、进程空间、⽤户空间和⽹络空间等),以及运⾏在其中的应⽤程序。Docker引擎利⽤容器来运⾏、隔离各个应⽤。容器是镜像创建的应⽤实例,可以创建、启动、停⽌、删除容器,各个容器之间是是相互隔离的,互不影响。注意:镜像本⾝是只读的,容器从镜像启动时,Docker在镜像的上层创建⼀个可写层,镜像本⾝不变。
3.仓库(Repository):类似于代码仓库,这⾥是镜像仓库,是Docker⽤来集中存放镜像⽂件的地⽅。注意与仓库注册服务器(Registry)的区别:仓库注册服务器是存放仓库的地⽅,⼀般会有多个仓库;⽽仓库是存放镜像的地⽅,⼀般每个仓库存放⼀类镜像,每个镜像利⽤tag进⾏区分,⽐如Ubuntu仓库存放有多个版本(12.04、1
4.04等)的Ubuntu镜像。国内的公开仓库包括阿⾥云和⽹易云等。
简单概括:
镜像:开发打包好的可交付的运⾏环境就是镜像⽂件,只有通过该镜像⽂件才能⽣成Docker容器.镜像⽂件相当于容器的模板,可⽣成多个同时运⾏的容器。
容器:⼀个容器运⾏⼀个服务,可以通过Docker管理运⾏实例。
仓库:就是存储镜像的地⽅,可发布可拉取镜像。
Docker与VM
1.Docker不需要Hypervisor实现硬件资源虚拟化,⽽是直接使⽤实际物理机的硬件资源,VM则要占⽤更多的抽象层,所以Docker的效率更⾼。
2.VM要重新加载⼀个OS内核,虚拟机软件新建时要加载Guest OS,这个加载时间时分钟级的,配置过VMware的⼈肯定懂的,⽽Docker 直接⽤宿主机的OS,新建⼀个Docker容器的时间是秒级的。
Docker安装
yum install -y yum-utils device-mapper-persistent-data lvm2
2.配置仓库
yum-config-manager \
--add-repo \
download.docker/linux/po
3.更新 yum 软件包索引
yum makecache fast
4.安装最新版本的 Docker CE
yum install docker-ce
5.启动Docker
systemctl start docker
6.配置阿⾥云镜像加速器
前往阿⾥云管理中⼼——
注册⼀下即可。
到“镜像加速器”——CentOS,然后在终端继续傻⽠式复制粘贴输⼊代码,配置daemon配置⽂件即可。
//新建daemon.json⽂件并配置内容
mkdir -p /etc/docker
tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors":["u7bqr5gq.mirror.aliyuncs"]
}
EOF
//重启服务
systemctl daemon-reload
systemctl restart docker
最后两⾏代码是重启Docker服务
然后我们查看⼀下是否配置好,输⼊以下代码
docker info
看到这个就说明配好了。
然后我们拉取⼀下hello-world 镜像
docker run hello-world
看到这个就说明拉取成功了
⾄此,安装配置Docker-CE就完成了。
Docker常⽤命令
⾸先贴⼀个 ,菜鸟教程的Docker命令⼤全
docker version
docker info
docker --help
上⾯三个命令很好理解,重点是帮助命令
镜像命令
//列出主机上现有的镜像,
docker images [OPTIONS]
//OPTIONS说明
-a:列出所有
-p:显⽰镜像ID
/
/搜索Dockerhub上的镜像
docker search [OPTIONS][image.name]
//OPTIONS说明
-s:列出收藏数不⼩于指定值的镜像,如docker search -s 30 tomcat
//拉取某个镜像,默认lastest
docker pull [image.name]
//删除某个镜像,默认lastest
docker rmi [OPTIONS][image.name1][image.name2]...
//OPTIONS说明
-f:强制删除
//全部删除
docker rmi -f $(docker images -qa)
容器命令
⾸先有镜像才能创建容器,所以我们需要下⼀个CentOS镜像,docker pull centos即可
这⾥拉取的镜像是简化版的Linux镜像,不像VMware⾥配置的CentOS(4个G),这⾥只有200M
//新建容器并启动命令
docker run [OPTIONS] IMAGE [COMMAND][]
//OPTIONS说明
-d: 后台运⾏容器,并返回容器ID;
-i: 以交互模式运⾏容器,通常与 -t 同时使⽤;
-t: 为容器重新分配⼀个伪输⼊终端,通常与 -i 同时使⽤;
//Docker打开tomcat,暴露在8888端⼝下
docker run -it -p 8888:8080 tomcat
//进⼊Docker-CentOS,交互并打开⼀个命令⾏终端
docker run -it IMAGE
//退出容器
exit //停⽌再退出
ctrl+P+Q //不停⽌退出
//启动、重启、停⽌、强制停⽌容器
docker start[restart][stop][kill][OPTIONS] CONTAINER []
//列出正在运⾏的容器
docker ps[OPTIONS]
//OPTIONS说明
-
a :显⽰所有的容器,包括未运⾏的
-q :静默模式,只显⽰容器编号
//删除容器
docker rm[OPTIONS][containers]...
//OPTIONS说明
-f:强制删除
//全部删除
docker rm -f $(docker ps -a -q)
//查看容器中运⾏的进程信息,⽀持ps命令参数docker重启容器命令
docker top[OPTIONS] CONTAINER [ps OPTIONS]
//连接到正在运⾏中的容器,直接进⼊命令终端,不启动新进程
docker attach [OPTIONS] CONTAINER
//在容器中打开新的命令终端,启动新进程
docker exec[OPTIONS] CONTAINER COMMAND []
提交某个镜像
docker commit -m="提交信息" -a="作者"容器ID ⽬标镜像名(⾃⼰取):版本标签
例如 docker commit -m="第⼀次提交" -a="cj""ID" QWER/tomcat:1.1.0
Docker容器数据卷
作⽤:主要实现容器的持久化,同时完成容器间的数据继承和数据共享
⽤直接命令添加
docker run -it -v /宿主机绝对路径:/容器内⽬录镜像名
1.容器和宿主机之间实现数据共享,共⽤⼀个数据地址。
2.容器停⽌退出后,主机进⾏修改数据,数据仍会同步到容器中去。
3.宿主机可以对⽂件和数据进⾏读写操作,⽽容器进⾏只读操作。
⽤DockerFile添加
DockerFile即对Docker镜像模板进⾏描述的⽂件,有⾃⼰的语法和规则,类似于shell脚本语⾔。
步骤:
1.⾸先在根⽬录下新建⼀个⽂件夹并进⼊(mkdir–cd–pwd)
2.在Dockerfile中使⽤VOLUME指令来给镜像添加⼀个或者多个数据卷
3.
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论