Docker 入门

  这些天了解了现在流行的容器技术Docker,主要是参考这个系列的博客 http://www.cnblogs.com/CloudMan6/tag/Docker/ 还有Docker中文网 http://www.docker.org.cn 

  本篇博客主要讲一些命令的操作,至于原理性的东西就不多讲了,这些在网上都可以找到,本篇博客主要是记录一些命令的操作,用于以后用到可以方便的查到。命令是用到的时候再查的,不过原理性的概念还是要了解的,docker这个东西使用的时候不难,没有多少要学的。重要是了解Docker概念后,根据实际项目在进行配置即可。现在了解只是为了以后快速使用而已。

1. 安装

  系统使用的是Debian 8.8,先配置Dockerapt源。

apt-get install apt-transport-https ca-certificates curl software-properties-common

  增加Docker 官方的GPG

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

  注意后面的 -  号, 这里使用ubuntugpg

  将Docker的源添加到 /etc/apt/sources.list

add-apt-repository “deb [arch=amd64] https://download.docker.com/linux/debian $(lsb_release -cs) stable”

  使用Aliyun源

https://yq.aliyun.com/articles/110806?spm=5176.8351553.0.0.1cbe1991CFEvea
curl -fsSL http://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add -
sudo add-apt-repository "deb [arch=amd64] http://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable"

  安装Docker

apt-get update
apt-get install docker-ce

  查看是否安装成功

service docker status
docker version

 

   

2. 加速

  由于Docker Hub的服务器是在国外,下载镜像(image)时会比较慢,有时候网络断开还要重新下载,好在Docker提供私服功能,国内就有好多家公司提供了这样的服务。这里使用 daocloud.io 提供的服务。首先在daocloud.io免费注册一个用户。然后在用户管理界面哪里有个加速器( https://www.daocloud.io/mirror#accelerator-doc )

  

  运行命令后,重启Docker即可。

curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s http://71***3.m.daocloud.io 
service docker restart

3. 运行第一个容器Docker

docker run -d -p 80:80 httpd #运行后自动从服务器上下载image,然后以后台方式运行容器。
docker images  #进行查看
docker ps #查看运行情况

  然后访问本地的Web服务器

   

  Docker 架构图

4. 基本操作

docker run -it centos  #下载并以命令行运行centos

  进入后,可以在里面进行操作,基本的操作跟在一台Linux主机上操作是一样的,没有什么区别。如果在容器(Container)里面退出的话,对应的容器也就关闭,假设进入后,还没有退出来。新建一个控制台,然后在里面输入docker ps 就可以查看当前真正运行的容器实例。在容器里面的所有操作,都是暂时的,如果操作后,退出容器,那么是不进行保存的。如果想保存,那么要在另外的控制台用命令保存当前运行的容器,生成一个镜像(image).至于原理性的东西,请参考具体的文章。

  在新的控制台中输入 docker ps 查看当前运行的容器,记住运行的Container ID,然后通过下面命令对当前运行的容器生成一个快照镜像(Image)

docker commit 17022396134b centos-new  # docker commit ContainerID new-ContainerName

  这样就生成一个镜像了。由于容器是分层的,这里保存会很快。然后通过 docker images 可以查看刚才保存的镜像。

5. 通过Dockerfile构建镜像

  通过Dockerfile方式构建镜像,底层通过解析Dockerfile文件一条一条命令进行docker commit 一层一层构建新镜像。Docker的分层架构,可以具体去了解一下,设计的很好。

  创建一个简单的Dockerfile文件

  然后在Dockerfile 文件中输入以下内容

FROM ubuntu
RUN sed -i ‘s/archive.ubuntu/mirrors.aliyun/g’ /etc/apt/sources.list #这里用阿里云(网易163)的开源镜像服务器,会快一点。
RUN apt-get update && apt-get install -y vim
COPY testfile /

  命令行输入命令

docker build -t ubuntu-with-vi-dockerfile .

  注意后面的点. 表示从当前目录查找Dockerfile文本文件,然后镜像构建。

  然后可以通过 docker images 查看,可以通过 docker history ubuntu-with-vi-dockerfile 查看当前镜像的历史修改信息。

  关于Dockerfile语法还比较多,还有很多高级操作,不过我觉得,这个在实际项目中有需要再去查,然后使用即可,这里就不展开说明。

6. 建立私服

  这个还是蛮重要的一部分,大部分实际项目都会通过这种方式进行内网部署。虽然现在很多云服务,大部分也通过这种方式进行部署,但是通过网络镜像云部署的,对于个人项目和晓欣项目比较多。稍微复杂一点的,一般公司都会自己组建服务器,即使使用云主机,也是会部署在云主机内网里,不大会将镜像放到外网。

  下面就介绍如何搭建私服。

  首先下载Docker Hub上官方镜像registry,这个也是Docker image ,是官方提供的。

docker run -d -p 5000:5000 -v /myregistry:/var/lib/registry registry:latest

  由于使用-d参数,所以是后台运行。

docker ps

  

  可以看到私服就这样启动了,是不是很容易,这就是Docker容器化的优势。

  我们对刚才下载的httpd 复制一份,命名一个新tag

docker tag httpd:latest localhost-httpd #错误,如果要保存在本地,需要填写对于的域名
docker tag httpd:latest localhost:5000/myuser/httpd

  

   这样就复制了一个,可以通过push 命令推送到本地仓库。

  如果省略域名就会默认推送的docker.io上了。(docker push localhost-httpd:latest)

docker push localhost:5000/myuser/httpd

   

  这样就表示推送到本地仓库了。可以在本地的 /myregistry 查看

   

  新开了一个虚拟机,然后通过远程下载对应的镜像。

  

  但是发现好像不能用http,只能用https,我们需要修改一些配置。现在的最新版本修改 /etc/docker/daemon.json 这个配置文件.打开后可以看到里面有我们之前写入的daocloud.io这个加速用的网址。我们在其后面加上如下配置:

  { “insecure-registries” : [“192.168.56.150”] } 服务器端和客户端都要进行配置。配置后如下显示

   

  然后 service docker restart # 重启Docker 要注意看registry 是否还启动着,如果没有,要重新启动。因为重启Docker Dockerstop 正在运行的容器,可以试着docker start ID

  

7. 多说两句

  其他高级使用,如使用Docker 自带的对硬件的限制功能。使用Docker-Compose来管理Docker集群等高级功能。

  参加工作后,现在没有很多连续的时间,很难像以前那样做一个系列的博客文章。只能利用有空的时间,看一些比较前沿的计算,然后简单的了解一下而已,并不能很好的深入,现在的想法是能学点就多学点,多了解一些,等实际工作中有机会用到的话,再进行深入理解。平时没事,就看看,了解了解。

 

参考资料:

http://www.docker.org.cn/book/docker/what-is-docker-16.html 

http://www.cnblogs.com/CloudMan6/tag/Docker/ 

http://www.cnblogs.com/zuoxiaobing/p/6259029.html

http://blog.csdn.net/candcplusplus/article/details/53728507

本文地址: http://www.cnblogs.com/wunaozai/p/6936787.html

posted @ 2017-06-03 11:52  无脑仔的小明  阅读(1787)  评论(0编辑  收藏  举报