docker技术入门与实战-镜像容器仓库

软件猫 软件猫     2022-12-10     761

关键词:

1.如果出现Cannot connect to the Docker daemon. Is the docker daemon running on this host?

解决办法在控制台输入:>$ service docker start即可

2.hub.docker.com创建了自己的账号,如何push和pull
step1——找到本地镜像的ID:docker images
step2——登陆Hub:docker login --username=username --password=password --email=email
step3——tag:docker tag <imageID> <namespace>/<image name>:<version tag eg latest>(build,commit命令也可以)
step4——push镜像:docker push <namespace>/<image name>

3.本地镜像registry运行中,push后如何查看,或者说我们到底push到哪里去了?

本地镜像默认是保存在/var/lib/registry或者是/var/lib/ucf/registry中。可以在浏览器中打开127.0.0.1:5000/v2/_catalog查看我们已经push的镜像。其中5000是你运行registry时设置的端口,v2是你的registry的版本,如果是1.*,就是v1,如果是2.*就是v2。

0.0.0.0是默认的ip地址,就像路由器路由表中不存在的,都会将ip报文转发给0.0.0.0(我们可以设置某个端口为0.0.0.0出口,发出去我们就管不着了,寻址的事情就交给下一级路由器了)

255.255.255.255是广播地址

127网段整体保留,你输入的127.*.*.*都会转化为127.0.0.1环回地址。

所以上面在浏览器中可以打开127.*.*.*:5000/v2/_catalog。

Docker容器、镜像、仓库

1.容器:什么是docker容器呢?就是用来运行镜像的小型的虚拟机,或者说是一个轻量级的沙箱,Docker利用容器来运行和隔离应用。简单来讲,你就可以把它看作简单的linux系统环境,这里面会有很多打包好的引用在运行(也可能比较少)。 2.镜像:类似于虚拟机镜像,镜像是只读的,是创建docker容器的基础。运行中的一个镜像就构成了一格容器。 3.仓库:集中存储镜像的地方,网上有很多可以利用的仓库,你可以从上面下载各种你需要的镜像来使用。你也可以自己创建自己的本地仓库等等,仓库根据是否公开分为私有仓库和公开仓库两种。目前最大的公开仓库是Docker Hub,存放了大量的镜像供用户下载。

Docker镜像

下面的命令几乎都需要root权限,所以建议加上sudo,或者直接先进入root用户再操作 1.获取镜像:docker获取镜像的路径是:先从本地获取,然后从默认的Docker Hub获取,也可以自己配置自定义的docker仓库。         获取镜像的命令:docker pull name[:tag] 其中docker pull是固定的命令,name是你要获取的镜像的名字,:tag可选,表示镜像的标签,不使用tag的话,会自动选择latest标签的镜像(镜像有多个版本,latest tag 表示最新版本)         比如:# docker pull ubuntu    (需要root权限) ,或者docker pull registry.hub.docker.com/ubuntu:latest效果是一样的,只不过后面的给定了仓库名路径(URL)和标签latest。 2.查看镜像信息:docker images命令        # docker images命令执行后,会有一个表格,表格的内容是:REPOSITORY,TAG,IMAGE ID, CREATED  VCRTUAL SIZE,顾名思义,分别表示镜像来源的仓库,tag标签(版本号),id(唯一),创建时间以及虚拟大小(所占用的镜像空间)       你也可以使用docker tag oldrepository:tag   newrepository:tag来创建一个新的镜像,这个新创建的镜像和原来的镜像是同一个id,只不过repository和tag不同。        还可以使用docker inspect IMAGE_ID来查看镜像的详细信息,这个信息显示的格式为json 3.搜寻镜像:默认搜索远程仓库Docker Hub中的镜像 命令:docker  search name 支持的参数包括:--automated=false 仅显示自动创建的镜像;--no-trunc = false 输出信息不截断显示  -s, --start=0 指定仅显示评级为指定星级以上的镜像。当然,这些参数肯定是要放在name之前了。
4.删除镜像 删除镜像的命令是docker rmi(remove images),具体的命令格式为:docker rmi image [image...],其中image可以是标签或者id,可以同时删除多个 比如删除前面下载的ubuntu镜像,可以使用如下命令:docker rmi ubuntu  或者docker rmi  id 当当前镜像的tag多于一个的时候,也就是使用docker images查看镜像的时候,id相同的多于一个,那么执行rmi命令只会删除其中的一个镜像tag,如果只剩下一个了,那么删掉了就没了。 有的时候如果容器在运行中,这个时候删除是会失败的,有两种办法,使用-f参数强制删除或者先删除运行的容器,再删除镜像。 方法一:docker rmi -f ubuntu 方法二:docker rm images   docker rmi ubuntu 其他相关命令:查看本机上的运行的容器:docker ps -a  ;运行容器 docker run -【parameters】 imagename 5.创建镜像 可以基于已有的镜像或者容器来创建新的镜像,类似于复制操作(和tag的区别是,tag的出来的镜像id相同,这个的id不同) 命令:docker commit 【options】 id name   其中,options有三个,分别是-a 作者author   -m  信息message,-p 表示提交时暂停容器运行。  id表示要复制的那个镜像的id,name表示新镜像的名字。 例子:docker commit  -a  "yourname" -m " a new docker image" 91sa212zg12fa13 test 运行后得到一个id不同的,名字为test的镜像 也可以基于本地模板导入,这个不再详说。 6.存储和载入镜像 存储:docker save -o name.tar imagename:tag,tag可以省略 载入:docker load --input name.tar 7.上传镜像 docker push命令可以上传到镜像操作,默认的是Docker Hub官方仓库(需要登录) 上传命令:docker push name:tag,tag可以省略

