一、导语
二、安装
2.1 安装docker
2.2 安装node.js
指定node版本和映射端口
docker run -itd --name node_pigx -p 8080:8080 node:14
也可以不指定,不映射
docker run -itd --name node_pigx node
2.3 安装VScode
2.4 安装插件:Docker、Remote - Containers
(Microsoft开发的所有Remote开头的插件都值得安装)
之后就可以“远程”开发运行在docker里的Vue工程了
2.5 注意事项:Containers重启自动重置/etc/
docker 每次启动都会重置 /etc/下的文件,所以如果需要修改hosts就很麻烦,所以可以写一个脚本,重启后执行一下
#!/bin/bash
#docker重启后,/etc/hosts会自动重置
echo '192.168.43.133 pig-mysql
192.168.43.133 pig-redis
192.168.43.133 pig-gateway
192.168.43.133 pig-register
192.168.43.133 pig-sentinel
192.168.43.133 pig-monitor
192.168.43.133 pig-job' >> /etc/hosts
Containers的备份、迁移与恢复
.0. Docker命令大全(手册)
生命周期管理:run
、start
、stop
、restart
、kill
、rm
、pause
、unpause
、create
、exec
容器操作:ps
、inspect
、top
、attach
、events
、logs
、wait
、export
、port
rootfs命令:commit
、cp
、diff
镜像仓库:login
、pull
、push
、search
本地镜像管理:images
、rmi
、tag
、build
、history
、save
、load
、import
其它:info
、version
.1. 查看容器(获取ID)ps
docker ps -a
-a :显示所有的容器,包括未运行的。
-f :根据条件过滤显示的内容。
–format :指定返回值的模板文件。
-l :显示最近创建的容器。
-n :列出最近创建的n个容器。
–no-trunc :不截断输出。
-q :静默模式,只显示容器编号。
-s :显示总的文件大小。
.2. 提交镜像(打包容器)commit
docker commit -p 4fedda0913e4 node_pigx_backup:v1
-a :提交的镜像作者;
-c :使用Dockerfile指令来创建镜像;
-m :提交时的说明文字;
-p :在commit时,将容器暂停。
.3. 查看镜像(是否提交成功)images
docker images node_pigx_backup:v1
-a :列出本地所有的镜像(含中间映像层,默认情况下,过滤掉中间映像层);
–digests :显示镜像的摘要信息;
-f :显示满足条件的镜像;
–format :指定返回值的模板文件;
–no-trunc :显示完整的镜像信息;
-q :只显示镜像ID。
.4. 导出镜像(到本地目录)save
参数版(推荐)
docker save [image] -o file.tar
docker load -i file.tar
STDOUT版
docker save [image] > file.tar
docker load < file.tar
示例
docker save node_pigx_backup > /Users/allen/Downloads/node_pigx_backup.tar
docker save -o node_pigx_backup_v1.tar node_pigx_backup:v1
.5. 恢复镜像(导入)load
Mac
docker load < /Users/allen/Downloads/node_pigx_backup.tar
Windows
docker load -i D:\node_pigx_v1.tar
.6. 运行容器run
docker run -itd --name node_pigx_test -p 8080:8080 node_pigx_backup
-a stdin: 指定标准输入输出内容类型,可选 STDIN/STDOUT/STDERR 三项;
-d: 后台运行容器,并返回容器ID;
-i: 以交互模式运行容器,通常与 -t 同时使用;
-P: 随机端口映射,容器内部端口随机映射到主机的端口
-p: 指定端口映射,格式为:主机(宿主)端口:容器端口
-t: 为容器重新分配一个伪输入终端,通常与 -i 同时使用;
–name=“nginx-lb”: 为容器指定一个名称;
–dns 8.8.8.8: 指定容器使用的DNS服务器,默认和宿主一致;
–dns-search example.com: 指定容器DNS搜索域名,默认和宿主一致;
-h “mars”: 指定容器的hostname;
-e username=“ritchie”: 设置环境变量;
–env-file=[]: 从指定文件读入环境变量;
–cpuset=“0-2” or --cpuset=“0,1,2”: 绑定容器到指定CPU运行;
-m :设置容器使用内存最大值;
–net=“bridge”: 指定容器的网络连接类型,支持 bridge/host/none/container: 四种类型;
–link=[]: 添加链接到另一个容器;
–expose=[]: 开放一个端口或一组端口;
–volume , -v: 绑定一个卷
.7. 删除镜像(可选)rmi
docker rmi node_pigx_backup
-f :强制删除;
–no-prune :不移除该镜像的过程镜像,默认移除;
.8. 实战记录
❯ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
e4de287c4f60 node_pigx_backup:latest "docker-entrypoint.s…" 56 minutes ago Up 56 minutes 0.0.0.0:8080->8080/tcp node_pigx_backup
4fedda0913e4 node:14 "docker-entrypoint.s…" 27 hours ago Exited (137) 57 minutes ago node_pigx
bbdf89b34f2e redis "docker-entrypoint.s…" 28 hours ago Up 28 hours 0.0.0.0:6379->6379/tcp, :::6379->6379/tcp redis_pigx
0b25e070ad4e mysql "docker-entrypoint.s…" 29 hours ago Up 29 hours 0.0.0.0:3306->3306/tcp, :::3306->3306/tcp, 33060/tcp mysql_pigx
7be7dd97b222 mysql:5.6 "docker-entrypoint.s…" 8 months ago Exited (0) 29 hours ago mysql5.6
~
❯ docker commit -p 0b25e070ad4e mysql_pigx:v1
sha256:94172e7d2bf21d973aa8d0d069ee9f69a8950823fb28351765ddf47d1012ae37
~
❯ docker save mysql_pigx:v1 > /Users/allen/Downloads/mysql_pigx_v1.tar
~ took 10s
❯ docker commit -p bbdf89b34f2e redis_pigx:v1
sha256:e0c4039472bad882163629c85eb462950bb59e47d575233cd0dac65407eafcb4
~
❯ docker save redis_pigx:v1 > /Users/allen/Downloads/redis_pigx_v1.tar
~ took 2s
❯ docker commit -p 4fedda0913e4 node_pigx:v1
sha256:f3bbc1f7a8b3a5f5e386f8bdadbffde86f23d55035c46612c44fec6c794d0d9d
~ took 20s
❯ docker save node_pigx:v1 > /Users/allen/Downloads/node_pigx_v1.tar
~ took 41s
❯