自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

我們一起聊聊Docker從入門(mén)到部署項(xiàng)目

云計(jì)算 云原生
通過(guò)容器可以實(shí)現(xiàn)方便快速并且與平臺(tái)解耦的自動(dòng)化部署方式,無(wú)論你部署時(shí)的環(huán)境如何,容器中的應(yīng)用程序都會(huì)運(yùn)行在同一種環(huán)境下。并且它是完全使用沙箱機(jī)制,相互之間是隔離的,更重要的是容器性能開(kāi)銷(xiāo)極低。

Docker概念

Docker是一個(gè)開(kāi)源的應(yīng)用容器引擎,它是基于Go語(yǔ)言并遵從Apache2.0協(xié)議開(kāi)源。Docker可以讓開(kāi)發(fā)者打包他們的應(yīng)用以及依賴(lài)包到一個(gè)輕量級(jí)、可移植的容器中,然后發(fā)布到任何流行的linux機(jī)器上,也可以實(shí)現(xiàn)虛擬化。通過(guò)容器可以實(shí)現(xiàn)方便快速并且與平臺(tái)解耦的自動(dòng)化部署方式,無(wú)論你部署時(shí)的環(huán)境如何,容器中的應(yīng)用程序都會(huì)運(yùn)行在同一種環(huán)境下。并且它是完全使用沙箱機(jī)制,相互之間是隔離的,更重要的是容器性能開(kāi)銷(xiāo)極低。

Docker 作為輕量級(jí)虛擬化技術(shù),擁有持續(xù)集成、版本控制、可移植性、隔離性和安全性等優(yōu)勢(shì)。

Docker從17.03版本之后分為「CE(Community Edition:社區(qū)版)」和「EE(Enterprise Edition:企業(yè)版)」

「docker是一種容器技術(shù),它主要是用來(lái)解決軟件跨環(huán)境遷移的問(wèn)題」

安裝Docker

Docker可以運(yùn)行在Mac, Windows, linux等操作系統(tǒng)上

以Mac為例

使用Homebrew安裝

brew install --cask docker

桌面版安裝

除了使用終端外,它還可以使用桌面版,操作更方便

如果需要手動(dòng)下載,請(qǐng)點(diǎn)擊以下 鏈接 下載 Docker Desktop for Mac。

檢測(cè)是否安裝成功

docker -v

圖片圖片

嘗試運(yùn)行一個(gè)Nginx服務(wù)器

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

圖片圖片

當(dāng)本地沒(méi)找到nginx鏡像時(shí),它會(huì)去遠(yuǎn)程倉(cāng)庫(kù)中拉取,服務(wù)運(yùn)行后,就可以通過(guò)localhost來(lái)訪問(wèn)了

圖片圖片

鏡像加速

如果在使用過(guò)程中發(fā)現(xiàn)拉取鏡像十分緩慢,那是因?yàn)閐ocker服務(wù)器是在國(guó)外的,但我們可以通過(guò)配置docker國(guó)內(nèi)鏡像來(lái)進(jìn)行加速

鏡像加速器

鏡像加速器地址

Docker 中國(guó)官方鏡像

https://registry.docker-cn.com

DaoCloud 鏡像站

http://f1361db2.m.daocloud.io

Azure 中國(guó)鏡像

https://dockerhub.azk8s.cn

科大鏡像站

https://docker.mirrors.ustc.edu.cn

阿里云

https://ud6340vz.mirror.aliyuncs.com

七牛云

https://reg-mirror.qiniu.com

網(wǎng)易云

https://hub-mirror.c.163.com

騰訊云

https://mirror.ccs.tencentyun.com

在任務(wù)欄點(diǎn)擊 Docker Desktop 應(yīng)用圖標(biāo) -> Settings...,在左側(cè)導(dǎo)航菜單選擇 Docker Engine,在右側(cè)像下邊一樣編輯 json 文件。

{
  "registry-mirrors": [
    "https://registry.docker-cn.com",
    "https://hub-mirror.c.163.com"
  ]
}

修改完成之后,點(diǎn)擊 Apply & restart 按鈕,Docker 就會(huì)重啟并應(yīng)用配置的鏡像地址了。

配置完可以執(zhí)行docker info檢查加速器是否生效

docker info

圖片圖片

Docker三要素

圖片圖片

鏡像(image)

「Docker 鏡像」 是一個(gè)特殊的文件系統(tǒng),除了提供容器運(yùn)行時(shí)所需的程序、庫(kù)、資源、配置等文件外,還包含了一些為運(yùn)行時(shí)準(zhǔn)備的一些配置參數(shù)(如匿名卷、環(huán)境變量、用戶(hù)等)。鏡像 「不包含」 任何動(dòng)態(tài)數(shù)據(jù),其內(nèi)容在構(gòu)建之后也不會(huì)被改變。

