百度百科:Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的linux或Windows操作系统的机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。
一个完整的Docker有以下几个部分组成:
- DockerClient客户端
- Docker Daemon守护进程
- Docker Image镜像
- DockerContainer容器
个人理解docker中的 镜像 就像是java中的calss,而容器是基于这个镜像构建出的实例 类似于class构造出一个个实例对象。
简言之
docker镜像 -------java中的class docker容器 -------java中class new 出来的实例对象
每一个 Docker容器都是独立和安全的应用平台(我们可以理解为,每一个docker容器都相当于在我们的服务器上占用资源然后开辟了属于自己的一个空间(也可以理解为服务器))
(二)docker基础命令启动docker
systemctl start docker
关闭docker
systemcty stop docker
重启docker
systemcty restart docker
docker设置随服务启动而启动
systemcty enable docker
查看docker运行状态
systemctl status docker
查看docker 版本号信息
docker version #版本信息 docker info #显示docker的系统信息
docker 帮助命令
docker --help #如果忘记了某些命令可以使用此命令
比如
docker logs --help(三)docker镜像命令
查看服务器中docker镜像列表
docker imsges
各个选项的说明:
REPOSITORY:表示镜像的仓库源
TAG :镜像的标签
IMAGE ID :镜像的ID
CREATED :镜像的创建时间
SIZE :镜像的大小
搜索镜像
docker search 镜像名 docker search --filter=STARS=9000 mysql 说明:搜索 STARS >9000的 mysql 镜像
拉取镜像
docker pull 镜像名 #不加tag(版本号) 即拉取docker仓库中 该镜像的最新版本latest 加:tag 则是拉取指定版本 docker pull 镜像名:tag
删除镜像 #当前镜像没有被任何容器使用才可以删除
#删除一个 docker rmi -f 镜像名/镜像id #删除多个 docker rmi -f 镜像名/镜像id 镜像名/镜像id 镜像名/镜像id #删除全部镜像 -a 显示全部 -q只显示id docker rmi -f $(docker images -aq) #强制删除 docker images rm 镜像名称/镜像id
保存镜像
docker save 镜像名/镜像id -o 镜像保存的位置 docker save nginx -o /home/wqewqw
加载镜像
#任何装docker的地方加载镜像保存文件,使其恢复一个镜像
docker load -i 镜像保存文件位置 docker load -i wqewqw(四)docker容器命令
前言 容器的启动需要镜像的支持
查看正在运行容器列表
docker ps docker ps -a #加-a会包含正在运行和已停止的
容器怎么来的?可以通过run镜像来构建
运行一个容器
# -it 表示 与容器进行交互式启动 -d 表示可后台运行容器 (守护式运行) --name 给要运行的容器起的名字 /bin/bash 交互路径 docker run -it -d --name 要取的别名 镜像名:Tag /bin/base
docker attach 容器id #不建议
举例
docker run -it -d --name mysql99 mysql:5.7 /bin/bash
# netstat是控制台命令,是一个监控TCP/IP网络的非常有用的工具,它可以显示路由表、实际的网络连接以及每一个网络接口设备的状态信息
netstat -untlp
停止容器
docker stop 容器名/容器id
删除容器
#删除一个容器 docker rm -f 容器名/容器ID #删除多个容器 空格隔开要删除的容器名或容器ID docker rm -f 容器名/容器ID 容器名/容器ID 容器名/容器ID #删除全部容器 docker rm -f $(docker ps -aq)
从容器退出到自己服务器中
#-----直接退出 未添加 -d(持久化运行容器) 时 执行此参数 容器会被关闭 exit
# 优雅提出 --- 无论是否添加-d 参数 执行此命令容器都不会被关闭 Ctrl + p + q
停止容器
docker stop 容器id/容器名
重启容器
docker restart 容器id/容器名
启动容器
docker start 容器名/容器id
强制停止
docker kill 容器ID/容器名
容器文件拷贝 --无论容器是否开启 都可以进行拷贝
#从容器内 拷出 docker cp 容器id/容器名 : 容器内路径 容器外路径 #从外部拷贝文件到容器内 docker cp 容器外路径 容器ID/容器名: 容器内路径
查看容器日志
docker logs -f --tail=要查看末尾多少行 默认all 容器id docker logs -f --tail=50 0f5203960698
启动容器时,使用docker run命令时 添加参数--restart=always 便表示,该容器随docker服务启动而自动启动
docker run -d -e prefer_host_mode=127.0.0.1 -e MODE=standalone -v /nacos/logs:/opt/software/nacos/logs -p 8848:8848 --name nacos --restart=always nacos/nacos-server
− d 后 台 运 行 − e 环 境 变 量 设 置 − v 某 个 容 器 的 目 录 : 映 射 c e n t o s 上 的 某 个 目 录 ( 根 据 实 际 的 设 置 ) − p 外 部 访 问 端 口 : 内 部 被 映 射 端 口 ( 根 据 实 际 的 设 置 ) − n a m e 容 器 的 名 称 − r e s t a r t 重 启 策 略 -d 后台运行 -e 环境变量设置 -v 某个容器的目录:映射centos上的某个目录(根据实际的设置) -p 外部访问端口:内部被映射端口(根据实际的设置) -name 容器的名称 -restart 重启策略 −d后台运行−e环境变量设置−v某个容器的目录:映射centos上的某个目录(根据实际的设置)−p外部访问端口:内部被映射端口(根据实际的设置)−name容器的名称−restart重启策略
查看容器中进程信息
docker top 容器id #容器必须启动状态
查看镜像中元数据
docker inspect 容器id
更换容器名
docker rename 容器ID/容器名 新容器名(五)自己提交一个镜像
我们运行的容器可能在镜像的基础上进行修改。有时候我们需要保存起来,封装成一个更新的镜像,这时我们需要commit命令来构建一个新的镜像
docker commit -m="提交的信息" -a="作者信息" 容器名/容器id 提交后的镜像名称(六)容器卷技术
直接使用命令来挂载:-v(双向的)
docker run -it -v 主机目录 : 容器内目录
测试
docker run -it -v /home/ceshi:/home centos /bin/bash
启动起来后我们可以查看docker inspect 容器id 查看mounts内容 挂载 -v 卷
docker inspect 容器id(七)具名和匿名挂载
#如何确定是具名挂载还是匿名挂载,还是指定路径挂载
-v 容器内路径 #匿名挂载 -v 卷名:容器内路径 #具名挂载 -v /宿主机挂载:容器内路径 #指定路径挂载
所有的docker容器内的卷,没有指定目录的情况下都是载
/var/lib/docker/volums/xxxx/_data
#匿名挂载
-v 容器内路径
docker run -d -P --name nginx01 -v /etc/nginx nginx #查看所有的volume 的情况 docker volume ls
#具名挂载
docker run -d -P --name nginx02 -v juming-nginx:/etc/nginx nginx #查看所有的volume 的情况 docker volume inspect juming-nginx
-p:指定连接容器的端口号 P不需要指定
(八)docker安装tomcat下载启动
docher pull tomcat
启动运行
docker run -d -p 3355:8080 --name tomcat01 tomcat
进入容器
docker exec -it tomcat01 /bin/bash #查看没有webapps
cp -r webapps.dist/* webapps(九)Docker 安装nginx
一. 搜索镜像 search
二. 下载镜像 pull
三. 运行镜像
docker images docker run -d --name nginx01 -p 3344:80 nginx # -d 后台运行 --name 给容器命名 -p 宿主机端口,容器内部端口 docker ps curl localhost : 3344 说明:启动nginx



