Docker系统有两个程序:docker服务端和docker客户端
Docker系统有两个程序:docker服务端和docker客户端。其中docker服务端是一个服务进程,管理着所有的容器。docker客户端则扮演着docker服务端的远程控制器,可以用来控制docker的服务端进程。大部分情况下,docker服务端和客户端运行在一台机器上,目前支持64位机器。
CentOS安装(需要管理员权限):
yum install docker
检查是否安装成功,程序员惯例,运行hello-world:
出现此提示,说明安装成功。
检查docker版本:
docker version
启动服务端:
service docker start
得到结果如下,docker服务端已开启
搜索可用镜像文件:
docker search xxxx (xxxx为要搜索的镜像名称)
以Ubuntu为例:
各个列的解释:NAME 镜像名称,DESCRIPTION 描述,STARS 标星次数,OFFICIAL 是否为官方发布,AUTOMATED 是否为个人发布
下载镜像文件到本地:
docker pull xxxx (xxxx为要下载的镜像名称,如果下载个人镜像,需要加上用户名,如:docker pull nuagebec/ubuntu)
这里以下载ubuntu为例:
docker pull ubuntu
在下载的ubuntu镜像中输出 “hello world”
docker run ubuntu echo “hello world”
说明下载的ubuntu镜像可以正常使用。
运行ping命令,提示ping命令在path路径中不存在,如图:
那么,怎么在这个镜像中安装程序呢,则需要使用如下命令,以安装ping命令为例:
直接提示Unable to local package ping,即软件包中不存在ping包,这时需要考虑是软件源的问题,需要对软件源进行更新。
如何更新软件源,我们知道ubuntu更新软件源命令为sudo apt-get update,那么如何更新ubuntu镜像的软件源呢?这时就需要我们进入ubuntu的bash来进行操作,命令如下:
docker run -it ubuntu bash
• -i: 以交互模式运行容器,通常与 -t 同时使用;
• -t: 为容器重新分配一个伪输入终端,通常与 -i 同时使用;
进入ubuntu镜像后,直接更新软件源,需要一段时间,如图所示:
更新之后,我们需要将这个docker进行保存,否则更新不会生效,安装软件之后同样需要进行提交保存,命令如下:
docker ps -l 列出最新的一个容器,即我们刚刚修改过的容器信息
然后根据容器id对更改的容器进行保存,命令为:
docker commit bc40a25111eb ubuntu_new
bc40a25111eb是容器id
ubuntu_new是新的容器名称
此时,我们再进行ping的安装,但却不存在ping命令的包,猜测是在ubuntu16.04中源进行了更改,根据提示,安装inetutils-ping包;
输入命令,等待完成安装,并重新commit镜像,使更改生效。
apt-get install -y xxx 中,-y是因为镜像无法提供交互式输入,所以直接在最开始输入
然后使用最新的镜像运行ping命令,查看结果,如图所示:
最后,我们可以将我们安装过ping命令的镜像进行发布至Docker Hub,需要注册账号和密码,过程如下:
使用docker login登录Docker Hub服务器,提示输入账号和密码,如下所示,表示登录成功:
查看目前下载的docker镜像,选择需要上传的镜像文件:
docker images
发布命令如下:
等待上传完成,然后就可以在Docker Hub上看到刚刚上传的镜像了,如下图:
删除镜像:
docker ps -a | grep “Exited” | awk ‘{print $1 }’|xargs docker stop
docker ps -a | grep “Exited” | awk ‘{print $1 }’|xargs docker rm
需要将运行过的exited状态的镜像id全部删除,然后再删除镜像。
docker rmi 90cd6a9da897