Docker学习笔记

Docker学习

链接: http://www.ruanyifeng.com/blog/2018/02/docker-tutorial.html

😲Docker是什么

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

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

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

😮Docker的用途

Docker 的主要用途,目前有三大类。

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

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

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

😀Docker的安装

Ubuntu

文档链接: https://docs.docker.com/engine/install/ubuntu/

Windows

文档链接: https://docs.docker.com/docker-for-windows/install/

其他安装

参考文档: https://docs.docker.com

安装完成后的验证

# # make sure the env variable is available
docker version
# or 
docker info

Linux服务器下Docker的启动

sudo service docker start
# or
sudo systemctl start docker

⚽Image 文件

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

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

🍮查询所有的docker帮助

  1. 菜鸟教程

  2. 使用man

    # simple help
    man docker
    # complex
    docker [CMD] --help
    
  3. 百度

⚡docker的一些常用命令

列出本机所有的image文件

docker image ls

删除image文件

docker image rm [imageName]

Docker Hub或其他镜像站下载image

该操作不是必要的 在docker run中可以附加该操作

docker image pull library/hello-world

libraryDocker Hub的官方镜像站

运行某个image

docker container run {ImageName}

列出所有的容器

# is running 
docker container ls
# all 
docker container ls --all

终止运行的容器文件

# # 向容器发一个SIGKILL信号,强制终止容器运行
docker container kill {contrainer ID}

删除容器文件

docker container rm {container ID}

创建image文件

docker image build -t {ImageName}:[LABEL] {DIR WITH DOCKERFILE} 

生成容器

docker container run -p {local_port}:{docker_port} -it image_name [CMD AFTER RUN]

只运行一次的容器

# # 在容器终止运行后自动删除容器文件
docker container run -rm [other args]

重复使用容器

# # 启动已经生成、已经停止运行的容器文件
docker container start {container id}

正确退出容器的姿势

# # 向容器发一个SIGTERM命令, 自动进行收尾清理工作, 然后终止
docker container stop {container id}

查看容器输出

# # 查看容器中程序的标准输出 如果没有指定-it参数, 就要用这个命令
docker container logs {container id}

进入一个正在运行的容器

docker container exec -it {container id} /bin/bash

复制容器中文件到本机

# # 注意最后的点, 表示当前目录
docker container cp [containID]:[/path/to/file] .

📗Dockerfile文件

学会使用 image 文件以后,接下来的问题就是,如何可以生成 image 文件?如果你要推广自己的软件,势必要自己制作 image 文件。

这就需要用到 Dockerfile 文件。它是一个文本文件,用来配置 image。Docker 根据 该文件生成二进制的 image 文件。

🌺制作自己的Docker容器

准备工作

  1. 假设项目文件夹为./pro

  2. 准备Docker中运行的软件的实体, 可使用git下载,保存在./pro

  3. 编写./pro/dockerignore文本文件 文件中提到的文件夹不会包含到app文件夹中

  4. 编写./pro/Dockerfile文件, 主要有以下几项(以下是一个示例文件)

    # # FROM 继承官方的IMAGE文件, 冒号表示标签
    FROM node: 8.4
    # # COPY 将当前目录中的所有文件(除去被排除的文件), 都复制到iamge下的/app目录
    COPY . /app
    # # WORKDIR 指定工作文件夹
    WORKDIR /app
    # # RUN指令(可以有多个) 指定在image build时的动作
    RUN npm install --registry=htpps://registry.npm.taobao.org
    # # EXPOSE 暴露端口, 允许外部连接
    EXPOSE 3000
    # # CMD 定义运行后动作
    CMD /bin/bash
    

创建image文件

docker image build -t koa-demo .

生成容器

# -p 参数: 定义端口映射
# -it 参数: 容器的 Shell 映射到当前的 Shell,然后你在本机窗口输入的命令,就会传入容器。
# koa-demo:0.01 容器名称和标签
# /bin/bash 容器运行后动作
docker container run -p 8000:3000 -it koa-demo /bin/bash

发布image文件

  1. 登录

    docker login
    
  2. 为本地的 image 标注用户名和版本

    docker image tag [imageName] [username]/[repository]:[tag]
    
  3. 发布image文件

    docker image push [username]/[repository]:[tag]
    
  4. 查看发布的image文件

    # 登录 hub.docker.com,就可以看到已经发布的 image 文件。
    
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值