容器(container)

鏡像(Image)和容器(Container)的關(guān)系,就像是面向?qū)ο蟪绦蛟O(shè)計(jì)中的 類(lèi) 和 實(shí)例 一樣,鏡像是靜態(tài)的定義,容器是鏡像運(yùn)行時(shí)的實(shí)體。容器可以被創(chuàng)建、啟動(dòng)、停止、刪除、暫停等。

簡(jiǎn)單理解就是「容器是鏡像的一個(gè)運(yùn)行實(shí)例。當(dāng)我們運(yùn)行一個(gè)鏡像,就創(chuàng)建了一個(gè)容器?!?/p>

倉(cāng)庫(kù)(repository)

鏡像構(gòu)建完成后,可以很容易的在當(dāng)前宿主機(jī)上運(yùn)行,但是,如果需要在其它服務(wù)器上使用這個(gè)鏡像,我們就需要一個(gè)集中的存儲(chǔ)、分發(fā)鏡像的服務(wù),Docker Registry 就是這樣的服務(wù)。

使用鏡像

拉取鏡像

在Docker Hub 上有大量的高質(zhì)量的鏡像可以用,我們可以使用docker pull從鏡像倉(cāng)庫(kù)中拉取對(duì)應(yīng)的鏡像。

格式為:

docker pull [選項(xiàng)] [docker Registry 地址[:端口號(hào)]/]倉(cāng)庫(kù)名[:標(biāo)簽]

具體的選項(xiàng)可以通過(guò) docker pull --help 命令看到,這里我們說(shuō)一下鏡像名稱(chēng)的格式。

  • Docker 鏡像倉(cāng)庫(kù)地址:地址的格式一般是 <域名/IP>[:端口號(hào)]。默認(rèn)地址是 Docker Hub(docker.io)。
  • 倉(cāng)庫(kù)名:這里的倉(cāng)庫(kù)名是兩段式名稱(chēng),即 <用戶(hù)名>/<軟件名>。對(duì)于 Docker Hub,如果不給出用戶(hù)名,則默認(rèn)為 library,也就是官方鏡像。

比如拉取一個(gè)node鏡像:

docker pull node:18-alpine

圖片圖片

這里我們拉取鏡像的時(shí)候只是給出了鏡像名稱(chēng)(倉(cāng)庫(kù)名+標(biāo)簽)也就是node:18-alpine,并沒(méi)有給出Docker鏡像的倉(cāng)庫(kù)地址,所以它會(huì)從默認(rèn)地址docker.io拉取鏡像

從上圖我們可以看到docker pull 命令的輸出結(jié)果給出了鏡像的完整名稱(chēng),即:docker.io/library/node:18-alpine。

查看鏡像

如果想要查看本地已經(jīng)下載的鏡像,可以使用docker image ls命令

圖片圖片

列表包含了 倉(cāng)庫(kù)名、標(biāo)簽、鏡像 ID、創(chuàng)建時(shí)間 以及 所占用的空間。

當(dāng)然也可以在docker桌面端中直接查看:

圖片圖片

刪除鏡像

如果想要?jiǎng)h除本地鏡像,可以使用docker image rm命令

格式為:

docker image rm [選項(xiàng)] <鏡像1> [<鏡像2>...]

其中,<鏡像> 可以是 鏡像短 ID、鏡像長(zhǎng) ID、鏡像名 或者 鏡像摘要。

比如刪除我們剛拉取的node鏡像

docker image rm node:18-alpine

如果想批量刪除鏡像可以使用docker image ls -q來(lái)配合使用docker image rm

比如,我們需要?jiǎng)h除所有倉(cāng)庫(kù)名為 redis 的鏡像:

docker image rm $(docker image ls -q redis)

或者刪除所有在 mongo:3.2 之前的鏡像:

docker image rm $(docker image ls -q -f before=mongo:3.2)

更多指令可通過(guò)docker image --help查看

操作容器

查看容器

查看正在運(yùn)行的容器:

docker ps

查看所有容器

docker ps -a

啟動(dòng)容器

啟動(dòng)容器一般有兩種情況:

  • 基于鏡像新建一個(gè)容器并啟動(dòng)
  • 將已有的終止?fàn)顟B(tài)(exited)的容器重新啟動(dòng)

新建并啟動(dòng)

使用的命令是docker run

