Docker前后端知识交流分享

CentOS 7.x 安装Docker

2018-08-19  本文已影响52人  AaronSimon

一、Docker概述

Docker是一个开源的容器引擎,它有助于更快的交付应用。Docker可将应用程序和基础设施层隔离,并且能将基础设施当作程序一样进行管理。使用Docker,可更快地打包,测试以及部署应用程序,并可以缩短从编写到部署运行代码的周期。下面是Docker的架构图:


Docker的架构图

图中包含以下组件:

二、安装Docker

Docker官方建议将Docker运行在linux操作系统上。Docker包含多种安装方式,例如Yum安装、RPM安装、Shell安装等。下面介绍以Yum在CentOS7.x上进行安装。可以参考官方文档:https://docs.docker.com/v1.13/engine/installation/linux/centos/

  1. 安装yun-utils,这样就能使用yun-config-manager工具设置Yum源。
$ sudo yum install -y yum-utils

如果出现以下信息:

已加载插件:fastestmirror, langpacks
/var/run/yum.pid 已被锁定,PID 为 3012 的另一个程序正在运行。
Another app is currently holding the yum lock; waiting for it to exit...
  另一个应用程序是:PackageKit
    内存:135 M RSS (1.4 GB VSZ)
    已启动: Sun Aug 19 10:35:25 2018 - 04:56之前
    状态  :睡眠中,进程ID:3012

需要执行

$ rm -rf /var/run/yum.pid
$ sudo yum install -y yum yum-utils
  1. 添加Docker的Yum源
 $ sudo yum-config-manager --add-repo https://docs.docker.com/v1.13/engine/installation/linux/repo_files/centos/docker.repo   
  1. 更新Yum索引
$ sudo yum makecache fast
  1. 添加Yum仓库
$ tee /etc/yum.repos.d/docker.repo <<-'EOF'
[dockerrepo]
name=Docker Repository
baseurl=https://yum.dockerproject.org/repo/main/centos/$releasever/
enabled=1
gpgcheck=1
gpgkey=https://yum.dockerproject.org/gpg
EOF
  1. 安装最新版本Docker
$ sudo yum -y install docker-engine

在生产系统可能需要添加指定版本的Docker,可以使用如下命令:

$ yum list docker-engine.x86_64  --showduplicates |sort -r
已加载插件:fastestmirror, langpacks
已安装的软件包
可安装的软件包
 * updates: ftp.sjtu.edu.cn
Loading mirror speeds from cached hostfile
 * extras: mirrors.shu.edu.cn
docker-engine.x86_64             1.9.1-1.el7.centos                  dockerrepo
docker-engine.x86_64             1.9.0-1.el7.centos                  dockerrepo
docker-engine.x86_64             1.8.3-1.el7.centos                  dockerrepo
docker-engine.x86_64             1.8.2-1.el7.centos                  dockerrepo
docker-engine.x86_64             1.8.1-1.el7.centos                  dockerrepo
docker-engine.x86_64             1.8.0-1.el7.centos                  dockerrepo
docker-engine.x86_64             1.7.1-1.el7.centos                  dockerrepo
docker-engine.x86_64             17.05.0.ce-1.el7.centos             dockerrepo
docker-engine.x86_64             17.05.0.ce-1.el7.centos             @dockerrepo
docker-engine.x86_64             17.04.0.ce-1.el7.centos             dockerrepo
docker-engine.x86_64             17.03.1.ce-1.el7.centos             dockerrepo
docker-engine.x86_64             17.03.0.ce-1.el7.centos             dockerrepo
docker-engine.x86_64             1.7.0-1.el7.centos                  dockerrepo
docker-engine.x86_64             1.13.1-1.el7.centos                 dockerrepo
docker-engine.x86_64             1.13.0-1.el7.centos                 dockerrepo
docker-engine.x86_64             1.12.6-1.el7.centos                 dockerrepo
docker-engine.x86_64             1.12.5-1.el7.centos                 dockerrepo
docker-engine.x86_64             1.12.4-1.el7.centos                 dockerrepo
docker-engine.x86_64             1.12.3-1.el7.centos                 dockerrepo
docker-engine.x86_64             1.12.2-1.el7.centos                 dockerrepo
docker-engine.x86_64             1.12.1-1.el7.centos                 dockerrepo
docker-engine.x86_64             1.12.0-1.el7.centos                 dockerrepo
docker-engine.x86_64             1.11.2-1.el7.centos                 dockerrepo
docker-engine.x86_64             1.11.1-1.el7.centos                 dockerrepo
docker-engine.x86_64             1.11.0-1.el7.centos                 dockerrepo
docker-engine.x86_64             1.10.3-1.el7.centos                 dockerrepo
docker-engine.x86_64             1.10.2-1.el7.centos                 dockerrepo
docker-engine.x86_64             1.10.1-1.el7.centos                 dockerrepo
docker-engine.x86_64             1.10.0-1.el7.centos                 dockerrepo

第一列是软件包名称,第二列是版本字符串,第三列是仓库名称。可以使用以下命令安装指定版本的Docker

$ sudo yum -y install docker-engine-<VERSION_STRING>

例如:

$ sudo yum -y install docker-engine-1.10.0
  1. 启动Docker
$ sudo systemctl start docker
  1. 验证Docker是否安装正确
$ sudo docker run hello-world

