一、导语

二、安装

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工程了

容易进行二次开发的docker管理工具是 docker 二次开发_mysql


容易进行二次开发的docker管理工具是 docker 二次开发_redis_02

2.5 注意事项:Containers重启自动重置/etc/

docker 每次启动都会重置 /etc/下的文件,所以如果需要修改hosts就很麻烦,所以可以写一个脚本,重启后执行一下

容易进行二次开发的docker管理工具是 docker 二次开发_docker_03

#!/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命令大全(手册)

生命周期管理:runstartstoprestartkillrmpauseunpausecreateexec 容器操作:psinspecttopattacheventslogswaitexportport rootfs命令:commitcpdiff 镜像仓库:loginpullpushsearch 本地镜像管理:imagesrmitagbuildhistorysaveloadimport 其它:infoversion

.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 
❯