小白的docker初学笔记

简介:Docker是一个开源的引擎,可以轻松的为任何应用创建一个轻量级的、可移植的、自给自足的容器。开发者在笔记本上编译测试通过的容器可以批量地在生产环境中部署,包括VMs(虚拟机)、bare metal、OpenStack 集群和其他的基础应用平台。

Docker是一个开源的引擎,可以轻松的为任何应用创建一个轻量级的、可移植的、自给自足的容器。

开发者在笔记本上编译测试通过的容器可以批量地在生产环境中部署,包括VMs(虚拟机)、bare metal、OpenStack 集群和其他的基础应用平台。

Docker通常用于如下场景:

  • web应用的自动化打包和发布;
  • 自动化测试和持续集成、发布;
  • 在服务型环境中部署和调整数据库或其他的后台应用;
  • 从头编译或者扩展现有的OpenShift或Cloud Foundry平台来搭建自己的PaaS环境。

Docker系统有两个程序:docker服务端和docker客户端。其中docker服务端是一个服务进程,管理着所有的容器。docker客户端则扮演着docker服务端的远程控制器,可以用来控制docker的服务端进程。大部分情况下,docker服务端和客户端运行在一台机器上。

####查看docker版本的命令
$docker version

####搜索可用的docker镜像
使用docker最简单的方式莫过于从现有的容器镜像开始。Docker官方网站专门有一个页面来存储所有可用的镜像,网址是:index.docker.io。你可以通过浏览这个网页来查找你想要使用的镜像,或者使用命令行的工具来检索。

命令行的格式为:docker search 镜像名字
小白的docker初学笔记_第1张图片

####下载镜像
使用docker pull命令即可。

小白的docker初学笔记_第2张图片

####在docker容器中运行hello world!

docker容器可以理解为在沙盒中运行的进程。这个沙盒包含了该进程运行所必须的资源,包括文件系统、系统类库、shell 环境等等。但这个沙盒默认是不会运行任何程序的。你需要在沙盒中运行一个进程来启动某一个容器。这个进程是该容器的唯一进程,所以当该进程结束的时候,容器也会完全的停止。

docker run命令有两个参数,一个是镜像名,一个是要在镜像中运行的命令。

这里写图片描述

####入门的便捷操作
docker images :列出本地已下载的镜像

[root@bnpanda ~]#docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
docker.io/centos    latest              8140d0c64310        3 weeks ago         192.5 MB
[root@bnpanda ~]#

对上述的输出信息做个解释:
REPOSITORY:仓库,表示该镜像来源于哪个docker仓库(存放很多可用的镜像,里面的镜像又是按类别划分的,比如Ubuntu类别的,centos类别的。)
TAG:镜像的标签信息,用来标识来自同一个仓库的不同镜像。 IMAGE ID:很重要,镜像的ID号,唯一标识
CREATED:该镜像的创建时间 SIE:该镜像的大小

####自定义镜像的标签名
[root@bnpanda ~]#docker tag docker.io/centos:latest centos:first
小白的docker初学笔记_第3张图片

####在容器中安装新的程序

1、在当前本机命令行界面下输入如下指令:
小白的docker初学笔记_第4张图片

2、直接在指定容器上启动一个bash环境。
注:下述命令:-t代表一个伪终端或者终端; -i:允许对容器内的标准输入进行交互。
小白的docker初学笔记_第5张图片

####保存对容器的修改
当你对某一个容器做了修改之后(通过在容器中运行某一个命令),可以把对容器的修改保存下来,这样下次可以从保存后的最新状态运行该容器。docker中保存状态的过程称之为committing,它保存的新旧状态之间的区别,从而产生一个新的版本。

  1. 运行docker commit,可以查看该命令的参数列表。
  2. 你需要指定要提交保存容器的ID。(译者按:通过docker ps -l 命令获得)
  3. 无需拷贝完整的id,通常来讲最开始的三至四个字母即可区分。

执行完docker commit命令之后,会返回新版本镜像的id号。(因为我是在容器上直接开启了一个bash,然后在里面安装wget的缘故)
小白的docker初学笔记_第6张图片

####运行新的镜像
ok,到现在为止,你已经建立了一个完整的、自成体系的docker环境,并且安装了wget命令在里面。它可以在任何支持docker环境的系统中运行啦!
小白的docker初学笔记_第7张图片

####检查运行中的镜像
现在你已经运行了一个docker容器,让我们来看下正在运行的容器。
使用docker ps命令可以查看所有正在运行中的容器列表,使用docker inspect命令我们可以查看更详细的关于某一个容器的信息。

先持续运行一个容器,启动bash环境:
这里写图片描述

利用docker ps命令查看正在运行的容器列表
这里写图片描述

然后docker inspect elb3(通过docker ps查看容器列表,container id为容器id,指定该容器id的前几位字符即可查看容器信息)查看指定容器的信息
小白的docker初学笔记_第8张图片

####发布自己的镜像
现在我们已经验证了新镜像可以正常工作,下一步我们可以将其发布到官方的索引网站。还记得我们最开始下载的learn/tutorial镜像吧,我们也可以把我们自己编译的镜像发布到索引页面,一方面可以自己重用,另一方面也可以分享给其他人使用。

注意,需要将自定义镜像上传到官方的dockerhub站点,需要提前注册该站点账号

1、观察本地镜像信息:

[root@bnpanda packages]#docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
leran/wget          latest              551cf3fe2770        About an hour ago   286.1 MB

2、像上面的REPOSITORY的命名,在push的时候会造成误判,需要先修改标签名

[root@bnpanda packages]#docker tag  leran/wget switchchow
[root@bnpanda packages]#
[root@bnpanda packages]#docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
switchchow          latest              551cf3fe2770        About an hour ago   286.1 MB
leran/wget          latest              551cf3fe2770        About an hour ago   286.1 MB

3、再次修改标签名

[root@bnpanda packages]#docker tag switchchow switchchow(这个switchchow是你在dockerHub站点上的注册名)/switchchow
(当然)2、3可以合并为一步啦  docker tag  leran/wget switchchow/switchchow

4、push操作:将镜像上传到仓库

[root@bnpanda packages]#docker push switchchow/switchchow
The push refers to a repository [docker.io/switchchow/switchchow]
d7f0fa303f5a: Pushed 
b51149973e6a: Pushed 
latest: digest: sha256:dc6d1314f08cf3d1349aa42989bd8483278836823dba75131b71b94ede9bea8e size: 741

这里需要及其注意:
a、上传docker image前需要登录docker login docker.io(我的仓库在这里)
b、docker tag重命名时一定要注意docker tag xx/xx(REPOSITORY:这个是 docker.io账号/自己的仓库名):yy(TAG) xxx/xxx:yyy,一定要按标准的格式去操作。

5、查询自己上传的镜像:

[root@bnpanda packages]#docker search switchchow/switchchow
INDEX       NAME                              DESCRIPTION   STARS     OFFICIAL   AUTOMATED
docker.io   docker.io/switchchow/switchchow    

你可能感兴趣的:(linux学习)