最新公告
  • 欢迎您光临起源地模板网,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入钻石VIP
  • 拼拼凑凑的Docker入门

    正文概述 掘金(baby00700)   2020-12-31   714

    Docker基础入门

    一、什么是Docker?

    Docker 属于 Linux 容器的一种封装,提供简单易用的容器使用接口。它是目前最流行的 Linux 容器解决方案。

    Docker 将应用程序与该程序的依赖,打包在一个文件里面。运行这个文件,就会生成一个虚拟容器。程序在这个虚拟容器里运行,就好像在真实的物理机上运行一样。有了 Docker,就不用担心环境问题。

    总体来说,Docker 的接口相当简单,用户可以方便地创建和使用容器,把自己的应用放入容器。容器还可以进行版本管理、复制、分享、修改,就像管理普通的代码一样。

    二、为什么选择Docker?

    • 启动快
    • 资源占用少
    • 体积小

    (1)提供一次性的环境。比如,本地测试他人的软件、持续集成的时候提供单元测试和构建的环境。

    (2)提供弹性的云服务。因为 Docker 容器可以随开随关,很适合动态扩容和缩容。

    (3)组建微服务架构。通过多个容器,一台机器可以跑多个服务,因此在本机就可以模拟出微服务架构。

    三、在Ubuntu上安装Docker

    1. 卸载旧版本

    sudo apt-get remove docker docker-engine docker.io containerd runc
    

    2.安装

    $ sudo apt-get update
    
    $ sudo apt-get install \
        apt-transport-https \
        ca-certificates \
        curl \
        software-properties-common
    
    $ sudo apt-get update
    
    $ sudo apt-get install docker-ce
    

    3.验证安装

    docker version
     # 或者
    docker info
    

    4. 加入用户组(不用每次都输入 sudo)

    sudo usermod -aG docker $USER
    

    5. docker启动 & 重启

    # service 命令的用法
    sudo service docker start
    
    # systemctl 命令的用法
    sudo systemctl start docker
    

    四、Docker 基础概念以及命令

    1. 镜像(image)

    Docker 把应用程序及其依赖,打包在 image 文件里面。只有通过这个文件,才能生成 Docker 容器。image 文件可以看作是容器的模板。Docker 根据 image 文件生成容器的实例。同一个 image 文件,可以生成多个同时运行的容器实例。

    image 是二进制文件。实际开发中,一个 image 文件往往通过继承另一个 image 文件,加上一些个性化设置而生成。举例来说,你可以在 Ubuntu 的 image 基础上,往里面加入 Apache 服务器,形成你的 image。

    image 文件是通用的,一台机器的 image 文件拷贝到另一台机器,照样可以使用。一般来说,为了节省时间,我们应该尽量使用别人制作好的 image 文件,而不是自己制作。即使要定制,也应该基于别人的 image 文件进行加工,而不是从零开始制作。

    为了方便共享,image 文件制作完成后,可以上传到网上的仓库。Docker 的官方仓库 Docker Hub 是最重要、最常用的 image 仓库。此外,出售自己制作的 image 文件也是可以的。

    1.1 拉取镜像

    docker image pull library/hello-world
    # 或者
    docker image pull hello-world
    

    1.2 镜像列表

    docker image ls
    

    2. 容器(Container)

    image 文件生成的容器实例,本身也是一个文件,称为容器文件。也就是说,一旦容器生成,就会同时存在两个文件: image 文件和容器文件。而且关闭容器并不会删除容器文件,只是容器停止运行而已。

    2.1 run

    运行一个image 会生成一个 容器

    docker container run hello-world
    
    # 屏幕上的输出
    $ docker container run hello-world
    
    Hello from Docker!
    This message shows that your installation appears to be working correctly.
    
    ... ...
    

    输出这段提示以后,hello world就会停止运行,容器自动终止。 有些容器不会自动终止,因为提供的是服务。比如,安装运行 Ubuntu 的 image,就可以在命令行体验 Ubuntu 系统。 例如:

    docker container run -it ubuntu bash
    

    2.2 kill

    杀掉一个 容器

    docker container kill [containID]
    

    2.3 ls

    容器列表

    # 列出本机正在运行的容器
    docker container ls
    
    # 列出本机所有容器,包括终止运行的容器
    docker container ls --all
    

    2.4 rm

    终止运行的容器文件,依然会占据硬盘空间,可以使用docker container rm命令删除。

    docker container rm [containerID]
    

    运行上面的命令之后,再使用docker container ls --all命令,就会发现被删除的容器文件已经消失了。

    3. Dockerfile

    在项目的根目录下,新建一个文本文件 Dockerfile

    FROM node:8.4 # 该 image 文件继承官方的 node image,冒号表示标签,这里标签是8.4,即8.4版本的 node。
    COPY . /app # . /app:将当前目录下的所有文件(除了.dockerignore排除的路径),都拷贝进入 image 文件的/app目录。
    WORKDIR /app # 指定接下来的工作路径为/app。
    RUN npm install --registry=https://registry.npm.taobao.org # 在/app目录下,运行npm install命令安装依赖。注意,安装后所有的依赖,都将打包进入 image 文件。
    EXPOSE 3000 # 将容器 3000 端口暴露出来, 允许外部连接这个端口。
    

    3.1 创建 image 文件

    有了 Dockerfile 文件以后,就可以使用docker image build命令创建 image 文件了。

    $ docker image build -t koa-demo .
    # 或者
    $ docker image build -t koa-demo:0.0.1 .
    

    3.2 生成容器

    $ docker container run -p 8000:3000 -it koa-demo /bin/bash
    # 或者
    $ docker container run -p 8000:3000 -it koa-demo:0.0.1 /bin/bash
    

    解释:

    -p参数:容器的 3000 端口映射到本机的 8000 端口。
    -it参数:容器的 Shell 映射到当前的 Shell,然后你在本机窗口输入的命令,就会传入容器。
    koa-demo:0.0.1:image 文件的名字(如果有标签,还需要提供标签,默认是 latest 标签)。
    /bin/bash:容器启动以后,内部第一个执行的命令。这里是启动 Bash,保证用户可以使用 Shell。
    

    3.3 CMD 命令

    容器启动以后,需要手动输入命令node demos/01.js。我们可以把这个命令写在 Dockerfile 里面,这样容器启动以后,这个命令就已经执行了,不用再手动输入了。

    FROM node:8.4
    COPY . /app
    WORKDIR /app
    RUN npm install --registry=https://registry.npm.taobao.org
    EXPOSE 3000
    CMD node demos/01.js
    
     docker container run --rm -p 8000:3000 -it koa-demo:0.0.1
    

    4. 发布image

    容器运行成功后,就确认了 image 文件的有效性。这时,我们就可以考虑把 image 文件分享到网上,让其他人使用。

    首先,去 hub.docker.com 或 cloud.docker.com 注册一个账户。然后,用下面的命令登录。

     $ docker login
    
    然后标注用户名和版本
    docker image tag [imageName] [username]/[repository]:[tag]
    # 示例
    docker image tag koa-demos:0.0.1 ruanyf/koa-demos:0.0.1
    
    # 发布
    $ docker image push [username]/[repository]:[tag]
    

    五、 微服务基础(docker 实践)

    1. 自建 WordPress 容器

    1.1 首先,新建一个工作目录,并进入该目录。

    mkdir docker-demo && cd docker-demo
    

    1.2 新建一个容器

    $ docker container run \
      --rm \
      --name wordpress \
      --volume "$PWD/":/var/www/html \
      php:5.6-apache
    

    上面的命令基于php的 image 文件新建一个容器,并且运行该容器。php的标签是5.6-apache,说明装的是 PHP 5.6,并且自带 Apache 服务器。该命令的三个参数含义如下。

    --rm:停止运行后,自动删除容器文件。
    --name wordpress:容器的名字叫做wordpress。
    --volume "$PWD/":/var/www/html:将当前目录($PWD)映射到容器的/var/www/html(Apache 对外访问的默认目录)。因此,当前目录的任何修改,都会反映到容器里面,进而被外部访问到。
    

    1.3 拷贝 WordPress 安装包

    既然本地的docker-demo目录可以映射到容器里面,那么把 WordPress 安装包拷贝到docker-demo目录下,不就可以通过容器访问到 WordPress 的安装界面了吗?

    首先,在docker-demo目录下,执行下面的命令,抓取并解压 WordPress 安装包。

    $ wget https://cn.wordpress.org/wordpress-4.9.4-zh_CN.tar.gz
    $ tar -xvf wordpress-4.9.4-zh_CN.tar.gz
    

    这时浏览器访问http://172.17.0.2/wordpress,就能看到 WordPress 的安装提示了。

    2. 官方的 MySQL 容器

    WordPress 必须有数据库才能安装,所以必须新建 MySQL 容器。

    打开一个新的命令行窗口,执行下面的命令。

    $ docker container run \
      -d \
      --rm \
      --name wordpressdb \
      --env MYSQL_ROOT_PASSWORD=123456 \
      --env MYSQL_DATABASE=wordpress \
      mysql:5.7
    

    上面的命令会基于 MySQL 的 image 文件(5.7版本)新建一个容器。该命令的五个命令行参数的含义如下。

    -d:容器启动后,在后台运行。
    --rm:容器终止运行后,自动删除容器文件。
    --name wordpressdb:容器的名字叫做wordpressdb
    --env MYSQL_ROOT_PASSWORD=123456:向容器进程传入一个环境变量MYSQL_ROOT_PASSWORD,该变量会被用作 MySQL 的根密码。
    --env MYSQL_DATABASE=wordpress:向容器进程传入一个环境变量MYSQL_DATABASE,容器里面的 MySQL 会根据该变量创建一个同名数据库(本例是WordPress)。
    

    3. 定制 PHP 容器

    现在 WordPress 容器和 MySQL 容器都已经有了。接下来,要把 WordPress 容器连接到 MySQL 容器了。但是,PHP 的官方 image 不带有mysql扩展,必须自己新建 image 文件。

    首先,停掉 WordPress 容器。

     docker container stop wordpress
    

    停掉以后,由于--rm参数的作用,该容器文件会被自动删除。

    然后,在docker-demo目录里面,新建一个Dockerfile文件,写入下面的内容。

    FROM php:5.6-apache
    RUN docker-php-ext-install mysqli
    CMD apache2-foreground
    

    上面代码的意思,就是在原来 PHP 的 image 基础上,安装mysqli的扩展。然后,启动 Apache。

    基于这个 Dockerfile 文件,新建一个名为phpwithmysql的 image 文件。

    docker build -t phpwithmysql .
    

    4. Wordpress 容器连接 MySQL

    现在基于 phpwithmysql image,重新新建一个 WordPress 容器。

     docker container run \
      --rm \
      --name wordpress \
      --volume "$PWD/":/var/www/html \
      --link wordpressdb:mysql \
      phpwithmysql
    

    跟上一次相比,上面的命令多了一个参数--link wordpressdb:mysql,表示 WordPress 容器要连到wordpressdb容器,冒号表示该容器的别名是mysql。

    这时还要改一下wordpress目录的权限,让容器可以将配置信息写入这个目录(容器内部写入的/var/www/html目录,会映射到这个目录)。

     chmod -R 777 wordpress
    

    接着,回到浏览器的http://172.17.0.2/wordpress页面,点击"现在就开始!"按钮,开始安装。

    数据库名:wordpress
    用户名:root
    密码:123456
    数据库主机:mysql
    表前缀:wp_(不变)
    


    起源地下载网 » 拼拼凑凑的Docker入门

    常见问题FAQ

    免费下载或者VIP会员专享资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
    提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或 联络我们.。
    找不到素材资源介绍文章里的示例图片?
    对于PPT,KEY,Mockups,APP,网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
    模板不会安装或需要功能定制以及二次开发?
    请QQ联系我们

    发表评论

    还没有评论,快来抢沙发吧!

    如需帝国cms功能定制以及二次开发请联系我们

    联系作者

    请选择支付方式

    ×
    迅虎支付宝
    迅虎微信
    支付宝当面付
    余额支付
    ×
    微信扫码支付 0 元