搜尋
首頁運維Docker讓人心動的docker快速入門指南(圖文詳解)

這篇文章為大家帶來了關於docker快速入門的相關知識,其中包括常用操作命令、鏡像操作命令、容器操作命令等相關問題,希望對大家有幫助。

讓人心動的docker快速入門指南(圖文詳解)

給前端的docker 10分鐘真· 快速入門指南

2022年了,咱前端花點時間學點docker,不吃虧不上當

還沒了解過docker嗎,沒關係,咱模擬幾個場景,兩分鐘就給你搞明白它是什麼,我們什麼時候需要它

接著我們拿剩下的七、八分鐘用docker來同時部署vue2、vue3兩個項目,對就是這麼快!

1 docker是什麼

場景模擬1:單機

在公司勤勤懇懇的你很快得到了領導的認可,這天他讓你接手這下面幾個新項目,你需要將它們安裝在自己的電腦上

讓人心動的docker快速入門指南(圖文詳解)

#慧眼的你發現,這裡有多個不同版本的nodejs和mysql:還好,對我來說小意思

場景模擬2:多機

此時公司新來了3個前端實習生和新人,領導要你把這幾個專案也給他們安裝在本地電腦運行

由於公司歷史等原因,暫時只能給他們配置了不同作業系統的電腦:win7、win10、OSX等等

現在你需要把這幾個項目分別安裝在幾台電腦的不同作業系統上,看圖

讓人心動的docker快速入門指南(圖文詳解)

#機智的你發現,你的頭現在一個比兩個大

「安裝麻煩費時間,新來的人做專案的時候,還得針對不同專案去切換匹配的版本來用,容易犯錯這也給主機環境造成污染這也給主機環境造成污染,一想到未來還有更多的專案要這麼搞,這時候可能有人已經想跑路了」

#辛辛苦苦安裝完成後,看你這麼給力,領導又讓你在公司內部網路的兩台小型伺服器上部署一下這幾個項目,做公共的開發和測試環境,哦對這兩台伺服器是linux的,你是不是準備開始百度如何在linux 安裝node 和mysql了?而且還是要安裝多個版本的。要是這兩台伺服器的linux系統還不同呢?

現在到輪到你想提桶了吧

3 docker出場

別慌,這時候docker出場了,它能幫你抹平不同系統的應用程式安裝差異

讓人心動的docker快速入門指南(圖文詳解)-docker

等等,那為啥不用虛擬機器?

因為虛擬機啟動慢、損耗大、佔用資源多,在不同系統上的遷移/拓展比較複雜

但是docker它不會啊,它啟動是秒級的,佔用資源少,香不香,跨平台還方便複製

寫好配置後,它一個命令就在電腦上同時安裝不同版本的nodej、msyql、nginx 等而且是互相隔離獨立同時運行,這時候還不需要你手動來回切換

上面的問題不就輕鬆解決了嗎,現在你對docker感興趣了沒

2 docker 基礎

現在我們開始來了解docker的基礎吧

docker 分幾個概念:映像、容器、倉庫

映像:就是像是我們裝置時候需要的系統磁碟或系統鏡像文件,這裡它負責創建docker容器的,有很多官方現成的映像:node、mysql、monogo、nginx可以從遠端倉庫下載

容器:可以比擬成一個迷你的系統,例如一個只安裝mysql5.7的linux最小系統,當然你喜歡也可以把mysql、node安裝在同一個容器中,記住,容器與容器,容器和主機都是互相隔離的

倉庫:倉庫就像是github那樣的,我們可以製作鏡像然後push 提交到雲端的倉庫,也可以從倉庫pull 下載鏡像

3 安裝

# docker的安裝很簡單,win、osx都是圖形介面安裝,linux的也幾行命令,現在的mac的m1晶片系列也支援了,這裡我們先略過安裝步驟,要快!先看完!

ps:在m1晶片的docker上安裝mysql需要稍加點配置

安裝好運行下方程式碼查看

docker -v

4 實戰:部署vue2和vue3專案

安裝好docker後,我們現在來實戰了,搓搓手

我們要讓電腦同時運行nodejs10和nodejs12多個版本