容器

1.创建容器 命令:docker create -【options】 image:tag 创建成功会返回新建容器的id,可以使用前面提到过的docker ps -a查看创建的容器。现在创建的容器是停止状态的,需要使用新的命令启动容器 命令:docker start docker_id 命令:docker run -[options] image:tag instructions 比如用一个命令输出hellowrold : docker run ubuntu /bin/echo 'hello world' 利用docker run创建并启动容器时,Docker在后台运行时的标准操作包括:
  • 检查本地是否存在指定镜像,不存在就在共有仓库下载
  • 利用镜像创建一个容器,然后启动(create + start)
  • 分配一个文件系统,并在只读的镜像层外面挂一层可读写曾
  • 从宿主主机配置的网桥接口中桥接一个虚拟接口到容器中去
  • 从地址池配置一个ip地址给容器
  • 执行用户指定的应用程序
  • 执行完毕后容器被终止
前面的ubuntu镜像大小大概只有100多兆不到200兆的样子,我们运行起来就可以和它交互了,看下下面的命令: docker run -ti ubuntu 其中-t表示让Docker分配一个伪终端并绑定到容器的标准输入上,-i让标准输入打开,然后就可以运行一个简单的伪终端和ubuntu容器交互了。基本的命令都有。可以输入ctrl+d或者输入exit来退出容器 2.守护态运行 如果加上-d参数,那么容器将会以守护态来运行。比如下面的命令: docker run -d ubuntu /bin/sh -c "while true; do echo hello world; sleep 1;done" 如果要查看容器的输出信息,可以使用docker logs id命令 3.启动和终止容器 使用ctrl+d或者exit命令来退出终端时,容器也会终止。另外,还可以使用docker stop id来终止一个容器 终止后怎么启动呢?docker start id来启动,另外,docker restart命令会将一个运行态的容器终止,并重新启动 4.进入容器 使用-d参数后,容器启动后会进入后台,用户无法看到容器中的消息,这个时候就需要进入容器的操作了,有多重方法,包括docker attach命令,docker exec命令,已经nsenter工具等
  • docker attach命令
# docker run -idt ubuntu # docker ps     //查看后台运行的命令 # docker attach name  //只能是名字,前面我们用ps命令查看过了 但是attach命令有一个缺点,你如果多终端同时attach同一个容器的时候,所有窗口会同步显示,当某个窗口因命令阻塞的时候,其他窗口就没办法操作了。
  • docker exec命令
这个命令和run命令非常像,只不过把run改成了exec,而且exec只能由两个参数,第一个参数是容器的id,第二个参数是针对容器的命令 比如: docker exec -ti 97e3 /bin/bash
  • nsenter工具 略
4.删除容器 docker rm删除处于终止状态的容器,命令格式为:docker rm 【options】 container 【container】... options可以是下列的三个中的若干个: -f,--force=false:强制删除一个运行中的容器 -l,--link=false:删除容器的连接,但保留容器 -v,--volumes=false:删除容器挂载的数据卷 5.导入和导出容器 导出容器:docker export 【id】> [name.tar] 将容器保存成对应的tar文件 导入容器:docker import 【options】 【name.tar】 【repository:【TAG】】  将name.tar导入镜像到repository,tag为TAG。options有以下: -c :应用docker 指令创建镜像; -m :提交时的说明文字;
例如:docker export ce55ad ubuntu.tar docker import ubuntu.tar myubuntu:ubuntu

