Docker学习笔记

tech2022-10-31  151

Docker学习

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

文章目录

Docker学习😲Docker是什么😮Docker的用途😀Docker的安装UbuntuWindows其他安装安装完成后的验证Linux服务器下Docker的启动 ⚽Image 文件🍮查询所有的docker帮助⚡docker的一些常用命令列出本机所有的image文件删除image文件从`Docker Hub`或其他镜像站下载image运行某个image列出所有的容器终止运行的容器文件删除容器文件创建image文件生成容器只运行一次的容器重复使用容器正确退出容器的姿势查看容器输出进入一个正在运行的容器复制容器中文件到本机 📗Dockerfile文件🌺制作自己的Docker容器准备工作创建image文件生成容器发布image文件

😲Docker是什么

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

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

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

😮Docker的用途

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

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

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

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

😀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帮助

菜鸟教程

使用man

# simple help man docker # complex docker [CMD] --help

百度

⚡docker的一些常用命令

列出本机所有的image文件

docker image ls

删除image文件

docker image rm [imageName]

从Docker Hub或其他镜像站下载image

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

docker image pull library/hello-world

library是Docker 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容器

准备工作

假设项目文件夹为./pro

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

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

编写./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文件

登录

docker login

为本地的 image 标注用户名和版本

docker image tag [imageName] [username]/[repository]:[tag]

发布image文件

docker image push [username]/[repository]:[tag]

查看发布的image文件

# 登录 hub.docker.com,就可以看到已经发布的 image 文件。
最新回复(0)