docker入门学习一

·  阅读 298

背景

因为项目中有用到docker,趁着周末时间,快速看下docker的相关基础知识,并记录看的过程中遇到的问题


windows10 docker环境搭建

  • Docker Desktop Windows 10 下载地址hub.docker.com/editions/co…
  • 第一次安装成功后,打开有可能出现 wsl 2版本太低。在cmd直接运行指令:
    wsl --update # 一键更新,更新失败需要手动下载
复制代码

或者直接下载最新版本aka.ms/wsl2kernel/

  • 在国内下载国外资源,可以使用国内加速器服务。windows下docker->Docker Engine(lunix 下/etc/docker/daemon.json)中直接配置为
{
  "registry-mirrors": [
    "https://reg-mirror.qiniu.com/" # 加速器
  ]"insecure-registries": [
    "127.0.0.3:8082/" # 同步时如果存在http与https,需要设置。一般指的时私库的服务地址
  ]
}
复制代码

配置参数,需要重启下docker服务。更多参数查阅过官方推荐配置docs.docker.com/engine/refe…

完成配置后,需要查看对应配置,输入指令:

docker info
复制代码
  • 注意事项:因为是在Windows10 下的git bash运行,不是在lunix环境下操作,故有时候输入指令未识别,需要在指令前面添加 winpty

docker 基础概念

  • docker:操作系统层面的虚拟化技术。就是程序运行的环境。方便创建和使用容器.它包含三个基本概念:镜像、容量、仓库
  • 镜像image:是一个特殊的文件系统,提供容器运行时所需的程序、库、资源、配置等
  • 容量Container:容器是镜像运行时的实体。相当于面相对象编程中的类与实例
  • 仓库Repository:存放镜像的地方
  • 注册服务器registry:集中存储、分发镜像的服务。一个docker registry 可以包含多个仓库,每个仓库可以包含多个标签,每个标签对应一个镜像

docker 常用的基础命令

镜像处理:
docker search hello-world  # 搜索hello-world镜像
docker pull hello-world # 获取hello-world镜像 ,
docker pull <域名/ip>[:端口号] 仓库名  # 获取镜像 默认仓库地址为Docker Hub  仓库名<用户名>/<软件名> 不给用户名,一般默认为library
docker run hello-world   # 运行一个docker镜像,产生一个容器实例(也可以通过镜像id前三位运行)
docker run -it --rm ubuntu bash #  运行镜像,-it交互式 终端 --rm 容器退出后默认删除  bash 使用交互式shell 命令
docker image ls  # 查看本地所有镜像
docker images # 查看docker镜像
docker image rm hello-world # 删除hello-world镜像
docker rmi hello-world  # 删除hello-world镜像
docker image ls -f sicne=hello-world # 支持过滤参数写法, 想删除指定之前的镜像,可以用before
docker image rm $(docker image ls -q -f before=hello-world) # 可以批量删除hello-world之前的镜像
docker save hello-world > d:\hello.tar.gz  # 导出docker镜像至本地
docker load < d:\hello.tar.gz  #导入本地镜像到docker镜像库


容器处理:
docker ps # 列出正在运行的容器
docker ps -a # 列出所有运行过的容器记录,q列出编号
docker container ls -all # 列出所有容器包括终止的。要清除信息,可以使用 docker container prune
docker rm e56933f77a0c  # 删除容器编号
docker container stop <容器编号> # 终止对应的容器
docker container restart <容器编号> # 重启对应的容器
docker container rm  <容器编号> # 删除对应的容器
docker run  -dit ubuntu # 容器启动后会进入后台,如果要重新进入,需要通过 docker attach <容器编号> 这个exit退出容器默认stop 。而exec进入,退出不会停止
复制代码

通过Dockerfile 去定制image

  • Dockerfile 是一个文本文件,内部包含每一条的指令,每条指令构建一层,因此每一条指令的内容,就是描述该层应当如何构建
  • FROM 一般是指定基础镜像
  • RUN 命令是image文件构建阶段执行,执行结果都会打包进入image文件(可以存在多个RUN指令)
  • CMD 命令是容器启动后执行,默认是只有一个CMD命令
  • && 可以串联各个命令,避免使用过多RUN命令,创建无用层
  • 一般使用docker build进行构建
  • 可以使用.dockerignore剔除不需要作为上下文传递给Docker引擎
 docker build  -t nginx:v1 . # 其中.表示是当前目录
复制代码

案例参考www.ruanyifeng.com/blog/2018/0… 定制镜像。 有点小遗憾的是,家里网速太差了,运行到安装的最后一步,还没成功完全下载好。

image.png

分类:
后端
标签:
收藏成功!
已添加到「」, 点击更改