ps: 咱先快速入門,我們暫時先把不同版本的mysql安裝放一邊哈

4.1 準備vue2 、 vue3項目

先跟著一起做,咱後面再解釋

#現在新建一個檔案放我們的專案:命名為:my-repository

#安裝vue2 webpack專案

# 0 命令行进入到该文件夹的位置: 
cd /你的电脑具体的文件路径/my-repository

# 1.现在安装vue-cli
npm install -g @vue/cli

# 2.查看vue-cli安装成功否
vue --version
#我这里是@vue/cli 4.5.15

# 3. 用vue-cli快速创建项目,安装选项我们如下
# > ❯ Default ([Vue 2] babel, eslint) 
# > ❯ npm包管理
vue create my-app-vue2

安裝vue3 vite專案

#先安装vite最新版npm init vite@latest# 创建vue3项目npm init vite@latest my-app-vue3 --template vue
//vite需要开启网络访问//vite.config.js 开启hostexport default defineConfig({
  plugins: [vue()],+  server: {+    host: '0.0.0.0',+  },});
#安装完成后我们的目录是这样的my-repository
├── my-app-vue2
│   ├── public
│   └── src
│       ├── assets
│       └── components
└── my-app-vue3
    ├── public
    └── src
        ├── assets
        └── components

4.2 创建运行docker容器

# 0 先进入我们刚才安装了vue项目的文件夹位置
cd my-repository

# 1 执行pwd可以获取当前文件夹在电脑的绝对目录
pwd
# /Users/eric/my-repository

# 2 运行创建docker容器1:承载 vue2+webpack+nodejs10
docker run -it -d --name myvue2 --privileged -p 8081:8080 -v  /Users/eric/my-repository/my-app-vue2:/app/vue node:10.16.2 /bin/bash -c "cd /app/vue && node -v && npm install && npm run serve"

# 3 运行创建docker容器2:承载 vue3+vite+nodejs12
docker run -it -d --name myvue3 --privileged -p 8080:3000 -v /Users/eric/my-repository/my-app-vue3:/app/vue node:12.22.6 /bin/bash -c "cd /app/vue && node -v && npm install && npm run dev"

#运行成功后 查看容器运行情况
docker ps -a

成功运行后会出现

讓人心動的docker快速入門指南(圖文詳解)

我们可以看到容器的启动状态、端口映射、容器名字

打开浏览器,我们访问localhost:8080localhost:8081可以看到

vue2 && vue3

