2. docker容器管理


  1. 镜像管理
  2. 容器管理
  3. 网络管理

一.创建容器常用选项

  1. 创建容器命令格式
    Usage: docker create [OPTIONS] IMAGE [COMMANND] [TAG...]
    Usage: docker run [OPTIONS] IMAGE [COMMAND] [TAG...]

2 .OPTIONS(常用选项)

命令 介绍 命令 介绍 命令 介绍
-i, --interactive 标准输入打开,没有这个选项,不可以通过附加方式进入命令 --log-driver 日志驱动 --cpu-period int 对cpu进行限制,周期
-t, --tty 分配一个伪终端 --log-opt 选项 --cpu-quota int 周期内运行多长时间限制,每次时间轮转片时间
-d, --detach 放到后台去运行容器 --mount mount 挂在宿主机的分区到容器 -c, --cpu-shares int 多容器之间cpu共享权重值
--add-host list 动态添加一个host --network string 链接容器到一个网络 --cpuset-cpus string cpu固定到某个单核上
-a, --attach list 附加 --oom-kill-disable 物理内存不足,没有swap的时候,禁用掉自动kill进程 --device-read-bps list 限制设备读取磁盘的速率,单位bit/s
--cap-add list 添加细粒度的内核权限访问控制 --pid string 使用命令空间 --device-write-bps list 限制设备数据写入磁盘的速率,单位bit/s
--cap-drop list 删除细粒度的内核权限访问控制 -p, --publish list 映射一个宿主机端口到容器端口 --device-read-iops list 限制读取iops
--cidfile string 将容器id写到一个文件中 -P, --publish-all=true/false 发布容器所有的expose端口到宿主机端口 --device-write-iops list 限制写iops
--device list 添加宿主机设备到容器 --restart 重启容器 -m, --memory bytes 限制容器的内存
--dns list 配置DNS --ulimit ulimit 指定容器文件描述符合 --memory-reservation bytes 限制内存,软性限制,可以有突发
-e, --env list 设置变量,赋予单个容器 -v, --volume list 将宿主机的目录挂载到容器 --memory-swap bytes 设置限制swap,物理内存不足的时候会发挥作用,-1的时候不受限制
--env-file list 将变量写到一个文件中,从文件中读取文件,将变量赋给容器 --volumes-from list 共享给多个容器 --memory-swappiness int 设置swap使用它的权重值
--expose list 暴露一个端口或者一个端口范围 -w, --workdir string 进入容器后所在的工作目录 --storage-opt list只支持devicemapper存储驱动 对磁盘空间的设置,容器可以使用宿主机多大的磁盘空间
-h, --hostname string 为容器指定主机名
--ip string 分配指定IP(只针对自定义创建的网络)
--link list 链接

二. 容器的基本操作

  1. 查询容器
  • 查询运行的容器
    docker ps
  • 查询所有的容器
    docker ps -a
  • 查询最新创建的容器
    docker ps -l
  • 只显示容器的id
    docker ps -q
  • 显示容器的大小
    docker ps -s
  1. 创建并且运行容器
  • docker run -itd --name test01 ubuntu
    docker run -itd --name test01_self ubuntu:self
  • docker exec -it test01 /bin/bash
    self: 是TAG
  1. 进入到容器内部
    docker attach test01
    test01是容器名称

  2. 停止/启动容器
    docker stop/start test01

  3. 删除容器
    docker rm test01

  4. 删除所有容器
    docker rm -f $(docker ps -q -a)

  5. 重命名容器
    docker rename oldname newname

  6. 杀死容器进程
    docker kill ubuntu

  7. 挂起容器,休眠/唤醒
    docker pause/unpause ubuntu

三. 容器更多操作

  1. 添加一个host
    docker run -itd --add-host abc:192.168.1.123 ubuntu
  2. 附加标准输入,输出等
    docker run -it -a STDIN ubuntu
  3. 运行命令
    docker run ubuntu echo hello
    会创建一个容器,命令运行完成后,容器就会停止
  4. 设置DNS
  • 查看dns
    docker exec centos cat /etc/resolv.conf
  • 设置DNS
    docker run -itd --dns 8.8.8.8 centos
  1. 重启容器
    docker run -itd --restart ubuntu
    指定重启次数:(3次失败后,就不再重启了)
    docker run -itd --restart on-failure:3 ubuntu
  2. 指定文件描述符
    docker run -itd --ulimit nproc 10240 --ulimit nfile 10240
  3. 限制容器内存
    docker run-itd -m 10240000 ubuntu
  4. 查看容器属性信息
    docker inspect ubuntu
  5. 容器里面执行命令
  • bash形式
    docker exec ubuntu ls
  • 交互形式
    docker exec it ubuntu ls
    docker exec -it ubuntu /bin/bash
  1. 显示容器中运行的进程
    docker top ubuntu
  2. 显示容器映射的端口信息
    docker port ubuntu
  3. 将宿主机的文件复制到容器中
    docker cp a.txt ubuntu:/home
  4. 将容器中的文件拉取到宿主机
    docker cp ubuntu:/home/a.txt /tmp
  5. 容器启动依以来,做的操作
    docker diff ubuntu
  6. 查看容器的标准输出
    docker logs ubuntu
  7. 动态查看容器的利用率
    docker stats ubuntu
  8. 查看容器的利用率,收集
    docker stats --no-stream ubuntu
  9. 事件查看
    docker events
    针对docker运行状态

四. 容器数据持久化

  1. 数据卷
    将宿主机目录挂载到容器目录
  • 数据卷特点:

在容器启动初始化时,如果容器使用的宿主机挂载点有数据,这些数据就会拷贝到容器中
数据卷可以在容器直接共享和重用
可以直接对数据卷里的内容进行修改
数据卷的变化不会影响镜像的更新
卷会一致存在,即使挂载数据卷的容器已经删除

示例:

docker run -itd --name web01 -v /container_data/web:/data ubuntu

/container_data/web为宿主机目录,/data是容器中的目录,目录不存在会自动创建

  1. 容器数据卷
    将一个运行的容器作为数据卷,让其它容器通过挂载这个容器实现数据共享
    示例:

     docker run -itd -v /data --name dvvdata ubuntu
     docker run -itd --name web01 -volumes-from dvdata ubuntu
    

五. 搭建LNMP网站平台

  1. 创建mysql数据库容器

    docker run -itd --name lnmp_mysql -p 3308:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql --character-set-server=utf8
    
  2. 创建wp数据库

     docker exec lnmp_mysql sh -c 'exec mysql -uroot -p"$MYSQL_ROOT_PASSWORD" -e"create database wp"'
    
  3. 创建PHP环境容器

     docker run -itd --name lnmp_web --link lnmp_mysql:db -p 88:80 -v /container_data/web:/var/www/html richarvey/nginx-php-fpm:1.10.3
    

这里richarvey/nginx-php-fpm 最新版本有resty.core 模块无法加载的bug,所以使用了1.10.3的版本

  1. 以wordpress博客为例测试
 wget https://cn.wordpress.org/wordpress-4.7.4-zh_CN.tar.gz
 tar zxf wordpress-4.7.4-zh_CN.tar.gz
 mv wordpress/* /container_data/web/
  1. 浏览器测试访问
    http://IP:88

你可能感兴趣的:(2. docker容器管理)