就是将代码+环境一起打包,生成一个镜像的技术。简单理解:使用配置服务器非常方便
核心概念
https://hub.docker.com/镜像(像npm的包) node/mongo容器 通过镜像启动的应用就叫容器仓库(像npm的仓库)
一、安装Docker
curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyunsudo systemctl start docker //启动dockerdocker -v //查看版本号docker info //查看docker详情
二、镜像加速



vi /etc/docker/daemon.json // 配置加速地址文件{ "registry-mirrors": ["https://77e997d33aa54edfabd1d2591bfa89bc.mirror.swr.myhuaweicloud.com"]}
sudo systemctl daemon-reloadsudo systemctl restart docker
三、卸载Docker
# 查询安装的docker包 yum list installed | grep dockeryum remove docker-ce.x86_64 ddocker-ce-cli.x86_64 -yrm -rf /var/lib/docker
四、Docker镜像
docker pull mongo // 安装镜像docker images // 查看安装的镜像通过mongo这个镜像,-d在后台运行,运行了一个名字为myapp这样的容器,容器主机的10010端口,映射容器的27017这个端口-d表示后台运行。-p表示指定端口映射主机的10010端口 映射容器的27017这个端口docker run -d --name myapp -p 10010:27017 mongo // 启动mongo服务docker ps 查看正在运行的docker服务
五、运行服务
docker run -d --name myapp -p 10010:27017 mongo // 启动mongo服务docker ps 查看正在运行的docker服务docker exec -it myapp /bin/bash // 进入容器mongo //进入数据库show dbs //显示数据库中有几个库use movies //新建一个数据库db.top250.insert({name:"chengchao"}) //新建top250表,插入一段数据
六、使用docker实现图形化界面
docker pull mongo-expressdocker run -d --link myapp:mongo -p 8081:8081 mongo-express然后在华为云上开启8081端口在浏览器输入http://119.3.158.140:8081/
七、systemctl系统命令
systemctl stop docker // 停止dockersystemctl restart docker // 重启dockersystemctl start docker // 开始dockersystemctl status docker // 查看docker运行状态
八、Docker常用命令
1、docker信息
##查看docker容器版本docker version##查看docker容器信息docker info##查看docker容器帮助docker --help
2、镜像操作
##列出本地imagesdocker images##含中间映像层docker images -a##只显示镜像IDdocker images -q##含中间映像层docker images -qa ##搜索仓库MySQL镜像docker search mysql## --filter=stars=600:只显示 starts>=600 的镜像docker search --filter=stars=600 mysql## --no-trunc 显示镜像完整 DESCRIPTION 描述docker search --no-trunc mysql## --automated :只列出 AUTOMATED=OK 的镜像docker search --automated mysql##下载Redis官方最新镜像,相当于:docker pull redis:latestdocker pull redis##下载仓库所有Redis镜像docker pull -a redis##下载私人仓库镜像docker pull bitnami/redis##单个镜像删除,相当于:docker rmi redis:latestdocker rmi redis##强制删除(针对基于镜像有运行的容器进程)docker rmi -f redis##多个镜像删除,不同镜像间以空格间隔docker rmi -f redis tomcat nginx##删除本地全部镜像docker rmi -f $(docker images -q)
3、容器操作
##新建并启动容器,参数:-i 以交互模式运行容器;-t 为容器重新分配一个伪输入终端;--name 为容器指定一个名称docker run -i -t --name mycentos##后台启动容器,参数:-d 已守护方式启动容器docker run -d mycentos##启动一个或多个已经被停止的容器docker start redis##重启容器docker restart redis##top支持 ps 命令参数,格式:docker top [OPTIONS] CONTAINER [ps OPTIONS]##列出redis容器中运行进程docker top redis##查看所有运行容器的进程信息for i in `docker ps |grep Up|awk '{print $1}'`;do echo \ &&docker top $i; done##查看redis容器日志,默认参数docker logs rabbitmq##查看redis容器日志,参数:-f 跟踪日志输出;-t 显示时间戳;--tail 仅列出最新N条容器日志;docker logs -f -t --tail=20 redis##查看容器redis从2019年05月21日后的最新10条日志。docker logs --since="2019-05-21" --tail=10 redis##使用run方式在创建时进入docker run -it centos /bin/bash##关闭容器并退出exit##仅退出容器,不关闭快捷键:Ctrl + P + Q##直接进入centos 容器启动命令的终端,不会启动新进程,多个attach连接共享容器屏幕,参数: --sig-proxy=false 确保CTRL-D或CTRL-C不会关闭容器docker attach --sig-proxy=false centos ##在 centos 容器中打开新的交互模式终端,可以启动新进程,参数:-i 即使没有附加也保持STDIN 打开; -t 分配一个伪终端docker exec -i -t centos /bin/bash##以交互模式在容器中执行命令,结果返回到当前终端屏幕docker exec -i -t centos ls -l /tmp##以分离模式在容器中执行命令,程序后台运行,结果不会反馈到当前终端docker exec -d centos touch cache.txt ##查看正在运行的容器docker ps##查看正在运行的容器的IDdocker ps -q##查看正在运行+历史运行过的容器docker ps -a##显示运行容器总文件大小docker ps -s##显示最近创建容器docker ps -l##显示最近创建的3个容器docker ps -n 3##不截断输出docker ps --no-trunc ##获取镜像redis的元信息docker inspect redis##获取正在运行的容器redis的 IPdocker inspect --format='{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' redis##停止一个运行中的容器docker stop redis##杀掉一个运行中的容器docker kill redis##删除一个已停止的容器docker rm redis##删除一个运行中的容器docker rm -f redis##删除多个容器docker rm -f $(docker ps -a -q)docker ps -a -q | xargs docker rm## -l 移除容器间的网络连接,连接名为 dbdocker rm -l db ## -v 删除容器,并删除容器挂载的数据卷docker rm -v redis