docker 学习笔记1-基础命令

docker 学习笔记

docker官网:docker.com

dockerHub --安装docker镜像的仓库,国外的仓库访问慢,国内可以使用阿里云。

docker的基本组成

  • 镜像 image
  • 容器 container
  • 仓库 repository

docker 常用命令

1、帮助启动类命令

  • 启动docker: systemctl start docker
  • 停止docker: systemctl stop docker
  • 重启docker: systemctl restart docker
  • 查看docker状态: systemctl status docker
  • 开机启动: systemctl enable docker
  • 查看docker概要信息: docker info
  • 查看docker总体帮助文档: docker --help
  • 查看docker命令帮助文档: docker 具体命令 --help

2、镜像命令

docker images list : 列出本地主机上的镜像

docker search 名称: 查找某个镜像

docker search ubuntu --limit 2

docker pull 名称【:TAG】:下载docker镜像

docker pull ubuntu

docker system df: 查看镜像。容器、数据卷 所占用的空间

docker rmi IMAGE_ID :删除镜像

docker commit:提交容器副本使其成为一个新的镜像

docker commit -m=“提交的描述信息” -a=“作者” 容器ID 要创建的目标镜像名:[标签名]

3、容器命令

  • 新建+启动容器
    docker run [OPTIONS] IMAGE COMMAND
    说明:有些参数是一个减号、有些参数是两个减号

    • –name=“容器的新名字” : 为容器指定一个名称
    • -d: 后台运行容器并返回容器的ID,即启动守护式容器(后台运行)
    • -i: 以交互式运行容器,通常结合-t使用
    • -t: 为容器重新分配一个伪输入终端
    • -P: 随机端口映射,大写P
    • -p:指定端口映射,小写p
      参数 说明
      -p ip:hostPort:containerPort 端口映射 -p 10.0.0.100:8080:80
      -p hostPort:containerPort 端口映射 -p 8080:80

    docker run -it --name=my_ubuntiu ubuntu /bin/bash

  • 列出所有当前运行的容器
    docker ps [OPTIONS]
    -a: 列出当前所有正在运行的容器+历史上运行过的
    -l: 显示最近创建的容器
    -n: 显示最近n个创建的容器
    -q: 静默模式,只显示容器编号
    docker ps

  • 退出容器
    方式1
    使用命令:exit
    run 进入容器,exit退出,容器停止
    方式2
    使用快捷键: ctrl+p+q
    run进入容器,ctrl+p+q退出,容器不会停止

  • 启动已经停止的容器
    docker start 容器ID或者容器名称

  • 重启容器
    docker restart 容器ID或者容器名称

  • 停止容器
    docker stop 容器ID或者容器名称

  • 强制停止容器
    docker kill 容器ID或者容器名称

  • 删除已停止的容器
    docker rm 容器ID或者容器名称

  • 查看容器日志
    docker logs 容器ID

  • 查看容器运行的进程
    docker top

  • 查看容器内部细节
    docker inspect 容器ID

  • 进入正在运行的容器并以命令行交互
    docker exec -it 容器ID bashShell
    docker exec -it ID /bin/bash
    docker attach 容器ID
    说明:attach直接进入容器启动命令的终端,不会启动新的进程,用exit退出,会导致容器停止。
    exec是在容器中打开新的终端,并且可以启动新的进程,用exit退出,不会导致容器停止。

  • 从容器内部拷贝文件到主机
    docker cp 容器ID:容器内路径 目的主机路径

  • 导入和导出容器
    export导出容器的内容作为一个tar归档文件
    docker export 容器ID > 文件名.tar
    import从tar包中的内容创建一个新的文件系统再生成为镜像
    cat 文件名.tar | docker import - 镜像用户/镜像名:版本号

4、docker镜像

待补充 原理

是一种轻量级、可执行的独立软件包,它包含运行某个软件所需的所有内容,我们把应用程序和配置依赖打包成一个可交付的运行环境(代码运行时需要的库文件、环境变量和配置文件等),这个打包好的运行时环境就是image镜像文件。

只有通过镜像才能生成docker实例。

引申:

  • UnionFS(联合文件系统):是一种分层,轻量级并且高性能的文件系统,它支持对文件系统的修改作为一次提交,来一层层的叠加,同时可以将不同的目录挂载到同一个虚拟文件系统下。UnionFS是docker镜像的基础。

  • 需要创建一个本地的私人仓库,供团队使用,基于公司内部项目构建镜像。
    Docker Registry是官方提供的工具,可以构建镜像仓库
    1.下载镜像 docker pull registry
    2.运行私有库Registry,相当于本地有个私有Docker hub

    docker run -d -p 500:500 -v /tda/myregistry:/tmp/registry --privileged=true registry
    
    docker ps
    

    3.案例演示创建一个新镜像:Ubuntu安装ifconfig命令
    apt-get install net-tools
    4.curl验证私服库上有什么镜像
    curl -XGET http://192.168.111.162:500/v2/_catalog

    5.将新镜像 Ubuntu:1.2修改为符合私服规范的Tag
    docker tag ubuntu:1.2 192.168.111.168/ubuntu:1.2
    6.修改配置文件使其支持http
    cat /etc/docker/daemon.json
    在文件内部增加,取消Docker默认不允许http方式推送镜像,重新启动Docker
    “insecure-registries”:[“192.168.111.168:500”]
    7.push推送到私服库
    docker push 192.168.111.168/ubuntu:1.2
    8.curl验证私服库上有哪些镜像
    9.pull到本地运行
    docker pull 192.168.111.168:500/ubuntu:1.2

5、容器数据卷

docker run -d -p 500:500 -v /zz/myhostRegistry:/tmp/registry --privileged=true registry

默认情况下,仓库被创建在容器的/var/lib/registry目录下。

建议自行创建容器映射,方便主机联调。

5.1 坑:容器记得卷加入–privileged=true

docker挂载主机目录访问如果出现cannot open directory .: Permission denied

解决版办法:在挂载目录后多加一个privileged参数即可

扩大容器的权限解决挂载目录没有权限的问题,使用该参数,container内的root拥有了真正的root权限,否则,container内的root只是外部的一个普通用户权限。

5.2 数据卷的目的

用容器数据卷的方式,完成数据的持久化,重要数据做备份。

容器内的数据备份,并持久化本地。

5.3 什么是数据卷

卷就是目录或文件,存在一个或多个容器中,由docker挂载到容器,但不属于联合文件系统,因此能够绕过Union File System(不属于容器),用于一些持久化存储或数据共享。

数据卷完全独立于容器的生存周期,因此docker删除容器后,数据卷仍能保持。

将docker容器内的数据保存进宿主机的磁盘中。

5.4 如何运行带有容器卷存储功能的容器实例

docker run -it --privileged=true -v /宿主机绝对路径目录:/容器内目录 镜像名 /bin/bash

docker 会自建没有的目录

1)查看容器是否挂载成功

docker inspect 容器id

2)容器映射读写规则

默认创建时,容器内部:可读可写

但docker run -it --privileged=true -v /宿主机绝对路径目录:/容器内目录:ro 镜像名 /bin/bash

创建实现容器内部:只读不可写

ro -->read only

3)卷的继承与共享

要求:

容器1完成和宿主机的映射,容器2继承容器1的卷规则

关键点:

docker run -it --privileged=true --volumes-from 父类 --name container2(名称或ID) ubuntu

实现:

docker run -it --privileged=true -v /myhost/share:/tmp/share --name container1 ubuntu
docker run -it --pricileged=true --volumes-from container1 --name container2 ubuntu
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值