美文网首页
前端学点docker知识

前端学点docker知识

作者: 王逵_e9b3 | 来源:发表于2020-01-09 16:02 被阅读0次

常见命令

下载 docker

centOS

  1. 移除服务器上老的 docker
sudo yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-engine
  1. 下载对应插件
sudo yum install -y yum-utils \
  device-mapper-persistent-data \
  lvm2
  1. 配置仓库
sudo yum-config-manager \
    --add-repo \
    https://download.docker.com/linux/centos/docker-ce.repo
  1. 下载 docker-cli
sudo yum install docker-ce docker-ce-cli containerd.io
  1. 启动 docker——sudo systemctl start docker

  2. 测试 docker 安装是否成功——sudo docker run hello-world

  3. 查看当前下载镜像docker image ls

  4. 下载 docker-compose

sudo curl -L "https://github.com/docker/compose/releases/download/1.24.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
  1. 解析 docker-compose
    sudo chmod +x /usr/local/bin/docker-compose

  2. 配置 docker-compose 的路径
    sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose

  3. 查看版本docker-compose --version

docke 基础

1. docker 提供了一个开发,打包,运行 app 的平台

2. image:镜像

  • 文件和 meta data 的集合(root filesystem)
  • 分层的,并且每一层都可以添加改变删除文件,成为一个新的 image
  • 不同的 image 可以共享相同的 layer
  • image 本身是 read-only 的

获取 image: build from dockerfile

//  选择基本image
FROM ubuntu:14.04
//  选择基本标识
LABEL maintainer="Peng Xiao <xiaoquwl@gmail.com>"
// 运行代码
RUN apt-get update && apt-get install -y redis-server

// 暴露的端口
EXPOSE 6379
// 程序的入口,启动redis-server
ENTRYPOINT ["/usr/bin/redis-server"]

然后执行命令docker build -t xiaopeng163/redis:latest .
-t表示当前目录的名字
. 表示基于当前目录的 dockerfile 构建

获取 image:pull from registry

类似与 git,把 image 传到 registry 上面(dockerhub),然后通过 pull 命令拉取

eg: docker pull ubuntu:14.04

构建一个 base image

  1. 创建一个 dockerfile 文件

  2. 编写 dockerfile

    FROM scratch
    
    ADD hello /
    
    CMD ["/hello"]
    
  3. docker build -t xiaopeng163/hello-world . 在 dockerhub 上的 xiaopeng163 中创建名为 hello-world 的 image

3. container:容器

  • 通过 Image 创建(copy)
  • 在 Image layer 之上建立一个 container layer (可读写)
  • 类比面向对象:类和实例
  • Image 负责 app 的存储和分发,container 负责运行 app

4. 构建自己的 docker 镜像

对 base image 的某一个 container 做了修改之后,重新构建为新的 image

  • docker container commit

    docker commit containerName dockerhubRep/imgName

    不太提倡,无法保障 image 的安全

  • docker image build

    通过 dockerfile build 一个 image

    FROM centos
    
    RUN yum install -y vim
    // 我们知道image是不可变的,在build过程中,会生成一个临时的container,这个和js的包装对象类似
    

    运行docker build -t dockerhubRep/imageName .

5. dockerfile 语法解析


  // 尽量使用官方的image,确保安全
  // 制作base image
  FROM scratch
  // 使用base image;
  FROM centos

  // image的信息,类似与代码中的注释
  LABEL maintainer
  LABEL version
  LABEL description

  // 每运行一个RUN,都会新生成一个layer,故建议通过&&和\将多个命令合并为一个
  RUN

  // 设定当前工作目录,如果根目录下没有root,会自动创建,
  // 使用workdir,不要用run cd ;尽量使用绝对目录
  WORKDIR /root

  // 将文件添加到指定目录
  // ADD 还可以解压缩
  // 大部分情况,copy优于ADD,添加远程文件/目录使用curl或者wget
  ADD hello /   将hello添加到根目录
  COPY

  // 设置常量,尽量使用,增加可维护性
  ENV

  // 存储和网络
  VOLUME and EXPOSE

RUN 执行命令并创建新的 image layer

CMD 设置容器启动后默认执行的命令和参数
如果 docker run 指定了其他命令,cmd 命令被忽略
如果定义了多个 cmd ,只有最后一个会执行

ENTRYPOINT 设置容器启动时运行的命令
不会被忽略,一定会执行
最佳实践:写一个 shell 脚本作为 entrypoint

        ```javascript
        COPY docker-entrypoint.sh /usr/local/bin/
        ENTRYPOINT ['docker-entrypoint.sh']
        EXPOSE 27017
        CMD ["mongod"]
        ```