如果看到如下结结果,则说明安装正确。

Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
9db2ca6ccae0: Pull complete
Digest: sha256:4b8ff392a12ed9ea17784bd3c9a8b1fa3299cac44aca35a85c90c5e3c7afacdc
Status: Downloaded newer image for hello-world:latest

Hello from Docker!
This message shows that your installation appears to be working correctly.

To generate this message, Docker took the following steps:
 1. The Docker client contacted the Docker daemon.
 2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
    (amd64)
 3. The Docker daemon created a new container from that image which runs the
    executable that produces the output you are currently reading.
 4. The Docker daemon streamed that output to the Docker client, which sent it
    to your terminal.

To try something more ambitious, you can run an Ubuntu container with:
 $ docker run -it ubuntu bash

Share images, automate workflows, and more with a free Docker ID:
 https://hub.docker.com/

For more examples and ideas, visit:
 https://docs.docker.com/engine/userguide/

  1. 查看Docker的版本
$ docker version

三、配置镜像加速器

国内访问Docker Hub的速度很不稳定,有时甚至连接不上,可以配置镜像加速器解决这个问题。国内很多云服务商提供镜像加速的服务,我们使用阿里云加速器https://cr.console.aliyun.com/cn-hangzhou/mirrors
执行以下命令:

$ sudo mkdir -p /etc/docker
$ sudo tee /etc/docker/daemon.json <<-'EOF'
 {
   "registry-mirrors": ["https://pzadm966.mirror.aliyuncs.com"]
 }
 EOF
$ sudo systemctl daemon-reload
$ sudo systemctl restart docker

四、Docker常用命令

Docker有很多的命令,这些命令有足浴控制Docker的行为。

4.1 Docker镜像常用命令

下面是Docker镜像常用的命令

  1. 搜索镜像

可以在Docker Hub主页上搜索镜像,可以通过docker search命令搜索:

$ docker search [OPTIONS] TERM

OPTIONS说明:

$ docker search -s 10 java
Flag --stars has been deprecated, use --filter=stars=3 instead
NAME                                         DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
node                                         Node.js is a JavaScript-based platform for...   6014      [OK]
tomcat                                       Apache Tomcat is an open source implementa...   1985      [OK]
java                                         Java is a concurrent, class-based, and obj...   1809      [OK]
openjdk                                      OpenJDK is an open-source implementation o...   1138      [OK]
ghost                                        Ghost is a free and open source blogging p...   807       [OK]
anapsix/alpine-java                          Oracle Java 8 (and 7) with GLIBC 2.23 over...   341                  [OK]
jetty                                        Jetty provides a Web server and javax.serv...   263       [OK]
couchdb                                      CouchDB is a database that uses JSON for d...   221       [OK]
tomee                                        Apache TomEE is an all-Apache Java EE cert...   55        [OK]
ibmjava                                      Official IBM® SDK, Java™ Technology Editio...   52        [OK]
groovy                                       Apache Groovy is a multi-faceted language ...   50        [OK]
lwieske/java-8                               Oracle Java 8 Container - Full + Slim - Ba...   40                   [OK]
cloudbees/jnlp-slave-with-java-build-tools   Extends cloudbees/java-build-tools docker ...   19                   [OK]
zabbix/zabbix-java-gateway                   Zabbix Java Gateway                             13                   [OK]
davidcaste/alpine-java-unlimited-jce         Oracle Java 8 (and 7) with GLIBC 2.21 over...   11                   [OK]
frekele/java                                 docker run --rm --name java frekele/java        10                   [OK]

该表格包含五列,含义如下:

  1. 下载镜像
$ docker pull [OPTIONS] NAME[:TAG]

OPTIONS说明:

例如:

$ docker pull java   #从Docker Hub中下载最新版本的Java镜像
$ docker pull reg.itmuch.com/java:8    #从指定Registry中下载标签为8的Java镜像
  1. 列出镜像
$ docker images [OPTIONS] [REPOSITORY[:TAG]

OPTIONS说明:

例如:

[root@simon01 yum.repos.d]# docker images java
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
java                latest              d23bdf5b1b1b        19 months ago       643MB
  1. 删除本地镜像
$ docker rmi [OPTIONS] IMAGE [IMAGE...]

OPTIONS说明:

4.2 Docker容器常用命令

下面是Docker容器常用的命令

  1. 新建并启动容器
$ docker run [OPTIONS] IMAGE [COMMAND] [ARG...]

OPTIONS说明(常用):

例如:

$ docker run -d -p 91:80 nginx
  1. 列出容器
$ docker ps [OPTIONS]

OPTIONS说明(常用):

  1. 停止容器
$ docker stop CONTAINER_ID/CONTAIN_NAME
  1. 强制停止容器
$ docker kill CONTAINER_ID/CONTAIN_NAME
  1. 启动已停止容器
$ docker start CONTAINER_ID/CONTAIN_NAME
  1. 重启容器
$ docker restart CONTAINER_ID/CONTAIN_NAME
  1. 进入容器
$ docker exec -it CONTAINER_ID bash
  1. 删除容器
$ docker rm [OPTIONS] CONTAINER [CONTAINER...]

OPTIONS说明(常用):

更多命令见Docker的官方文档:https://docs.docker.com/edge/engine/reference/commandline/

上一篇下一篇

猜你喜欢

热点阅读