如果出错可看下面第三点:[调试](###3 调试):运行如下命令查看原因

docker logs -f container_id/containe_name

上面那一坨docker run xxxxx 的代码到底是啥,现在我们就来捋顺

首先这个docker run 是可以用来创建同时启动运行容器

先换行来看 : shell 脚本太长的时候我们可以用 "\"把一行命令分成多行

docker run \
-it \
-d \ 
--name myvue2 \
--privileged \
-p 8081:8080 \
-v /Users/eric/my-repository/my-app-vue2:/app/vue \
node:10.16.2 \
/bin/bash -c "cd /app/vue2 && node -v && npm install && npm run serve"

这里我们使用 docker run 命令可以下载镜像 ->通过镜像创建容器 ->启动运行容器

参数解析

参数 描述
-d 以守护进程的方式让容器在后台运行,在这您之 前可能使用的是pm2来守护进程
-it 这里是 -i和 -t的缩写
-i:告诉 Docker 容器保持标准输入流对容器开放,即使容器没有终端连接
告诉 Docker 为容器分配一个虚拟终端
–name myvue2 将容器命名为 myvue2,这样访问和操作容 器等就不需要输入一大串的容器ID
–privileged 让容器的用户在容器内能获取完全root权限
-p 8081:8080 将容器的8080端口映射到宿主机的8081端口上
这样我们访问本机的localhost:8081,就是访问到容器的8080端口
因为容器都是独立运行互相隔离的,容器与容器各自的8080端口、容器跟主机各自的8080端口都不是一个东西,主机只有在这给端口做映射才能访问到容器端口
-v /Users/eric/my-repository/my-app-vue2:/app/vue 将主机的my-app-vue2目录(命令行这里只能写绝对路径哈)下的内容挂载到容器的目录/app/vue内,
如果容器的指定目录有文件/文件夹,将被清空
挂载后,容器修改 /app/vue目录的内容,也是在修改主机目录/Users/eric/my-repository/my-app-vue2内容
node:10.16.2 这里是指定nodejs,版本为10.16.2的镜像来创建容器
如果不指定版本,会默认下载当前镜像的最新版本
/bin/bash -c “cd /app/vue2 && node -v && npm install && npm run serve” /bin/bash:是在让容器分配的虚拟终端以 bash 模式执行命令
-c ""cd /app/vue2 && node -v && npm install && npm run serve:只能执行一条 shell 命令,需要多个命令按需用&&、

docker run的运行示意图

讓人心動的docker快速入門指南(圖文詳解)

上面代码运行成功后我们的电脑就会有两个互相隔离独立运行的docker容器

讓人心動的docker快速入門指南(圖文詳解)

4.3 调试

常用的调试命令 1

# 运行后按ctrl + c 可退出docker logs -f contianer_name/container_id

当然容器内正在进行编译或者发生错误甚至退出的时候,我们可用此命令查看终端输出的信息

运行成功后,查看myvue 容器的npm run serve 在终端上的实时输出信息

#查看docker container的终端输出信息 docker logs -f myvue2

常用的调试命令 2

# 打印出容器的端口映射、目录挂载、网络等等docker inspect myvue2

5 常用操作命令

常用的操作命令表一栏,需要先收藏

Docker 基础指令 中

镜像操作命令:

# 搜索镜像
docker search [images_name:tag]

# 下载镜像(:指定版本)
docker pull [images_name:tag]

# 查看本地下载的镜像
docker images

# 自己构建镜像
# 根据dockerfile的路径或者url构建镜像
 docker build [OPTIONS] PATH|URL|-

# 查看镜像的构建历史
docker history [images_name]

# 删除镜像
# 需要先删除以此镜像为基础的容器
 docker rmi [images_name]

容器操作命令

# 查看运行中的容器
# 可以查看容器ID、基础镜像、容器名称、运行状态、端口映射等
docker ps

# 查看所有容器:包括停止的
docker ps -a

# 查看容器的信息
# 例如端口号的映射、目录挂载
docker inspect [images_name/images_id]

# 启动和停止容器
docker start/stop [container_name/container_id]

#  重启容器
#  使用场景实例:
#  在加入新的npm包依赖需要重新编译的时候使用重启运行编译
#  nginx容器的配置更新后需要重启生效
docker restart [container_name/container_id]

# 进入容器
# ps:有些容器没有bash,需要改成/bin/sh,例如mysq、mongodb的
# 退出人容器输入exit 回车键
docker exec -it [container_name/container_id] /bin/bash

# 删除容器
# 在容器停止的状态才能删
docker rm [container_name/container_id]

# 容器主机文件拷
# 将容器文件拷贝到主机
docker cp [container_id/container_name] : [文件目录] [主机目录]

# 将主机的目录拷贝到容器
docker cp [主机目录] [container_id/container_name] : [文件目录]

6 进阶

如果没有合适的镜像,我们通常用Dockerfile来构建自定义镜像

发现没,上面的docker run 只能创建启动一个docker容器,我们可以用docker-compose来一次启动多个容器,常用于单机下安装多个服务

慢点再来更新,大家有兴趣也可以先看到我用docker 部署的Jenkins自动化部署 CI/CD 环境 里面也有docker-compose的使用

讓人心動的docker快速入門指南(圖文詳解)

推荐学习:《docker视频教程

以上是讓人心動的docker快速入門指南(圖文詳解)的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文轉載於:CSDN。如有侵權,請聯絡admin@php.cn刪除
Docker和Kubernetes:集裝箱編排的力量Docker和Kubernetes:集裝箱編排的力量May 02, 2025 am 12:06 AM

Docker和Kubernetes通過容器編排提升應用部署和管理效率。 1.Docker通過Dockerfile構建鏡像並運行容器,確保應用一致性。 2.Kubernetes通過Pod、Deployment和Service管理容器,實現自動化部署和擴展。

Docker vs. Kubernetes:主要差異和協同作用Docker vs. Kubernetes:主要差異和協同作用May 01, 2025 am 12:09 AM

Docker和Kubernetes是容器化和編排的領軍者。 Docker專注於容器生命週期管理,適合小型項目;Kubernetes則擅長容器編排,適用於大規模生產環境。兩者結合可提升開發和部署效率。

Docker and Linux:完美的合作夥伴關係Docker and Linux:完美的合作夥伴關係Apr 30, 2025 am 12:02 AM

Docker和Linux是完美的搭配,因為它們可以簡化應用的開發和部署流程。 1)Docker利用Linux的namespaces和cgroups實現容器隔離和資源管理。 2)Docker容器比虛擬機更高效,啟動速度快,鏡像分層結構便於構建和分發。 3)在Linux上,Docker的安裝和使用非常簡單,只需幾條命令即可。 4)通過DockerCompose,可以方便地管理和部署多容器應用。