shell 格式

RUN apt-get install -y vim
CMD echo "hello docker"
ENTRYPOINT echo "hello docker"

Exec 格式

RUN[('apt-get', 'install', '-y', 'vim')]
CMD[('echo', 'hello docker')]
ENTRYPOINT[('echo', 'hello docker')]

6. 将 image 发布到 dockerhub

  • docker login
  • docker push imageName:tag

docker network

端口映射

docker run --name web -d -p 80:80 nginx

--name: 容器命名
-d:后台运行
-p:端口映射 主机端口:容器端口

docker volumn 数据持久化

  • 基于本地文件系统的 volumn
    可以在执行 docker create 或 docker run 时,通过-v 参数将主机的目录作为容器的数据卷。
  • 基于 plugin 的 volumn,支持第三方的存储方案,比如 nas,aws

volumn 的类型

  • 受管理的 data volumn,由 docker 后台自动创建。
  • 绑定挂载的 volumn,具体挂载位置可以由用户指定。

具体用法

dockerfile 中:volume ['/var/lib/mysql']

  1. docker volumn ls 查看 volume
  2. docker volumn inspect id 查看指定 volume
  3. docker volumn rm id 删除 volume
  4. docker run -d -v mysql:/var/lib/mysql --name mysql1 -v 将/var/lib/mysql 的 volume 命名为 mysql

bind mounting

将本地文件和容器映射

docker run -d -v $(pwd):/usr/share/nginx/html -p 80:80 --name web 。。。

$(pwd)代表当前目录

docker-compose

批处理多容器的 app

  • 是一个基于 docker 的命令行工具
  • 通过一个 yml 文件定义多容器的 docker 应用
  • 通过一条命令就可以根据 yml 文件的定义去创建或者管理多个容器
  • yml 主要包括 services,networks,volumes

基础命令

  1. docker image ls 查看本机的 image

    docker image rm id 删除某一个 image

  2. docker container ls 查看本机的正在运行的容器

    docker container ls -a查看历史运行过的容器

    docker container rm id 删除某一个容器

  3. docker run/exec -it name /bin/bash 运行某一个容器并进入 bash

  4. docker network inspect bridge 看到对应容器的 bridge
    ping ip ping 通 ip
    telnet ip:duankou 查看端口情况
    curl ip 访问 ip

  5. docker-compose up -d 根据命令行目录下的 docker-compose.yml 文件起项目,-d 不打印日志并后台运行

  6. docker-compose ps 查看多个容器中的服务的情况

  7. docker-compose stop 关闭容器中的服务但不删除

  8. docker-compose done 关闭容器并删除容器

  9. docker-compose images 列出 images

  10. docker-compose exec [container] bash 进入容器的 bash 命令行

  11. docker rmi $(docker images -q) 删除所有镜像

  12. docker stop/rm $(docker ps -aq) 停止/删除所有容器

配置 docker-compose.yml

相关文章

  • 前端学点docker知识

    常见命令 下载 docker centOS 移除服务器上老的 docker 下载对应插件 配置仓库 下载 dock...

  • 前端开发之路--启航篇

    开始之前 2017年结束还有一个月;总想学点前端的知识;甚至学习前端框架思想。这里将会开启一个前端的学习摘要和笔记...

  • 使用Docker搭建Wordpress

    简单介绍 随着容器技术越来越活,不学点有关容器的知识不行了。之前接触了一些关于Docker的基础知识,今天来做一个...

  • 前端基础知识梳理

    前言 来啦老铁! 前一段时间,公司有同事提出想了解一下前端知识,科普级别的那种,咱答应分享一下,今天简单学点前端最...

  • 前端学习001-HTML票房1

    2020-5-21:出于制作tcpip课程的目的,学点网页制作的知识。顺带想把整个前端的都学习一下。找了黑马的视频...

  • docker之创建自己的镜像(三)

    前两篇文章讲到了docker的基本知识,现在开始深入一点,作为一个初级前端er,我的目标是能使用docker的基本...

  • 每天学点前端

    很多人和我说,学前端很容易,两个月就够了,可以我了解到前端已经一年了,还是没有写出一个完整的网页,不是学不会...

  • 2022-12-22

    每天学点心理学知识。

  • Web框架体系

    Web 前端知识体系精简 web前端知识体系图 web前端知识体系大全 HTML,CSS,JavaScript知识...

  • docker 构建前端项目, 公共 node_modules 镜

    docker 构建前端项目, 公共 node_modules 镜像 目的 通过docker 快速搭建项目开发环境 ...

网友评论

      本文标题:前端学点docker知识

      本文链接:https://www.haomeiwen.com/subject/ekgyactx.html