• Docker容器的使用


    1. Docker简介

    Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从Apache2.0协议开源。

    Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。

    容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app),更重要的是容器性能开销极低。

    Docker的主要应用场景:

    • Web 应用的自动化打包和发布。

    • 自动化测试和持续集成、发布。

    • 在服务型环境中部署和调整数据库或其他的后台应用。

    • 从头编译或者扩展现有的OpenShift或Cloud Foundry平台来搭建自己的PaaS环境。

    2. Docker的核心概念

    通过上面的架构图了解Docker的核心组件及作用:

    • docker主机(Host):安装了Docker程序的机器(Docker直接安装在操作系统之上);
    • docker客户端(Client):连接docker主机进行操作;
    • docker仓库(Registry):用来保存各种打包好的软件镜像;
    • docker镜像(Images):软件打包好的镜像;放在docker仓库中;
    • docker容器(Container):镜像启动后的实例称为一个容器;容器是独立运行的一个或一组应用。

    使用Docker的步骤:

    1. 安装Docker;
    2. 去Docker仓库找到这个软件对应的镜像;
    3. 使用Docker运行这个镜像,这个镜像就会生成一个Docker容器;
    4. 对容器的启动停止就是对软件的启动停止。

    3. 安装Docker

    采用CentOs7.4对Docker进行安装的操作,记录如下:

    首先进行内核版本检查,必须是3.10及以上

    之后进行Docker 的安装

    1. 安装docker
    yum install docker
    2. 输入y确认安装
    3. 启动docker
    [root@izbp1cq2wdg9kxunr0sz02z ~]# systemctl start docker
    [root@izbp1cq2wdg9kxunr0sz02z ~]# docker -v
    Docker version 1.13.1, build 8633870/1.13.1
    4. 设置开机启动docker
    [root@izbp1cq2wdg9kxunr0sz02z ~]# systemctl enable docker
    Created symlink from /etc/systemd/system/multi-user.target.wants/docker.service to /usr/lib/systemd/system/docker.service.
    5. 停止docker
    [root@izbp1cq2wdg9kxunr0sz02z ~]# systemctl stop docker

    4. Docker镜像操作

    当运行容器时,使用的镜像如果在本地中不存在,docker 就会自动从 docker 镜像仓库中下载,默认是从 Docker Hub 公共镜像源下载。

    4.1 镜像检索

    镜像检索实际上是从https://hub.docker.com/检索,根据列出的镜像名称来进行后续的拉取操作。也可以直接到该网站搜索相关镜像直接拉取。

    [root@izbp1cq2wdg9kxunr0sz02z ~]# docker search redis
    INDEX       NAME                                        DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
    docker.io   docker.io/redis                             Redis is an open source key-value store th...   5999      [OK]       
    docker.io   docker.io/bitnami/redis                     Bitnami Redis Docker Image                      94                   [OK]
    ···
    • NAME:镜像仓库源的名称
    • DESCRIPTION:镜像的描述
    • OFFICIAL:是否docker官方发布
    • AUTOMATED:是否自动构建

    4.2 镜像拉取

    [root@izbp1cq2wdg9kxunr0sz02z ~]# docker pull redis
    Using default tag: latest
    Trying to pull repository docker.io/library/redis ... 
    latest: Pulling from docker.io/library/redis
    f17d81b4b692: Pull complete 
    b32474098757: Pull complete 
    8980cabe8bc2: Pull complete 
    2719bdbf9516: Pull complete 
    f306130d78e3: Pull complete 
    3e09204f8155: Pull complete 
    Digest: sha256:481678b4b5ea1cb4e8d38ed6677b2da9b9e057cf7e1b6c988ba96651c6f6eff3
    Status: Downloaded newer image for docker.io/redis:latest

    默认拉取最新版本的镜像,如果需要拉取特定的版本号的软件镜像,在拉取命令的镜像名后面通过 :版本号 的方式进行拉取。

    如果担心下载速度慢,可以到国内的网易镜像中心https://c.163yun.com/hub#/m/home/进行查找,大部分基本软件镜像在这里都能够找到,相应的拉取命令在镜像库中也能看到。

    4.3 镜像列表

    列出本地主机上的镜像。

    [root@izbp1cq2wdg9kxunr0sz02z ~]# docker images
    REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
    docker.io/redis     latest              1babb1dde7e1        2 weeks ago         94.9 MB
    • REPOSITORY:表示镜像的仓库源
    • TAG:镜像的标签(版本)
    • IMAGE ID:镜像ID
    • CREATED:镜像创建时间
    • SIZE:镜像大小

    4.4 镜像删除

    [root@izbp1cq2wdg9kxunr0sz02z ~]# docker images
    REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
    docker.io/redis     latest              1babb1dde7e1        2 weeks ago         94.9 MB
    [root@izbp1cq2wdg9kxunr0sz02z ~]# docker rmi 1babb1dde7e1
    Untagged: docker.io/redis:latest
    Untagged: docker.io/redis@sha256:481678b4b5ea1cb4e8d38ed6677b2da9b9e057cf7e1b6c988ba96651c6f6eff3
    Deleted: sha256:1babb1dde7e1fc7520ce56ce6d39843a074151bb192522b1988c65a067b15e96
    Deleted: sha256:68f3c8e2388da48dd310e4642814feca68081445635716be58d7ebb69b611922
    Deleted: sha256:b18dd54614f34239abc8a1165c90d5416a413d1f4c3c6711648e49e26e4445e7
    Deleted: sha256:bf9efae34b1e94384b8cd011cf71591efab734b57961017bad608be56b7b1c9c
    Deleted: sha256:7ae66985fd3a3a132fab51b4a43ed32fd14174179ad8c3041262670523a6104c
    Deleted: sha256:bf45690ef12cc54743675646a8e0bafe0394706b7f9ed1c9b11423bb5494665b
    Deleted: sha256:237472299760d6726d376385edd9e79c310fe91d794bc9870d038417d448c2d5
    [root@izbp1cq2wdg9kxunr0sz02z ~]# docker images
    REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
    [root@izbp1cq2wdg9kxunr0sz02z ~]# 

    5. 容器操作

    当运行下载的软件镜像时,就会产生一个容器,此容器即代表一个正在运行的软件。

    1. 搜索镜像
    docker search tomcat
    2. 拉取镜像
    docker pull tomcat
    [root@izbp1cq2wdg9kxunr0sz02z ~]# docker images
    REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
    docker.io/tomcat    latest              ca9e2fccef98        4 days ago          463 MB
    3. 根据镜像运行容器
    [root@izbp1cq2wdg9kxunr0sz02z ~]# docker run --name mytomcat -d tomcat:latest
    5ae1e2cf28623a66dea99c40ad8cef564a681591507f5723fafca73242f63c51
    4. 查看运行中的容器
    [root@izbp1cq2wdg9kxunr0sz02z ~]# docker ps
    CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
    5ae1e2cf2862        tomcat:latest       "catalina.sh run"   13 seconds ago      Up 13 seconds       8080/tcp            mytomcat
    5. 查看所有容器
    [root@izbp1cq2wdg9kxunr0sz02z ~]# docker ps -a
    CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
    5ae1e2cf2862        tomcat:latest       "catalina.sh run"   28 seconds ago      Up 28 seconds       8080/tcp            mytomcat
    6. 停止运行中的容器
    [root@izbp1cq2wdg9kxunr0sz02z ~]# docker stop 5ae1e2cf2862
    5ae1e2cf2862
    [root@izbp1cq2wdg9kxunr0sz02z ~]# docker ps
    CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
    [root@izbp1cq2wdg9kxunr0sz02z ~]# docker ps -a
    CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                        PORTS               NAMES
    5ae1e2cf2862        tomcat:latest       "catalina.sh run"   2 minutes ago       Exited (143) 35 seconds ago                       mytomcat
    7. 启动容器
    [root@izbp1cq2wdg9kxunr0sz02z ~]# docker start 5ae1e2cf2862
    5ae1e2cf2862
    [root@izbp1cq2wdg9kxunr0sz02z ~]# docker ps
    CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
    5ae1e2cf2862        tomcat:latest       "catalina.sh run"   5 minutes ago       Up 7 seconds        8080/tcp            mytomcat
    [root@izbp1cq2wdg9kxunr0sz02z ~]# docker stop 5ae1e2cf2862
    5ae1e2cf2862
    8. 删除容器
    [root@izbp1cq2wdg9kxunr0sz02z ~]# docker rm 5ae1e2cf2862
    5ae1e2cf2862
    [root@izbp1cq2wdg9kxunr0sz02z ~]# docker ps -a
    CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
    [root@izbp1cq2wdg9kxunr0sz02z ~]# 

    需要注意的是,我们启动容器中的某个端口并不能自动映射到虚拟机上对应的端口,即按照上面的方式启动容器之后,访问虚拟机ip:8080是不能访问到tomcat的,这需要我们在运行容器时做一下端口的映射:

    [root@izbp1cq2wdg9kxunr0sz02z ~]# docker run -d -p 8888:8080 tomcat
    57546c6c4ac4f7386bbb2f682734bd4cd10025cee6fa124fdec70909964e8c51
    [root@izbp1cq2wdg9kxunr0sz02z ~]# docker ps
    CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS                    NAMES
    57546c6c4ac4        tomcat              "catalina.sh run"   7 seconds ago       Up 5 seconds        0.0.0.0:8888->8080/tcp   practical_meitner
    • -d:后台运行
    • -p: 将主机的端口映射到容器的一个端口 主机端口:容器内部的端口

     

    查看容器日志,可通过名称或镜像id
    [root@izbp1cq2wdg9kxunr0sz02z ~]# docker ps -a
    CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS                    NAMES
    57546c6c4ac4        tomcat              "catalina.sh run"   7 seconds ago       Up 5 seconds        0.0.0.0:8888->8080/tcp   practical_meitner
    [root@izbp1cq2wdg9kxunr0sz02z ~]# docker logs practical_meitner
    03-Nov-2018 13:32:57.183 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Server version:        Apache Tomcat/8.5.34
    03-Nov-2018 13:32:57.185 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Server built:          Sep 4 2018 22:28:22 UTC
    ···

    其他命令不再一一介绍,可参考博客:

    Docker命令分类及使用场景分布(脑图)

    更多命令参考:https://docs.docker.com/engine/reference/commandline/docker/  。

  • 相关阅读:
    pandas 修改列顺序
    read_csv,to_csv 前n行
    郭盛华:未来黑客攻击的将远不止网络
    微软的 Linux 存储库停机 18 多个小时
    警惕黑客利用 Google Docs进行网络钓鱼
    苹果发布紧急补丁!修复被黑客利用的2个零日漏洞
    谷歌发布新框架以防止软件供应链攻击
    郭盛华:以知识见识锤炼真本领,年轻人要有理想
    通过 GDPR 加强密码政策,是企业网络的第一道防线
    肉类供应商遭黑客攻击,并支付了 1100 万美元的赎金
  • 原文地址:https://www.cnblogs.com/zjfjava/p/9901487.html
Copyright © 2020-2023  润新知