加载中...

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 主机目录:容器目录

五、DockerFile

六、Docker网络

七、Docker Compose

八、Docker Swarm

九、CI/CD Jenkins 流水线

posted @ 2021-09-13 20:41  迪丽甜粑  阅读(33)  评论(0编辑  收藏  举报