Rumah > Artikel > Operasi dan penyelenggaraan > Panduan permulaan pantas yang menarik untuk docker (penjelasan grafik dan teks terperinci)
Artikel ini membawakan anda pengetahuan yang berkaitan tentang bermula dengan docker dengan cepat, termasuk arahan operasi biasa, arahan operasi imej, arahan operasi kontena dan isu lain yang berkaitan saya harap ia akan membantu anda.
Sekarang 2022, mari luangkan masa untuk belajar dok di hadapan -berakhir tanpa mengalami apa-apa keburukan Jangan tertipu
Adakah anda belum belajar tentang docker lagi. Mari kita simulasikan beberapa senario dan fikirkan untuk anda apa itu dan bila kita memerlukannya dalam masa dua minit
Ikuti kami Gunakan baki tujuh atau lapan minit untuk menggunakan docker untuk menggunakan kedua-dua projek vue2 dan vue3 pada masa yang sama Ya, ia sangat pantas!
Simulasi Senario 1: Bersendirian
Anda bekerja keras dalam syarikat dan dikenali dengan cepat oleh ketua Hari ini Dia bertanya anda untuk mengambil alih projek baharu berikut Anda perlu memasangnya pada komputer anda
Jika anda arif, anda akan mendapati terdapat pelbagai versi nodejs dan mysql : Tidak mengapa, ianya remeh bagi saya
Simulasi Senario 2: Berbilang Mesin
Pada masa ini, syarikat itu mempunyai 3 pelatih hadapan dan pendatang baharu, dan keperluan kepimpinan Anda juga boleh memasang projek ini untuk mereka jalankan pada komputer tempatan mereka
Disebabkan sejarah syarikat dan sebab lain, buat masa ini, mereka hanya boleh dilengkapi dengan komputer dengan sistem pengendalian yang berbeza: win7, win10, OSX, dsb.
Kini anda perlu memasang projek ini pada sistem pengendalian yang berbeza bagi beberapa komputer Lihat gambar
Anda akan mendapati bahawa. kepala anda kini lebih besar daripada Dua yang besar
“Pemasangan menyusahkan dan memakan masa apabila orang baharu bekerja pada projek, mereka perlu bertukar kepada versi yang sepadan untuk projek yang berbeza, yang mana juga mencemarkan persekitaran tuan rumah dan juga menyebabkan pencemaran kepada tuan rumah, dan apabila saya memikirkan lebih banyak projek yang akan dijalankan pada masa hadapan, sesetengah orang mungkin sudah mahu melarikan diri."
Selepas itu. kerja keras dan pemasangan, melihat betapa hebatnya anda, pemimpin meminta anda untuk bekerja semula Sebarkan projek ini pada dua pelayan kecil di intranet syarikat untuk mewujudkan persekitaran pembangunan dan ujian awam Oh, kedua-dua pelayan ini adalah Linux untuk memulakan Baidu's How to Install Node dan MySQL pada Linux? Dan anda masih perlu memasang berbilang versi. Bagaimana jika sistem Linux kedua-dua pelayan berbeza?
Kini giliran anda untuk membawa baldi
3 docker muncul
Jangan panik, docker muncul sekarang, ia boleh membantu anda Melancarkan perbezaan dalam pemasangan aplikasi antara sistem yang berbeza
Tunggu, mengapa tidak menggunakan mesin maya?
Oleh kerana mesin maya dimulakan dengan perlahan, menggunakan banyak sumber dan menggunakan banyak sumber, penghijrahan/pengembangan pada sistem yang berbeza adalah lebih rumit
Tetapi docker tidak boleh melakukannya. Ia bermula dalam beberapa saat dan menggunakan banyak sumber Ia mempunyai sedikit sumber, tidak wangi dan mudah untuk disalin merentas platform
Selepas menulis konfigurasi, ia boleh memasang versi nodej, msyql, nginx yang berbeza. , dsb. pada komputer pada masa yang sama dengan satu arahan, dan ia boleh diasingkan antara satu sama lain dan dijalankan secara berasingan pada masa yang sama, anda tidak perlu bertukar ke sana ke mari secara manual
Masalah di atas telah diselesaikan dengan mudah. Sekarang adakah anda berminat dengan docker?
Sekarang mari kita mulakan Mari belajar tentang asas docker
Docker terbahagi kepada beberapa konsep: imej, kontena, gudang
Imej : Ia seperti cakera sistem atau sistem yang kita perlukan semasa memasang fail Imej, di sini ia bertanggungjawab untuk mencipta bekas docker imej siap sedia: nod, mysql, monogo, nginx boleh dimuat turun dari gudang jauh
Bekas: boleh dibandingkan dengan Sistem mini, contohnya, sistem Linux minimum dengan hanya mysql5.7 sudah tentu, anda juga boleh memasang mysql dan nod dalam bekas yang sama jika anda suka, bekas dan bekas, bekas dan hos semuanya diasingkan antara satu sama lain
Gudang: Gudang adalah seperti github Kita boleh membuat imej dan menolaknya ke gudang awan, atau kita boleh menarik dari gudang untuk memuat turun imej
3 Pemasangan Pemasangan docker adalah sangat mudah. Kedua-dua win dan osx dipasang dengan antara muka grafik Linux juga mempunyai beberapa baris perintah Sekarang siri cip m1 juga menyokongnya. Baca dulu! ps: Memasang mysql pada docker cip m1 memerlukan sedikit konfigurasi Pasang dan jalankan kod di bawah untuk melihatdocker -v4 Pertempuran praktikal: gunakan vue2 dan projek vue3 Selepas memasang docker, mari kita mulakan pertempuran sebenar sekarang dan gosok tangan kita bersamaKami mahu komputer menjalankan berbilang versi nodejs10 dan nodejs12 pada masa yang sama
Sekarang buat fail baharu untuk meletakkan projek kami:Pasang projek webpack vue2repositori saya
Pasang projek 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
# 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
成功运行后会出现
我们可以看到容器的启动状态、端口映射、容器名字
打开浏览器,我们访问localhost:8080和localhost:8081可以看到
如果出错可看下面第三点:[调试](###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容器
常用的调试命令 1
# 运行后按ctrl + c 可退出docker logs -f contianer_name/container_id
当然容器内正在进行编译或者发生错误甚至退出的时候,我们可用此命令查看终端输出的信息
运行成功后,查看myvue 容器的npm run serve 在终端上的实时输出信息
#查看docker container的终端输出信息 docker logs -f myvue2
常用的调试命令 2
# 打印出容器的端口映射、目录挂载、网络等等docker inspect myvue2
常用的操作命令表一栏,需要先收藏
# 搜索镜像 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] : [文件目录]
如果没有合适的镜像,我们通常用Dockerfile来构建自定义镜像
发现没,上面的docker run
只能创建启动一个docker容器,我们可以用docker-compose
来一次启动多个容器,常用于单机下安装多个服务
慢点再来更新,大家有兴趣也可以先看到我用docker 部署的Jenkins自动化部署 CI/CD 环境 里面也有docker-compose的使用
推荐学习:《docker视频教程》
Atas ialah kandungan terperinci Panduan permulaan pantas yang menarik untuk docker (penjelasan grafik dan teks terperinci). Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!