docker容器的深化学习
前言
仅供自己学习记录
一、基础操作指令
1. 镜像操作
1.1 查询镜像
- ①官网仓库查询,和详细版本
- 仓库地址 https://hub.docker.com/
- ②在ssh控制台查询镜像版本
docker search mysql
1.2 获取镜像
- 如果不指定版本的话,默认就是拉取最新版
docker pull mysql
- 如果指定版本,就可以获取指定版本(前提是镜像库里面存在该指定版本)
docker pull mysql5.7
1.3 查看镜像
docker images
1.4 删除images(镜像),通过image的id来指定删除谁
docker rmi <image id>
1.5 删除所有不使用的镜像
docker image prune --force --all或者docker image prune -f -a
1.6 删除全部image(镜像)
docker rmi $(docker images -q)
1.7 强制删除全部image(镜像)
docker rmi -f $(docker images -q)
2. 容器操作
*
2.1 新建容器并启动
docker run [可选参数] image
# 参数说明
--name Name 容器名字 mysql01、mysql02,用来区分容器
-d 后台方式运行
-it 使用交互方式运行,进入容器查看内容
-p 指定容器的端口 -p 8080:8080(主机端口:容器端口(常用))
2.1 docker ps 指令
<空> 查看正在运行的容器
-a 查看所有容器
-aq 列出所有容器ID
-n=? 显示最近创建的容器
2.3 停止、启动、杀死、重启一个容器
docker stop Name或者ID
docker start Name或者ID
docker kill Name或者ID
docker restart name或者ID
2.4 docker进入容器,查看配置文件
docker exec :在运行的容器中执行命令
-d :分离模式: 在后台运行
-i :即使没有附加也保持STDIN(标准输入) 打开,以交互模式运行容器,通常与 -t 同时使用;
-t: 为容器重新分配一个伪输入终端,通常与 -i 同时使用;
docker exec -it mysql /bin/bash # 进入mysql容器,开启新的命令行
docker attach mysql # 进入容器,打开正在运行的窗口
- 如果进入不了容器,用这个方式:
docker exec -it 名字或ID /bin/sh
或者
docker exec -it 名字或ID bash
或者
docker exec -it 名字或ID sh
- 如果出现root@f94d2c317477:/usr/share/elasticsearch/config# vi elasticsearch.yml
bash: vi: command not found - 处理方法:
apt-get update && apt-get install vim -y
2.5 修改配置、退出容器
1、如果要正常退出不关闭容器,请按Ctrl+P+Q进行退出容器
2、如果使用exit退出,那么在退出之后会关闭容器,可以使用下面的流程进行恢复
使用docker restart命令重启容器
使用docker attach命令进入容器
查看容器的进程信息
docker top 容器name/id
查看容器元数据
docker inspect 容器name/id
2.6 停止所有的container(容器),这样才能够删除其中的images
docker stop $(docker ps -a -q) 或者 docker stop $(docker ps -aq)
2.7 删除所有停止的容器
docker container prune
2.8 删除所有container(容器)
docker rm $(docker ps -a -q) 或者 docker rm $(docker ps -aq)
2.9 从容器到宿主机复制
docker cp mysql: /webapps/js/text.js /home/admin
docker cp 容器名/ID: 容器路径 宿主机路径
二、常用命令及常见问题处理
2.1 查看内存
docker stats
2.2 限制内存
docker run -d --name elasticsearch02 -p 9200:9200 -p 9300:9300 -e "discovery. type=s ingle-node" -e ES_ JAVA _OPTS="-Xms64m -Xmx512m" elasticsearch:7.6.2
3.3 创建容器后的映射关系
- 更改创建后容器映射关系的几种方式
大家都知道docker容器创建后,是不容易修改映射关系的,但还是有几种办法修改
1、删掉容器重新创建
2、对现有容器构建镜像,再从这个镜像重新启动一个新的容器
3、更改现有容器的配置文件(重点讲述内容)
- 通过删掉容器重新创建的方式更改映射关系
优点:简单、快捷、方便
缺点:数据不同步问题,需要对新容器进行相关配置
步骤:
删除现有的容器
重新创建容器
查看容器的相信信息
docker ps #查看正在运行的容器
docker rm -f 容器ID #强制删除该容器
docker run [参数] #创建并运行容器
- 通过构建镜像的方式更改映射关系
优点:保存资料,更改映射关系。简单
缺点:生成镜像耗时较长
步骤:
对现有的容器进行保存镜像
删除原有的容器
通过新镜像,生成新的容器
查看新容器的相关配置信息
docker ps #查看正在运行的容器
docker rm -f 容器ID #强制删除该容器
docker run -d --name nginx -v /home/nginx1:/var/lib -v /home/nginx2:/home nginx:v1.1 # 将新保存的镜像,重新启动一个容器
6bad3dd6c96ecc27708a490eb41bf46e6c6dd456c307ed6c444c7a3817ee8a73
docker ps #查看正在运行的容器
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
6bad3dd6c96e nginx:v1.1 "/docker-entrypoint.…" 4 seconds ago Up 3 seconds 80/tcp nginx
- 通过更改配置文件更改映射关系
优点: 适应性强,无需重新构建容器,相关配置可保留
缺点:较麻烦,而且需要对整个docker服务重新,将会影响其他容器,启动时间耗时较长
对目录映射
启动一个容器,并将容器现有的映射关系如: /home:/var/lib 改成 /home/docker:/var/lib/docker
docker run [参数] #创建并运行容器
docker inspect nginx # 查看刚创建的nginx容器的mounts,目录映射信息,如下图
三、制作新镜像
3.1 再容器中改动或者新增内容后,可以用commit提交为新的镜像
docker commit -a="lzz" -m="add file" 旧的容器name/id new_name:版本
四、容器数据卷
4.1 简介
- 容器的持久化和同步操作!容器间的数据共享!
4.2 使用-v命令挂载
docker run -v 主机目录:容器目录