Docker vs. Kubernetes:決定使用哪個Docker vs. Kubernetes:決定使用哪個Apr 29, 2025 am 12:05 AM

Docker和Kubernetes的區別在於:Docker是容器化平台,適合小型項目和開發環境;Kubernetes是容器編排系統,適合大型項目和生產環境。 1.Docker簡化應用部署,適用於資源有限的小型項目。 2.Kubernetes提供自動化和擴展能力,適用於需要高效管理的大型項目。

Docker和Kubernetes:構建可擴展應用程序Docker和Kubernetes:構建可擴展應用程序Apr 28, 2025 am 12:18 AM

使用Docker和Kubernetes可以構建可擴展的應用。 1)使用Dockerfile創建容器鏡像,2)通過kubectl命令部署Kubernetes的Deployment和Service,3)使用HorizontalPodAutoscaler實現自動擴展,從而構建高效、可擴展的應用架構。

Kubernetes和Docker:比較分析Kubernetes和Docker:比較分析Apr 27, 2025 am 12:05 AM

Docker和Kubernetes的主要區別在於:Docker用於容器化,Kubernetes用於容器編排。 1.Docker提供一致的環境來開發、測試和部署應用,通過容器實現隔離和資源限制。 2.Kubernetes管理容器化應用,提供自動化部署、擴展和管理功能,支持負載均衡和自動伸縮。兩者結合使用能提升應用的部署和管理效率。

在Linux上運行Docker:安裝和配置在Linux上運行Docker:安裝和配置Apr 26, 2025 am 12:12 AM

在Linux上安裝和配置Docker需要確保系統為64位且內核版本3.10及以上,使用命令“sudoapt-getupdate&&sudoapt-getinstalldocker-cedocker-ce-clicontainerd.io”安裝,並用“sudodockerrunhello-world”驗證。 Docker利用Linux內核的命名空間和控制組實現容器隔離和資源限制,鏡像是只讀模板,容器可進行修改。使用示例包括運行Nginx服務器和自定義Dockerfile創建鏡像。常見

為什麼要使用Docker?解釋的好處和優勢為什麼要使用Docker?解釋的好處和優勢Apr 25, 2025 am 12:05 AM

使用Docker的原因是它提供高效、便攜且一致的環境來打包、分發和運行應用程序。 1)Docker是一種容器化平台,允許開發者將應用程序及其依賴項打包到輕量級、可移植的容器中。 2)它基於Linux容器技術和聯合文件系統,確保快速啟動和高效運行。 3)Docker支持多階段構建,優化鏡像大小和部署速度。 4)使用Docker可以簡化開發和部署流程,提高效率並確保跨環境的一致性。

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

VSCode Windows 64位元 下載

VSCode Windows 64位元 下載

微軟推出的免費、功能強大的一款IDE編輯器

SublimeText3 英文版

SublimeText3 英文版

推薦:為Win版本,支援程式碼提示!

MantisBT

MantisBT

Mantis是一個易於部署的基於Web的缺陷追蹤工具,用於幫助產品缺陷追蹤。它需要PHP、MySQL和一個Web伺服器。請查看我們的演示和託管服務。

Atom編輯器mac版下載

Atom編輯器mac版下載

最受歡迎的的開源編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用