Docker常用笔记

虚拟机(VM)与容器对比(docker)

  • 1.容器秒级启动,虚拟机分钟级

  • 2.容器磁盘一般使用为MB,虚拟机一般为GB

  • 3.容器性能接近原生,虚拟机弱于原生

  • 4.系统支持量:单机支持上千个容器,单机一般支持几十个虚拟机

  • docker整体是一个CS架构

    • 客户端发起命令到引擎,引擎解析命令再从docker hub(镜像仓库)上面拉取镜像
  • 拉取镜像比较慢,就可以配置镜像加速器

    • 可以通过阿里云的容器镜像服务里面的镜像加速器进行配置
      https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors

docker常用命令

  • 1.查看docker运行状态
    systemctl status docker

  • 2.停止docker
    systemctl stop docker

  • 3.重启docker
    systemctl restart docker

  • 4.列出镜像
    docker images

  • 5.拉取centos镜像
    docker pull centos

  • 6.查看docker镜像
    docker search 镜像名字

  • 7.删除镜像
    docker rm 镜像名称/镜像id(删除多个就直接空格后面加上就可以了)

  • 8.创建一个交互式容器(创建之后就直接进去了容器,退出容器后容器就直接退出了)
    docker run -i -t --name=c1 centos /bin/bash
    或者docker run -it --name c1 centos /bin/bash

    • -i:交互式容器
    • -t:tty终端(分配一个终端,操作容器)
    • -name:指定容器的名称(唯一,不能重复 )
  • 9.创建一个守护式容器(后台运行且创建后不直接进入容器,且进入容器退出容器后容器不停止c3为容器名)
    docker run -itd --name c3 centos /bin/bash

    • 进入守护式容器
      docker exec -it c3 /bin/bash
  • 10.查看正在运行的容器

    • 1.查看正在运行的容器
      docker ps
    • 2.查看历史容器,所有容器
      docker ps -a
    • 3.查看最后一次运行的容器
      docker ps -l
  • 11.停止容器

    • 1.停止容器
      docker stop 容器名
    • 2.运行容器
      docker start 容器名
  • 12.查看容器的详细信息
    docker inspect 容器名(会列出一大串的json文件,包含这个容器的详细信息)

  • 13.删除容器(不能删除正在运行的容器)
    docker rm 容器名

    • 删除所有容器
      docker rm `docker ps -a -q`
  • 14.查看容器日志
    docker logs 容器名称/id

  • 15.文件拷贝

    • 1.从宿主机拷贝到容器目录
      docker cp 文件名 容器名:/root(容器目录)
    • 2.从容器拷贝到宿主机
      docker cp 容器名:/容器里面到文件路径+文件名 宿主机到目录
  • 16.容器的目录挂载(在启动容器的时候进行目录挂载)
    docker run -itd --name 容器名 -v 宿主机目录:容器内目录 centos /bin/bash

  • 17.查看命令的用法
    docker commit --help

docker镜像制作的两种方式

  • 1.使用docker commit命令

  • 2.使用docker build和Dockerfile文件

  • 18.使用docker commit制作镜像
    docker commit 原镜像名 新镜像名

  • 19.端口映射并执行容器内的脚本
    docker run -itd --name=t1(容器名) -p 8888(宿主机的端口):8080(容器内的端口) 容器镜像名 /bin/bash
    docker exec 容器名 /usr/local/startup.sh

  • 20.镜像打包-导入镜像

    • 1.镜像打包
      docker save -o /root/tomcat.tar(保存的目录与镜像打包后的名字) mytomcat(本地镜像名字)
    • 2.导入镜像
      docker load -i /root/tomcat.tar(镜像打包后的名字)
  • 21.容器打包

    • 1.容器打包
      docker export -o /root/t1.tar t1(容器名)
    • 2.导入容器
      docker import t1.tar(打包的容器文件) mytomcat:latest(容器名字与tag)

    Dockerfile

    • 使用DSL语法
      1.构建命令(在rw_test目录下构建镜像)
      docker build -t 镜像名字 --rm=true
    • -t表示选择指定生成镜像的用户名,仓库名和tag
    • –rm=true 表示指定在生成镜像过程中删除中间产生的临时容器

    docker仓库

    • 1.先注册docker hub的账号(https://hub.docker.com)
    • 2.在里面创建一个新的仓库(Create Repository)
    • 3.设置镜像标签
    - local-image:tagname(本地镜像)
    -  new-repo:tagname(仓库id:tag名称)
    - 4.本地登录docker hub
      - docker login
    - 5.推送镜像
    ```docker push new-repo:tagname```
    
    

docker网络管理

  • 默认网络

    • 查看docker网络
      docker network ls
    • Docker中默认的三种网络分别为bridge,host和none,其中名为bridge的网络就是默认的bridge驱动网络,也是容器创建时默认的网络管理方式,配置后可以与宿主机通信从而实现与互联网通信功能,而host和none属于无网络,容器添加这两个网络时不能与外界网络通信。
    • 以上三种网络bridge,host和none都是在非集群下Docker提供的默认网络,而在Docker Swarm集群环境下,除了这三种默认网络外,Docker还提供了docker_gwbridge和ingress两种默认网络
    • 查看容器使用的网络情况:
      docker network inspect bridge
  • 创建一个使用自定义的isolated_nw网络(需要预先创建)的容器

    • 1.创建名为isolated_nw的网络
      docker network create --driver bridge isolated_nw
    • 2.创建一个c3的容器并且网络为自定义网络
      docker run --network=isolated_nw -itd --name=c3 busybox
  • 为容器2新增一个自定义的isolated_nw网络连接
    docker network connect isolated_nw c2

  • 如果两个容器的网络不一致就不能够通信

Docker swarm集群

  • 创建docker swarm
    • 1.在manager1机器上创建docker swarm集群
      docker swarm init --advertise-addr 192.168.200.162
      (–advertise-addr将该IP地址的机器设置为集群管理节点;如果是单节点,无需该参数)
    • 2.查看管理节点集群信息
      docker node ls
    • 3.向docker swarm中添加工作节点:在两个工作节点中分别执行如下命令,ip地址是manager节点的
      docker swarm join --token xxx 192.168.200.138:2377 (worker1)
      docker swarm join --token xxx 192.168.200.138:2377 (worker2)
    • (–token xxx:向指定集群中加入工作节点的认证信息,xxx认证信息是在创建docker swarm时产生的)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值