首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >【Docker】容器的安装与使用

【Docker】容器的安装与使用

作者头像
且陶陶
发布2023-04-12 16:00:30
发布2023-04-12 16:00:30
2.5K0
举报
文章被收录于专栏:Triciaの小世界Triciaの小世界

Docker

官方文档

不同环境 配置不同,本地开发的项目依赖于本地环境,如何能在不同环境任意执行?

Docker就是用来解决这一问题的。简而言之,Docker打包时打包了项目本身及其依赖。当这个项目运行时,会在Docker的虚拟容器中运行,无需担心不同的环境。

用途

  1. 提供运行环境
  2. 提供弹性云服务
  3. 组建微服务架构

下载安装

Win下载地址:https://docs.docker.com/desktop/install/windows-install/

MAC下载地址:https://docs.docker.com/desktop/install/mac-install/

安装直接无脑就行

  1. 检测安装是否成功
代码语言:javascript
复制
docker version

Docker是服务器-客户端架构,命令行运行Docker时,需要本地起服务。

Win需要以管理员身份打开cmd

  1. 启动服务命令
代码语言:javascript
复制
net start com.docker.service
  1. 停止服务命令
代码语言:javascript
复制
net stop com.docker.service

启动好了服务之后,可以继续进行操作

image文件是个啥?

image文件里面打包了 项目 及其 依赖 ,只有通过image文件我们才能生成一个Docker容器。

也就是说,image是Docker的模板,一个image文件可以生成多个同时运行的Docker实例

  1. 查看本机image文件
代码语言:javascript
复制
docker image ls
  1. 删除image文件
代码语言:javascript
复制
docker image rm [imageName]

这里备注一下:官方image文件仓库,在前人基础上再加工image文件。快捷高效。

hello-world

先从简单的helloworld学起

  1. 先将image文件从仓库pull到本地
代码语言:javascript
复制
docker image pull library/hello-world
  • ocker image pull是抓取 image 文件的命令
  • library/hello-world是 image 文件在仓库里面的位置
  • library是 image 文件所在的组
  • hello-world是 image 文件的名字。

官方提供的 image 文件,都放在[library](https://hub.docker.com/r/library/)组里面,所以是默认组,可以省略。简化写法:

代码语言:javascript
复制
docker image pull hello-world
  1. 本机能看到这个文件啦
  1. 运行这个文件 docker container run命令会从 image 文件,生成一个正在运行的容器实例。 这个命令也会自动从仓库中pull image文件。所以步骤1可有可无
代码语言:javascript
复制
docker container run hello-world

一般容器会自动终止,不能自动的手动kill它

代码语言:javascript
复制
docker container kill [containID]

容器文件

image生成的容器实例,也叫容器文件。

一旦容器生成会有两个文件,image文件和容器文件。关闭容器不会删除容器文件,只是容器停止运行罢了

代码语言:javascript
复制
# 列出本机正在运行的容器
docker container ls

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

# 删除容器文件
docker container rm [containerId]

尝试新建自己的image文件

项目根目录下新建Docker文件

dockerignore文件:打包忽略文件

代码语言:javascript
复制
# 排除这三个路径,不打包进image文件中
.git
node_modules
npm-debug.log

Dockerfile文件:一个文本文件,用来配置image。Docker根据该文件生成二进制的image文件。

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

创建image文件

  • -t表示指定image参数的名字
  • 名字后面加:可以指定标签
  • .表示Dockerfile文件所在路径(.代表当前路径)
代码语言:javascript
复制
docker image build -t react-commentlist:v0.1 **.**

查看本机所有image,就能看到我们新建的image啦!

代码语言:javascript
复制
docker image ls

生成容器

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

可以在后面输入 npm start 启动项目。

打开浏览器,输入http://127.0.0.1:8000 就可以访问项目了。

容器退出

Ctrl + c 停止 Node 进程

Ctrl + d (或 exit)退出容器

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2023-03-15,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Docker
  • 用途
  • 下载安装
  • image文件是个啥?
  • hello-world
  • 容器文件
  • 尝试新建自己的image文件
    • 项目根目录下新建Docker文件
    • 创建image文件
    • 生成容器
    • 容器退出
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档