• Docker入门到精通教程


     Docker是什么

    Docker是一个开源的应用容器引擎,它基于Go语言并遵从Apache2.0协议开源。容器技术是和我们的宿主机共享硬件资源及操作系统,实现资源的动态分配,在资源受到隔离的进程中运行应用程序及其依赖关系。

    Docker可帮助更快地打包、测试以及部署应用程序,并可以缩短从编写到部署运行代码的周期。它的优点包括简化流程、避免选择恐惧症、节省开支等。

    使用Docker可以将应用程序和基础设施层隔离,并且能将基础设施当作程序一样进行管理。Docker目前是最流行的Linux容器解决方案。它的基本概念包括镜像(Image)、容器(Container)和仓库(Repository)。镜像是Docker运行容器的前提,仓库是存放镜像的场所。

    Docker架构使用C/S结构,即客户端/服务器体系结构。其中,Docker daemon是一个运行在宿主机(DOCKER-HOST)的后台进程。

    Docker的应用场景

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

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

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

    Docker仓库

    Docker仓库是用于存储Docker镜像并可以通过Docker pull命令下载的云环境。Docker仓库分为公有仓库和私有仓库,公有仓库包括Docker Hub等开放给用户使用并允许用户管理镜像的仓库,私有仓库则是由用户自行搭建的存放镜像的云环境。在Docker中使用仓库之前需要登录Docker Hub或其他仓库,登录后可以通过Docker search命令查找需要下载的镜像。

    Docker镜像

    Docker使用

    1、查找镜像

    Usage:  docker search [OPTIONS] TERM

    Search the Docker Hub for images

    Options:
      -f, --filter filter   按照给定条件进行筛选
          --format string   Pretty-print search using a Go template
          --limit int       限制查找个数,默认是25 (default 25)
          --no-trunc        Don't truncate output

    如 docker search jenkins 

    2、列出本地镜像

    docker images 

    Usage:  docker images [OPTIONS] [REPOSITORY[:TAG]]

    List images

    Options:
      -a, --all             Show all images (default hides intermediate images)
          --digests         Show digests
      -f, --filter filter   Filter output based on conditions provided
          --format string   Pretty-print images using a Go template
          --no-trunc        Don't truncate output
      -q, --quiet           Only show image IDs

    3、启动容器

     docker run [OPTIONS] IMAGE [COMMAND] 
    [OPTIONS]常用参数有:
    -i:启动一个可交互的容器,并持续打开标准输入。
    -t:使用终端关联到容器的标准输入输出上。
    -d:将容器放置后台运行

    docker run有非常多参数,可以使用--help查看

    如docker run hello-world,如果本地没有该镜像,会从仓库查找并拉取

     

    运行交互式的容器


    我们通过 docker 的两个参数 -i -t,让 docker 运行的容器实现"对话"的能力:

    runoob@runoob:~$ docker run -i -t ubuntu:15.10 /bin/bash

     如图,run容器后,命令行显示了root@0123ce188bd8:/#,这个是容器内的命令行。

    按Ctrl+D,可以退出容器。

    启动容器(后台模式)


    使用以下命令创建一个以进程方式运行的容器

    runoob@runoob:~$ docker run -d ubuntu:15.10 /bin/sh -c "while true; do echo hello world; sleep 1; done"

    2b1b7a428627c51ab8810d541d759f072b4fc75487eed05812646b8534a2fe63

    参数-d,指定该容器运行方式为后台模式,返回的一串数字为容器ID,每个容器都有唯一的ID。
     

    4、查看容器

    docker ps

    Usage:  docker ps [OPTIONS]

    List containers

    Options:
      -a, --all             显示所有容器包含已停止容器
      -f, --filter filter   根据给定条件过滤
          --format string  使用go模板打印容器
      -n, --last int        
      -l, --latest          显示最新创建的容器
          --no-trunc        不截断输出
      -q, --quiet           只显示容器ID
      -s, --size            展示所有文件大小

     

    5、查看容器日志 

    使用 docker logs 命令,查看容器内的标准输出,常用来排查程序运行出错原因。

    runoob@runoob:~$ docker logs 2b1b7a428627

     6、停止容器

    使用 docker stop 容器id 命令来停止容器:

    会输出容器ID

    7、重启容器

    使用 docker start +容器ID 启动一个已停止的容器:

    $ docker start b750bbbcfd88

    8、进入容器

    进入Docker容器的命令为:


    docker exec -it <容器ID或名称> /bin/bash


    或者使用简写形式:


    docker exec -it <容器ID或名称> sh


    docker exec -it 7752222e1e1 /bin/bash


    该命令会在指定的容器中启动一个交互式终端,允许您在容器内执行命令。容器的ID或名称可以是任何正在运行的容器的标识符。进入容器后,您可以在容器内执行任意命令。

    输入exit或者按ctrl+D退出容器

    9、删除容器

    删除容器使用 docker rm 命令

    容器必须先停止再删除。

    高阶使用方法

    构建镜像

    如果已有镜像不满足使用,我们可以创建自己的镜像,需要写Dockerfile文件。

    Dockerfile是用来构建Docker镜像的构建文件,它是由一系列命令和参数构成的脚本。

    创建一个文件命名为Dockerfile

    1. # 指定基础镜像
    2. FROM ubuntu:latest
    3. # 设置工作目录
    4. WORKDIR /app
    5. # 将当前目录下的文件复制到容器的工作目录中
    6. COPY . /app
    7. # 安装Redis
    8. RUN apt-get update && \
    9. apt-get install -y redis-server && \
    10. apt-get clean
    11. # 设置容器启动命令
    12. CMD ["redis-server", "/etc/redis/redis.conf"]

    Dockerfile中,我们首先指定了基于Ubuntu的最新版本的基础镜像。

    WORKDIR 设置了容器的工作目录为/app,这里目录是指容器内的目录。并将当前目录(宿主机当前目录)的所有文件复制到该目录下。

    通过apt-get命令安装Redis

    设置容器的启动命令为redis-server /etc/redis/redis.conf,即启动Redis服务器并加载配置文件。

    有了这个Dockerfile后,我们可以使用docker build命令来构建镜像:


    docker build -t my-redis .


    该命令将会在当前目录下构建一个名为my-redis的Redis镜像,其中“.`”表示当前目录。在构建过程中,Docker将会执行Dockerfile中的每一条指令,并输出相应的信息。最终将会生成一个名为my-redis的镜像,可以使用docker images命令来查看所有已安装的镜像。

    更新镜像

    更新镜像之前,我们需要使用镜像来创建一个容器。

    edualiyun@edualiyun:~$ docker run -t -i ubuntu:15.10 /bin/bash 


    在运行的容器内使用 apt-get update 命令进行更新。

    在完成操作之后,输入 exit命令来退出这个容器。

    此时ID为e218edb10161的容器,是按我们的需求更改的容器。我们可以通过命令 docker commit来提交容器镜像。

    edualiyun@edualiyun:~$ docker commit -m="has update" -a="edualiyun" e218edb10161 edualiyun/ubuntu:v2 sha256:70bf1840fd7c0d2d8ef0a42a817eb29f854c1af8f7c59fc03ac7bdee9545aff8


    各个参数说明:

    -m:提交的描述信息

    -a:指定镜像作者

    e218edb10161:容器

    edualiday/ubuntu:v2:指定要创建的目标镜像名
     

    docker使用实例

    安装jenkins

    docker pull jenkins 

    docker run --name jenkins -p 8080:8080 -p 50000:50000 -v jenkins_home:/var/jenkins_home --restart always -d jenkins/jenkins

    它创建并启动了一个名为'jenkins'的Docker容器。参数的解释:

    • 'docker run': Docker的一个命令,用于从Docker镜像创建容器并启动它。
    • '--name jenkins': 给创建的容器命名为'jenkins'。
    • '-p 8080:8080': 端口映射[宿主机端口:容器端口],将容器内部的8080端口映射到宿主机器的8080端口。
    • '-p 50000:50000': 另一组端口映射,将容器内部的50000端口映射到宿主机器的50000端口。
    • '-v jenkins_home:/var/jenkins_home': 数据卷映射,将宿主机上的'jenkins_home'目录映射到容器内的'/var/jenkins_home'目录。
    • '--restart always': 设置容器的重启策略为'always',即无论容器是启动还是停止,都会在退出后自动重启。
    • '-d jenkins/jenkins': -d容器放置后台运行,使用'jenkins/jenkins'这个Docker镜像来创建并启动容器。

    安装nginx

    Docker 安装 Nginx-CSDN博客

  • 相关阅读:
    第11章 数据库的设计规范【2.索引及调优篇】【MySQL高级】
    【Pytorch和深度学习】栏目导读
    8月22日计算机视觉理论学习笔记——常见 CNN
    增值税发票税控开票软件数据接口规范
    idea部署javaSE项目(awt+swing项目)/idea导入eclipse的javaSE项目
    pytest多进程/多线程执行测试用例
    当低代码遇上私有化部署,真是赞爆了!
    认识并学会使用AJax
    Springboot健康饮食小程序的设计的实现毕业设计源码280920
    嵌入式人工智能ESP32(4-PWM呼吸灯)
  • 原文地址:https://blog.csdn.net/seanyang_/article/details/133926364