仓库(Repository)

仓库是集中存放镜像的地方,注册服务器(Registry)是存放仓库的具体服务器,一个服务器上可以有多个仓库,每个仓库下面可以有多个镜像。比如dl.dockerpool.com/ubuntu,dl.dockerpool.com是注册服务器地址,ubuntu是仓库名,这个仓库里面只有一个镜像。仓库又可以分为共有仓库和私有仓库 1.Docker Hub 官方仓库,包含一万多个镜像,大部分可以直接下载。 官方仓库的地址是hub.docker.com ,我们可以在浏览器打开,然后直接申请一个账号。申请完毕之后,只需要在控制台输入docker login,根据提示来输入用户名和密码以及邮箱来登录。如下图所示 接下来你就可以对你自己账户内的镜像进行操作了,比如push一个镜像到自己的仓库,这个push操作可能会遇到各种问题,一般都是网络问题,我遇到的问题如下,我push了三次才成功。 push的过程在最开始已经说了,我们来看我做的整个过程: 1、登录hub, 2.、找到本地镜像id 3、我们看图,如何修改tag。解释下,修改repository和tag的原因是,你不能将images上传到docker hub的公有root目录,只能上传到你自己的namespace,也就是你在申请账号时的用户名。比如这里我就修改成了njufxd12/mynginx:latest,njufxd12就是我的docker hub用户名,mynginx是我对nginx这个镜像新起的名字,tag我设置为latest。注意看,nginx和njufxd12/mynginx的image id是一样的。 4.push操作,可能会出现连接问题,多push几次就好了。 第一次push,出现因为等待连接,而取消掉请求 第二次push 出现i/o 超时 第三次push 成功 2.创建私有仓库
1)sudo docker run -d -p 5000:5000 registry //自动下载并启动一个registry容器,这个容器可以创建本地的私有仓库 当然也可以设置上传镜像的目录  sudo docker run -d -p 5000:5000 -v /opt/data/registry:/tmp/registry registry 其中5000:5000表示所有ip地址的5000端口上传都会上传到指定仓库。 2)改名 sudo docker tag id 192.168.1.1:5000/test 3)  sudo docker push 192.168.1.1:5000/test。 如果上传失败,建议关闭防火墙,按照这个链接的操作来http://www.2cto.com/net/201612/574844.html

docker技术入门与实战-镜像容器仓库

1.如果出现CannotconnecttotheDockerdaemon.Isthedockerdaemonrunningonthishost?解决办法在控制台输入:>$servicedockerstart即可2.hub.docker.com创建了自己的账号,如何push和pullstep1——找到本地镜像的ID:dockerimagesstep2——登陆Hub:docker... 查看详情

18.docker技术入门与实战---配置私有仓库

第18章 配置私有仓库18.1 安装DockerRegistry dockerrun-d-p5000:5000--restart=always--nameregistryregistry18.2 配置TLS证书18.3 管理访问权限18.4 配置Registry18.5 批量管理镜像18.6 使用通知系统      查看详情

16.docker技术入门与实战---容器实战思考

第16章 容器实战思考16.1 Docker为什么会成功16.2 研发人员该如何看待容器16.3 容器化开发模式16.4 容器与生产环境         查看详情

16.docker技术入门与实战---容器实战思考

第16章 容器实战思考16.1 Docker为什么会成功16.2 研发人员该如何看待容器16.3 容器化开发模式16.4 容器与生产环境         查看详情

docker基础实战教程:入门(代码片段)

Docker基础实战教程:入门前言HelloDocker!Docker使用的基本过程Docker使用基本实例拉取镜像获取镜像dockerpull命令背后的工作dockerpull的两个基本实例设置镜像加速器导入导出容器dockerexport和dockersave的区别前言Docker是一个操作系统... 查看详情

docker入门

1Docker技术介绍DOCKER是一个基于LXC技术之上构建的container容器引擎,通过内核虚拟化技术(namespace及cgroups)来提供容器的资源隔离与安全保障,KVM是通过硬件实现的虚拟化技术,它是通过系统来实现资源隔离与安全保障,占用系... 查看详情

