红泥小火炉


Docker入门(一)

Nathaniel 2020-07-13 476浏览 0条评论
首页/正文
分享到: / / / /

运行底层原理

docker是一个CS架构的系统,守护进程在主机上,然后通过socket连接从客户端访问,守护进程从客户端接收命令并管理运行在主机上的容器。

docker有比虚拟机更少的抽象层,减少了硬件资源虚拟化,没有硬件负担;

docker利用的是宿主机的内核,不需要Guest OS,

核心概念

镜像:创建容器的基础,可以理解为面向Docker引擎的只读模板。Docker运行容器之前需要本地存在对应的镜像,如果镜像不在本地,Docker会尝试从默认镜像仓库下载(Docker Hub),用户也可以使用自定义的镜像仓库。

容器:轻量级沙箱。Docker利用容器来运行和隔离应用。容器是将从镜像创建的应用运行实例。

仓库:Docker集中存放镜像文件的场所。

安装

yum install -y docker
// 设置开机自启动,否则运行命令会提示:Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?
systemctl enable docker
// 启动
systemctl start docker
// 重启
systemctl restart docker

帮助命令

docker version
docker info
docker --help

镜像命令

docker images   --列出本机主机上的镜像

REPOSITORY:表示镜像的仓库源;

TAG:镜像的标签,相当于镜像的快捷方式;

IMAGE ID:镜像id;

CREATED:镜像创建时间;

SIZE:镜像大小

参数:

docker images -a       //列出本地所有的镜像(含有中间镜像层)
docker images -q       //只显示镜像id
docker images --digests //显示镜像的摘要信息
docker images --no-trunc//显示完整的镜像信息

查看镜像详细信息

docker inspect 镜像id

返回值为一个json文件,只查看其中某一项时,可以用-f参数来指定。

查找镜像

docker search 镜像名字    //查找镜像名字
docker search -s 30 tomcat  //数量超过三十
docker search -s 30 --no-trunc  tomcat//展示完整的描述
docker search 镜像名字 --automated=false  //仅显示自动创建的镜像
//使用--filter=is-automated=true来代替--automated=false

下载镜像

docker pull tomcat //下载tomcat镜像,等价于:latest

删除镜像

docker rmi -f hello-world      //删除单个  不推荐使用,因为会出现意想不到的现象
docker rmi -f 镜像名:TAG 镜像名2:TAG //删除多个
docker rmi -f $(docker images -qa)  //删除全部镜像  
//当有某个镜像创建的容器存在时,镜像文件默认是无法被删除的。先删除容器,再删除镜像

思考:docker push || docker commit

创建镜像

创建镜像有三种方式:基于已有镜像的容器创建,基于本地模板导入,基于Dockerfile创建。

基于已有镜像的容器创建
docker commit [options] container [REPOSITORY[:TAG]]
-a || --author="" //作者信息
-m || --message="" //提交信息
-p || --pause=true  //提交时暂停容器运行
docker commit -m "Added a new file" -a "docker Newbee" 415ff8cf4a98  test // --此处编码为容器编码415ff8cf4a98

创建之后返回一个id。

基于本地模板导入
cat centos-6-x86_64.tar.gz|docker import - centos:6

存出镜像

docker save -o 保存文件的名字和格式 镜像的名字:镜像的tag

导入镜像

docker load < 文件名
docker load -- input 文件名

上传镜像

docker push 镜像路径

上传镜像需要注册用户名和密码,暂时不验证。

容器命令

容器是镜像的一个运行实例,所不同的是容器带有额外的可写文件层。

有了镜像才能操作容器,先下载一个centos镜像:docker pull centos

创建容器

docker create -it 镜像名字:tag || docker create -it 镜像ID

该命令创建的容器处于停止状态。

启动容器:

docker run -it 镜像id
//该命令相当于先create一个容器,再执行启动命令。

--name="容器新名字":为容器指定一个名称;

-d:后台运行容器,并返回容器id,即启动守护式容器

-i:以交互模式运行容器,通常与-t同时使用;

-t:为容器重新配置一个伪输入终端,通常与-i同时使用;

-P:随机端口映射;

-p:指定端口映射,有以下几种格式:

ip:hostPort:containerPort

ip::containerPort

hostPort:containerPort

containerPort

列出所有运行的容器

docker ps 参数

参数:-a:列出当前所有正在运行的容器+历史上运行过的;

​ -l:显示最近创建的容器;

​ -n:显示最近n个创建的容器;

​ -q:静默模式,只显示容器编号;

​ --no-trunc:不截断输出。

获取容器的输出信息(和下面查看容器日志重复了)

docker logs 容器id
//docker run -d ubuntu /bin/sh -c "while true;do echo hello world;sleep 1;done"
//使用上述命令在后台循环打印hello world,通过docker logs 命令来查看输出信息,即hello world

退出容器

Ctrl+P+Q
exit
Ctrl + d

启动容器

docker start 容器id或者容器名字

重启容器

docker restart 容器id或者容器名

停止容器

docker stop 容器id或者容器名字

强制停止

docker kill 容器id或者名字

删除已停止的容器

docker rm 容器id
-f || --force=false    //强行终止并删除一个运行中容器
-l || --link=false     //删除容器的连接,但是会保留容器
-v || --volumes=false  //删除容器挂载的数据卷

一次性删除多个容器

docker rm -f $(docker ps -aq)
docker ps -aq | xargs docker rm

启动守护式容器

docker run -d 容器名

docker容器已经退出;将要运行的程序以前台运行的方式运行。

查看容器日志

docker logs -f -t --tail 容器id
-t:加入时间戳;-f:跟随最新的日志打印;--tail 数字:显示最后多少条

查看容器内运行的进程

docker top 容器id

查看容器内部的细节

docker inspect 容器id

进入正在运行的容器并以命令行交互

docker exec -it 容器id bashShell
docker attach 容器id
区别:attach:直接进入容器启动命令的终端,不会启动新的进程,多个窗口同时attach到一个容器的时候,所有窗口都会同步显示,一旦某个窗口出现阻塞,其他窗口也无法执行操作。
	 exec:在容器中打开新的终端,并可以启动新的进程

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

docker cp 容器id:容器内路径 目的主机路径

容器导出导入

docker export 容器 >导出文件
//容器导入和加载镜像命令一致
cat 文件|docker import -本地仓库名:标签
//两者的区别是:容器快照文件将丢弃所有的历史记录和元数据信息(仅保存容器当时的快照状态);镜像存储文件保存完整记录,体积也要大。

仓库(*搭建私有仓库)

集中存放镜像的地方。

注册服务器是存放仓库的具体服务器,一个服务器上可以有多个仓库。

搭建私有仓库是个试验点:

docker pull registry;
docker run -d -p 5000:5000 -v /usr/soft/docker/registry:/tmp/registry registry

镜像命令汇总: 容器命令汇总:

最后修改:2020-07-13 18:14:37 © 著作权归作者所有
上一篇

评论列表

还没有人评论哦~赶快抢占沙发吧~

博客信息

  • 文章数目 12
  • 标签数目 7
  • 运行天数
  • 最后活动

广告

文章目录