centos7 安装docker

由于我本人已经用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/名称     命令来停止指定的程序即可。

你可能感兴趣的:(docker)