17.docker技术入门与实战---核心实现技术

第17章 核心实现技术17.1 基本架构 1.服务端 1.dockerd 2.docker-proxy 3.containerd 4.containerd-shim 2.客户端 3.镜像仓库17.2 命名空间 1.进程命名空间 2.IPC命名空间 同一个IPC命名空间内的进程可以彼此互相看见,允许进行交互;不同... 查看详情

17.docker技术入门与实战---核心实现技术

第17章 核心实现技术17.1 基本架构 1.服务端 1.dockerd 2.docker-proxy 3.containerd 4.containerd-shim 2.客户端 3.镜像仓库17.2 命名空间 1.进程命名空间 2.IPC命名空间 同一个IPC命名空间内的进程可以彼此互相看见,允许进行交互;不同... 查看详情

docker容器从入门到实战0826

##docker容器安装和配置####docker的git-hub网站(账号rshare,密rshare520):https://github.com/login#docker官网hub仓库(账号flyer520,密码rhsare520):https://hub.docker.com#docker官网文档和镜像:https://docs.docker.com/samples/centos/#doc 查看详情

linux之shell脚本实战批量上传docker镜像到华为云容器镜像仓库

【Linux之shell脚本实战】批量上传docker镜像到华为云容器镜像仓库一、脚本要求二、检查本地环境1.检查系统版本2.检查系统内核三、检查本地容器镜像四、shell注释模板配置1.配置~/.vimrc2.查看注释模板效果五、编辑images.sh脚本六... 查看详情

8.docker技术入门与实战---使用dockerfile创建镜像(代码片段)

第8章 使用Dockerfile创建镜像 Dockerfile是一个文本格式的配置文件,用户可以用Dockerfile来快速创建自定义的镜像。8.1 基本结构 Dockerfile由一行行命令语句组成,并且支持以#开头的注释行。 一般而言,Dockerfile主体内容分为4个部... 查看详情

docker容器从入门到实战0826(笔记整理)

##docker容器安装和配置####docker的git-hub网站(账号rshare,密rshare520):https://github.com/login#docker官网hub仓库(账号flyer520,密码rhsare520):https://hub.docker.com#docker官网文档和镜像:https://docs.docker.com/samples/centos/#doc 查看详情

docker新手入门(代码片段)

1、简介Docker是一个开源的应用容器引擎;是一个轻量级容器技术;Docker支持将软件编译成一个镜像;然后在镜像中各种软件做好配置,将镜像发布出去,其他使用者可以直接使用这个镜像;运行中的这个镜像称为容器,容器启... 查看详情

docker入门(代码片段)

Docker简介Docker是一种虚拟容器技术,是伴随PaaS(平台即服务)产生的,常用的虚拟化容器技术有两种:全虚拟化和操作系统虚拟化(OS)。VMvareworkstation是全虚拟化的实现,而Docker是基于操作系统虚拟化技术的一种。Docker与VMvare对比,... 查看详情

docker入门-对镜像的操作

Docker系列参考自书籍<Docker技术入门与实战>,本博客以笔记为主.如果转载请注明出处.-博客园:玲珑骰子安红豆 本章目录: 1.获取镜像 2.查看镜像信息 3.搜寻镜像 4.删除镜像 5.创建镜像 6.导出和载入镜像 ... 查看详情

10.docker技术入门与实战---为镜像添加ssh服务(代码片段)

第10章 为镜像添加SSH服务10.1 基于commit命令创建 dockercommitCONTAINER[REPOSITORY[:TAG]]//生成新镜像10.2 使用Dockerfile创建 1.创建工作目录 2.编写run.sh脚本和authorized_keys文件 3.编写Dockerfile 4.创建镜像 dockerbuild-tsshd:dockerfile.总结: 查看详情

第一天docker入门

【01入门】  docker最核心为三部分组成镜像,仓库和容器  镜像:一个只读的模板  仓库:代码仓库,镜像的集合  容器:镜像的实例化进程我们可以这样理解容器就是一个沙箱,docker利用容器运行和隔离应用,每个容... 查看详情

docker入门

一、Docker简介:Docker思想:集装箱、标准化(运输方式、存储方式API、接口)、隔离Docker解决问题:运行环境不一致Docker运行过程:去仓库把镜像拉倒本地,然后用一条命令把镜像运行起来变成容器! Build-构建镜像-集装箱-镜... 查看详情