10 минут до Docker в кратком руководстве по началу работы с интерфейсом пользователя

внешний интерфейс Docker
10 минут до Docker в кратком руководстве по началу работы с интерфейсом пользователя

10 минут до Docker в кратком руководстве по началу работы с интерфейсом пользователя

На дворе 2022 год, давайте потратим немного времени на то, чтобы изучить докер во внешнем интерфейсе, и нас не обманут

Еще не разобрались с докером, не беда, давайте смоделируем несколько сценариев и за две минуты разберемся, что это такое и когда оно нам нужно

Затем мы используем оставшиеся семь или восемь минут, чтобы использовать докер для одновременного развертывания двух проектов vue2 и vue3, да, это так быстро!

1 Что такое докер

Сценарий 1: автономный

Вы старательны и старательны в компании и быстро признаны руководителем.Сегодня он попросил вас взять на себя следующие новые проекты.Нужно установить их на собственный компьютер.

single

Как видите, есть несколько разных версий nodejs и mysql: окей, для меня это тривиально

Сценарий 2: несколько компьютеров

На данный момент в компании есть 3 новых стажера и новые люди.Лидер хочет, чтобы вы установили эти проекты, чтобы они могли работать на локальном компьютере.

В связи с историей компании и другими причинами, в настоящее время их можно настроить только для компьютеров с разными операционными системами: win7, win10, OSX и т. д.

Теперь вам нужно установить эти проекты на разные операционные системы нескольких компьютеров, смотрите картинку

multi

Вы остроумны и обнаруживаете, что одна из ваших голов теперь больше двух

«Установка хлопотная и трудоемкая. Когда новичок работает над проектом, ему приходится переключать подходящую версию для разных проектов. Легко сделать ошибки, что также загрязняет среду хоста. Это также загрязняет хост Другие проекты будут делать это, и некоторые люди, возможно, уже хотят убежать в это время».

После завершения жесткой установки, видя, насколько вы сильны, руководитель просит вас развернуть эти проекты на двух небольших серверах во внутренней сети компании в качестве общедоступной среды разработки и тестирования. О, эти два сервера — Linux. готовы начать, как Baidu устанавливает node и mysql в linux? И вам нужно установить несколько версий. Что, если системы Linux на двух серверах разные?

Теперь твоя очередь нести ведро.

3 внешний вид докера

Не паникуйте, в это время выходит докер, он может помочь вам сгладить различия в установке приложений разных систем

multi-docker

Подождите, так почему бы не использовать виртуальную машину?

Поскольку виртуальная машина запускается медленно, потребляет много ресурсов и занимает много ресурсов, миграция/расширение на разных системах усложняется.

А докер — нет: он запускается за считанные секунды, требует меньше ресурсов, имеет «аромат» и легко воспроизводится на разных платформах.

После написания конфигурации он устанавливает на компьютер одновременно одной командой разные версии nodej, msyql, nginx и т.д., и запускается самостоятельно и независимо друг от друга, в это время не нужно переключаться обратно и далее вручную.

Вышеупомянутая проблема не решается легко?

2 основы докера

Теперь давайте начнем разбираться с основами докера.

Докер делится на несколько понятий: образ, контейнер, склад

зеркало: Это как бы системный диск или файл образа системы, который нам нужен при установке машины. Здесь он отвечает за создание контейнера докеров. Есть много официальных готовых образов: node, mysql, monogo, nginx можно скачать с пульта склад

контейнер: его можно сравнить с мини-системой, такой как минимальная система Linux, которая устанавливает только mysql5.7. Конечно, вы также можете установить mysql и node в одном контейнере, если хотите. Помните **, контейнер и контейнер, контейнер и хост изолированы друг от друга**

склад: Репозиторий похож на github.Мы можем сделать образ и затем отправить его в облачный репозиторий, или вытащить и загрузить образ из репозитория.

3 Установка

Установка докера очень проста.И win, и osx устанавливаются на графический интерфейс.Linux также имеет несколько строк команд.Теперь также поддерживается серия чипов m1 для Mac.Здесь мы сначала пропустим этапы установки,поторопитесь! Смотрите сначала!

ps: установка mysql на докер чипа m1 требует небольшой настройки

После установки запустите следующий код, чтобы просмотреть

docker -v

4 Актуальный бой: развертывание проектов vue2 и vue3

После установки докера, давайте перейдем к самому бою, потираем руки

Мы хотим, чтобы на компьютере одновременно запускались несколько версий 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 开启host
export 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 Создание и запуск докер-контейнера

# 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

появится после успешной операции

ps-a

Мы можем видеть статус запуска контейнера, сопоставление портов, имя контейнера

Открываем браузер, заходимlocalhost:8080иlocalhost:8081можно увидеть

vue2 && vue3

Если есть ошибка, см. третий пункт ниже: [Отладка](###3 Отладка): выполните следующую команду, чтобы проверить причину

docker logs -f container_id/containe_name

ком вышеdocker run xxxxxЧто такое код

Сначала этоdocker runможет использоваться для создания и запуска контейнеров одновременно

Сначала посмотрите на новую строку: когда сценарий оболочки слишком длинный, мы можем использовать «\», чтобы разделить строку команд на несколько строк.

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
-я:Скажите контейнеру Docker, чтобы стандартный входной поток оставался открытым для контейнера, даже если контейнер не имеет терминального соединения.
Скажите Docker, чтобы он назначил контейнеру виртуальный терминал.
--name myvue2 Назовите контейнер myvue2, чтобы вам не нужно было вводить длинный список идентификаторов контейнеров для доступа к контейнеру, управления им и т. д.
--privileged Разрешить пользователю контейнера получить полные привилегии root в контейнере
-p 8081:8080 Сопоставьте порт 8080 контейнера с портом 8081 хоста.
Таким образом, мы получаем доступ к локальному локальному хосту: 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: может быть выполнена только одна команда оболочки, если требуется несколько команд, используйте &&,

Принципиальная схема работы docker run

processon-run2

После успешного запуска приведенного выше кода на нашем компьютере будет два контейнера докеров, работающих независимо друг от друга.

docker-vue2-vue3

4.3 Отладка

Часто используемые команды отладки 1

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

Конечно, когда контейнер компилируется или возникает ошибка или даже выход, мы можем использовать эту команду для просмотра информации, выводимой терминалом.

🌰: после успешного запуска просмотрите в реальном времени информацию о выходе npm run serve контейнера myvue на терминале.

#查看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-composeДля одновременного запуска нескольких контейнеров часто используется установка нескольких служб на одном компьютере.

Я обновлю его позже.Если вам интересно, вы также можете увидеть, что я развернул с помощью докера.Jenkins автоматизирует развертывание сред CI/CDСуществует также использование docker-compose

progress-all-wechat-cover