zoukankan      html  css  js  c++  java
  • docker基础学习笔记

    一,安装(centos)

    1.查看内核版本 必须再7以上

    uname -r

    2.确保yum命令包最新

    yum update

    3.卸载旧版本(如果安装过旧版的)

    yum remove docker-common docker-selinux docker-engine

    4.安装需要的软件包

    • yum-utils 提供yum-config-manager功能

    • 另外两个是devicemapper驱动依赖的

      yum install -y yum-utils device-mapper-persistent-data lvm2

    5.设置yum源

    sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

    6.安装docker

     sudo yum install docker-ce docker-ce-cli containerd.io

    7.验证docker安装ok

    docker version

    8.启动docker 并设置开机启动

    systemctl start docker 启动
    systemctl enable docker 并设置开机启动

    9.测试hello-world

    docker run hello-world
    # 先从本地获取,本地找不到会从远程仓库(默认国外仓库https://hub.docker.com/)拉取到本地再运行,下次可以直接本地运行

     

    配置阿里云镜像仓库

    默认远程仓库 docker hub ——国外仓库https://hub.docker.com/,访问国外主机速度较慢

    步骤

    1.登陆进入阿里云镜像服务 https://cr.console.aliyun.com/

    登录后——>搜索容器镜像服务——>镜像加速器——>加速器地址(即配置地址)

    2.在 /etc/docker 目录下找到daemon.json文件(没有就新建),将下面内容写入:

    # 填入刚才的加速器地址
    {
    "registry-mirrors": ["https://fvt25l0y.mirror.aliyuncs.com"]
    }

     

    3.重启daemon

    systemctl daemon-reload

    4.重启docker服务

    systemctl restart docker

    5.测试是否配置完成

    docker info  # 查看docker基本信息

    # 能看到以下信息,说明ok
    ......
    Registry Mirrors:
    https://fvt25l0y.mirror.aliyuncs.com/
    ......

     

    二,基本操作

    基本命令

    启动docker: systemctl start docker

    停止docker :systemctl stop docker

    重启docker:systemctl restart docker

    开机自启动docker:systemctl enable docker

    查看docker概要信息:docker info

    查看docker帮助文档:docker --help

    查看docker版本信息:docker version

     

    docker镜像

    列出所有镜像:docker images

    搜索镜像:docker search

    下载镜像:docker pull 镜像名:版本号 (只写镜像名默认拉取最新的)

    删除镜像:docker rmi 镜像名:版本号

    • 如果有以该镜像运行的容器,则无法删除

    • docker rmi -f :强制删除——>先暂停容器,再去删除镜像

    • 删除多个:docker rmi a:1.0 b1.0 不写版本号默认删除最新的

    • 删除全部:docker rmi -f $(docker images -qa)

      • -q 只显示容器编号

      • -a 显示所有

     

    docker 容器

    创建并启动容器:docker run [OPTIONS] IMAGE 【容器中要执行的命令】[ARGS...]

    通过镜像id来启动一个容器,不带命令时 默认以 /bin/bash 启动

    • 普通启动

    #命令:
    docker run -it --name mycenos01 镜像id (推荐用id)
    docker run -it --name mycenos01 镜像名:版本号
    #说明
    -t     表示以交互模式运行,进入容器,分配一个伪终端
    --name 容器别名
    镜像id   指定镜像模板
    • 守护式方式启动

    #命令:
    docker run -di --name mycenos02 镜像id
    #说明
    -d   后台运行容器,并返回容器id
    • 指定映射端口启动

    # docker run -it -p 8888:8080 镜像id
    #说明
    8888:8080 : 8888为宿主机端口 8080为容器指定端口(一般会有默认端口)
    -p 指定宿主机映射到容器的端口
    -P 大写P:随机指定宿主机映射端口

     

    列出容器 docker ps 【OPTIONS】

    docker ps 查看正在运行的容器
    docker ps -a 查看所有容器
    docker ps -n 2 显示最近创建的2个容器
    docker ps -f status=exited 查看停止的容器

    退出容器 exit 或者 Ctrl + P + Q

    exit 或 Ctrl + C  停止并退出容器
    Ctrl + P + Q     容器还在运行,不停止,只退出终端

    进入容器 docker attach 容器id(或名称)

    启动容器 docker start 容器id(或名称)

    重启容器 docker restart 容器id(或名称)

    停止容器 docker stop 容器id(或名称)

    • 强制关闭:docker kill 容器id(或名称) 不建议

    删除容器 docker rm 容器id

    • 正在运行的rm无法直接删除

    • 强制删除:docker rm -f

    • 删除多个:docker rm 容器a 容器b

    • 删除所有:docker rm -f $(docker ps -qa)

    进阶命令

    docker exec

    在运行的容器中执行命令:docker exec -it 容器名称(id) 执行命令

    执行 /bin/bash 命令 可用来进入容器内

    docker exec -it 容器id ls -l /sys
    docker exec -it 容器id /bin/bash # 进入容器交互模式
    docker exec -it 容器id sh /home/bin/xxx
    docker exec -it redis redis-cli   # 进入redis客户端
    交互

    docker logs

    查看容器日志 docker logs 容器id

    清除日志:可以进入目录直接删除,地址:

    /var/lib/docker/containers/

    docker top

    查看容器进程 docker top 容器id

    docker cp

    宿主机和容器之间的文件拷贝 docker cp

    # 宿主机文件 拷贝到 容器
    docker cp 要拷贝的文件或目录 容器名称(或id) : 容器目录
    # 拷贝到容器指定目录
    dcoker cp /home/dog.jpg 容器id:/temp/
    # 拷贝到容器指定目录,并重命名
    dcoker cp /home/dog.jpg 容器id:/temp/doggg.jpg

    # 容器内文件 拷贝到 宿主机

    docker commit

    定制自己的镜像 docker commit

    提交运行中的容器为一个新的镜像模板

    一般拉取的官方镜像,可能需改一些配置等,在作为一个新的镜像去运行容器。

    自定义镜像:根据已存在运行的容器(一般容器内部修改过)生成新的镜像模板

    docker commit -a='作者' -m '备注' 运行中的容器id 新镜像名
    # 本地可以查看到新生成的镜像 docker images
    # 然后就可以根据新的镜像来运行容器

    docker push

    发布自定制镜像 docker push

    # 1.登录hub
    docker login

    # 2.发布新镜像到自己的线上仓库
    docker push 新镜像名(id)

    docker inspect

    查看容器的元信息

    "IPADDRESS"    容器分配的虚拟ip
    "Source"   宿主机挂载目录
    "Destination" 容器挂载目录

     

    三,docker容器目录挂载

    简介

    容器目录挂载:

    我们可以在创建容器的时候,将宿主机的目录与容器内的目录进行关联映射,这样就能实现两者间目录中 **数据双向自动同步**

     

    作用

    通过cp来同步数据太麻烦;

    通过容器目录挂载,能够轻松实现代码上传,配置修改,日志同步等需求

     

    实现

    命令:

    docker run -it -v /宿主机目录:/容器目录 镜像名
    # 指定目录不存在时会自动创建

    多目录挂载:

    docker run -it -v /宿主机目录:/容器目录 -v /宿主机目录2:/容器目录2 镜像名

    挂载目录只读 read only

    docker run -it -v /宿主机目录:/容器目录:ro 镜像名

     

    注意:

    如果你同步的是多级目录,可能会出现权限不足的提示;

    这是因为Centos7中的安全模块selinux把权限禁掉了,需要添加 --privileged=true 来解决挂载的目录没有权限的问题

     

    docker启动mysql57

    1.拉取镜像后,用镜像id启动

    docker run -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 9cfcce23593a

    2.同步容器中的相关配置文件到宿主机指定目录

    主要是为了目录的同步挂载

    docker cp 容器id:/etc/mysql/conf.d /home/mysql
    docker cp 容器id:/var/log /home/mysql
    docker cp 容器id:/var/lib/mysql /home/mysql

    3.停止容器后重新以文件挂载方式启动

    挂载以上三个目录

    docker stop 容器id

     

    四,docker-file

    定义:以脚本方式构建镜像

    基础参数命令

    FROM 基础镜像名   # 基于某个基础镜像
    ENV key value   # 设置环境变量(可以写多条)
    RUN command # 构建容器时需要运行的命令,一般用来安装一些工具包
    WORKDIR path_dir # 设置终端默认登陆进来的工作目录
    EXPOSE port # 当前容器对外暴露的端口
    ADD source_dir/file dest_dir/file # 将宿主机的文件复制到容器内,如果是一个压缩文件,将会在复制后自动解压
    COPY source_dir/file dest_dir/file # 和ADD相似,不能自动解压
    VOLUME 创建一个可以从本地主机或其他容器挂载的挂载点,一般用来存放数据库和需要保持的数据等
    CMD # 指定容器启动时要运行的命令,假如有多个最后一个生效

     

    使用dockerfile

    1.编写一个名为mycentosDockerfile的文件

    FROM centos   # 基于某个基础镜像
    MAINTAINER yangdisi<13875045745@163.com> # 作者信息
    LABEL name="xxx centos image"
    build-date="2020-06-23"   # key-value形式,镜像的描述信息

    ENV WORKPATH /home/ # 定义环境变量,可通过多行定义多个
    WORKDIR $WORKPATH # 使用变量,指定工作空间

    # 构建容器时执行一些命令,基础容器很精简,需要安装一些工具
    RUN yum -y install net-tools
    RUN yum -y install vim

    EXPOSE 80   # 对外暴露的端口
    CMD /bin/bash # 指定容器启动时要运行的命令,假如有多个最后一个生效

    注意B: 当 ENTRYPOINT 后面跟CMD 时,CMD当作前者的参数使用:

     

    2.构建DockerFile

    构建会生成一个自定义的新镜像

    docker build -f mycentosDockerfile -t 镜像名 .  # 后面的 . 不能掉

     

  • 相关阅读:
    vue 零散记录
    flex布局-弹性布局
    apply 和 call 的用法
    git版本控制系统重新认识
    Windows驱动过滤--kdbclass过滤,寒江独钓加强版
    Socket的select制作多客户端传输(Qt)
    基于g_soap制作的数据下载器,传输速度只有600kb 需改进
    lua中获取数组长度问题
    MySQL存储过程详解 mysql 存储过程(转:http://blog.sina.com.cn/s/blog_52d20fbf0100ofd5.html)
    lua接受C++返回值
  • 原文地址:https://www.cnblogs.com/Deaseyy/p/13341800.html
Copyright © 2011-2022 走看看