docker run -it node

參數(shù)說(shuō)明:

  • -i:交互式操作
  • -t:終端
  • node:node鏡像

啟動(dòng)終止?fàn)顟B(tài)的容器

首先查看所有的容器

docker ps -a

圖片

然后可以使用docker start啟動(dòng)一個(gè)停止的容器

docker start 7e7ff4af478f

重啟容器

docker restart a03b0445b82d

后臺(tái)運(yùn)行

大部分情況下,我們都希望docker是在后臺(tái)運(yùn)行的,這里可以通過(guò)-d指定容器的運(yùn)行模式

docker run -d node:latest

停止容器

停止容器命令如下

docker stop <容器 id>

先查看所有容器

圖片圖片

再停止容器

docker stop 3c275da2f36d

圖片圖片

進(jìn)入容器

當(dāng)我們使用-d參數(shù)時(shí),容器啟動(dòng)會(huì)進(jìn)入后臺(tái),此時(shí)想要進(jìn)入容器可以通過(guò)以下指令:

「exec」(推薦使用)

docker exec -it a03b0445b82d /bin/bash

圖片圖片

「注意:」 如果從這個(gè)容器退出,容器不會(huì)停止,這就是為什么推薦大家使用 「docker exec」 的原因。

「attach」(不推薦使用)

docker attach a03b0445b82d

「注意:」 如果從這個(gè)容器退出,會(huì)導(dǎo)致容器的停止。

刪除容器

刪除容器可以使用docker rm命令

docker rm a03b0445b82d

如果想要?jiǎng)h除所有終止?fàn)顟B(tài)的容器可以使用以下指令:

docker container prune

小試牛刀(部署一個(gè)前端項(xiàng)目)

首先準(zhǔn)備一個(gè)vue項(xiàng)目,在項(xiàng)目根路徑下添加Dockerfile文件

編寫(xiě)Dockerfile

# 指定node鏡像
FROM node:16-alpine as builder

# 指定工作目錄
WORKDIR /code

# 代碼復(fù)制到容器中
ADD . /code

# 安裝依賴(lài)
RUN npm install --registry=https://registry.npm.taobao.org

# 打包
RUN npm run build

# RUN ls

# 指定nginx鏡像
FROM nginx:latest

# 復(fù)制打包后的代碼到nginx容器中
COPY --from=builder /code/dist /usr/share/nginx/html

# 暴露端口
EXPOSE 80

打包鏡像

docker build -t web-nanjiu .

圖片圖片

啟動(dòng)容器

在鏡像打包完成之后,我們可以使用該鏡像來(lái)啟動(dòng)一個(gè)容器

docker run -itd -p 0.0.0.0:9090:80 web-nanjiu

這里的-p表示將容器的端口映射到宿主機(jī)的端口,這里的宿主機(jī)也就是我們本地了

前面的0.0.0.0:9090表示宿主機(jī)端口

后面的80表示容器的端口

啟動(dòng)完我們直接使用http://localhost:9090/進(jìn)行訪問(wèn)

圖片圖片

當(dāng)看到這個(gè)頁(yè)面時(shí)就代表docker部署成功了

當(dāng)然你也可以使用docker ps查看此時(shí)正在運(yùn)行的容器

圖片圖片

責(zé)任編輯:武曉燕 來(lái)源: 前端南玖
相關(guān)推薦

2023-08-04 08:20:56

DockerfileDocker工具

2024-07-26 09:47:28

2021-11-09 23:54:19

開(kāi)發(fā)SMI Linkerd

2024-05-29 12:53:30

2022-05-24 08:21:16

數(shù)據(jù)安全API

2023-08-10 08:28:46

網(wǎng)絡(luò)編程通信

2023-09-10 21:42:31

2023-06-30 08:18:51

敏捷開(kāi)發(fā)模式

2021-08-27 07:06:10

IOJava抽象

2024-02-20 21:34:16

循環(huán)GolangGo

2022-02-23 08:41:58

NATIPv4IPv6

2022-09-22 08:06:29

計(jì)算機(jī)平板微信

2024-11-28 09:57:50

C#事件發(fā)布器

2022-10-08 00:00:05

SQL機(jī)制結(jié)構(gòu)

2023-03-26 23:47:32

Go內(nèi)存模型

2023-07-24 09:41:08

自動(dòng)駕駛技術(shù)交通

2021-08-12 07:49:24

mysql

2022-06-26 09:40:55

Django框架服務(wù)

2022-02-14 07:03:31

網(wǎng)站安全MFA

2022-10-28 07:27:17

Netty異步Future
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)