由于我本人已经用VMware搭建好centos6.7环境,下面只是记录以下我的操作过程:(centos7下适用的命令不带删除线)
1、安装docker
[root@localhost ~]# yum install -y epel-release
[root@localhost ~]# yum install -y docker-io
2、启动docker
[root@centos01 ~]# service docker start
Starting cgconfig service: [确定]
Starting docker: [确定]
3、检查docker是否启动完毕
[root@centos01 ~]# ps aux |grep docker
root 1809 0.7 0.6 287664 12236 pts/0 Sl 17:34 0:00 /usr/bin/docker -d
root 1927 1.0 0.0 103316 896 pts/0 S+ 17:36 0:00 grep docker
可以看到docker已经安装完毕
以上参考文章:在 CentOS 6.7 中安装 Docker
===============分割线======================
由于是第一次安装docker,对于docker的操作还不了解,下面了解一些常用的命令
1、docker ps #查看当前docker是否有程序在运行。这里由于刚启动没有程序运行过所以没有显示,有程序在运行的话会分配一个CONTAINER_ID也就是容器id
[root@centos01 ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
2、docker logs 容器id/容器名称 #查看指定容器的标准输出流(类似java中System.out.println()),注意:容器id为必填参数!
3、docker stop 容器id/容器名称 #关闭指定容器。 可以通过容器id或者容器名称进行关闭。
4、docker version #查看docker的版本信息,我安装的时候是docoker 1.7.1
5、docker info #
5、docker run centos /bin/echo "hello world!" #
docker: Docker 的二进制执行文件。
run:与前面的 docker 组合来运行一个容器。
centos指定要运行的镜像,Docker首先从本地主机上查找镜像是否存在,如果不存在,Docker 就会从镜像仓库 Docker Hub 下载公共镜像。
/bin/echo "Hello world": 在启动的容器里执行的命令
看到网上这样子可以启动一个helloworld,但是我启动后却报错
[root@centos01 ~]# docker run centos /bin/echo 'hello word!'
Unable to find image 'centos:latest' locally
不急,下面我们来找找原因:这里找不到镜像。换一个镜像启动一下(引发思考:docker创建的程序必须在远端有镜像才可以?本地镜像要如何创建?以镜像为单位加载到docker中进行运行)
[root@centos01 ~]# docker run centos /bin/echo 'Hello World'
Unable to find image 'ubuntu:14.04' locally
发现依旧是报同样的错误Unable to find image 'centos' locally
这个时候我开始怀疑是不是网络有问题了。上网查了一下,确实有反应说dockerHub被墙和速度太慢的情况。
centos 里面也ping不通https://hub.docker.com/
这时候找到国内的docker镜像加速器 , 注册个账号后会告知你加速配置方法。运行后却发现要升级到docker 1.9。
因此只能在centos7下进行安装docker了
开始升级步骤:参考docker 升级到最新版
1、停止docker
service docker stop
2、获取已安装的docker列表
[root@centos01 ~]# yum list installed | grep docker
docker-io.x86_64 1.7.1-2.el6 @epel
3、卸载当前的docker
[root@centos01 ~]# yum remove docker-io-1.7.1-2.el6.x86_64
4、安装wget : yum -y install wget
下载和安装EPEL源:
wget http://download.fedoraproject.org/pub/epel/6/i386/epel-release-6-8.noarch.rpm
rpm -ivh epel-release-6-8.noarch.rpm
5、再查了一下。发现说centos6.7的docker最新版就是1.7.1
那么就只能考虑通过代理解决dockerHub的访问问题了
================分割线===================
下面是在centos7下面安装docker:参考 使用yum安装docker
1、安装和启动
[root@localhost ~]# yum install -y epel-release
[root@localhost ~]# yum install -y docker-io
[root@centos01 ~]# service docker start
2、配置DaoCloud上自己账号的docker加速器(我的就不写上来啦),参考:配置docker加速器
然后重启docker :sudo systemctl restart docker
结果发现docker重启失败:
[root@centos71 ~]# systemctl restart docker
Job for docker.service failed because the control process exited with error code. See "systemctl status docker.service" and "journalctl -xe" for details.
看了下,是/etc/docker/daemon.json 这个文件的json字符串末尾多了个逗号,把逗号去掉再重启就可以了。
3、运行hello world : docker run centos /bin/echo 'hello word!' ,运行成功
[root@centos71 ~]# docker run centos /bin/echo 'hello word!'
Unable to find image 'centos:latest' locally
Trying to pull repository docker.io/library/centos ...
latest: Pulling from docker.io/library/centos
5e35d10a3eba: Pull complete
Digest: sha256:dcbc4e5e7052ea2306eed59563da1fec09196f2ecacbe042acbdcd2b44b05270
Status: Downloaded newer image for docker.io/centos:latest
hello word!
4、还有后台启动docker : docker run -d centos /bin/sh -c "while true; do echo hello world; sleep 1; done"
因为上面的话执行完程序就结束了,这里使用了死循环打印输出流,方便我们看到容器里面程序运行的情况。
这时候用docker ps 可以看到刚刚的程序在运行。容器的id和名称都是自动分配的。
[root@centos71 ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
862d4cc9443f centos "/bin/sh -c 'while..." About a minute ago Up About a minute dreamy_galileo
docker logs id/名称 可以查看容器的标准输出。
5、然后使用docker stop id/名称 命令来停止指定的程序即可。