一.创建容器常用选项
- 创建容器命令格式
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 | 链接 |
二. 容器的基本操作
- 查询容器
- 查询运行的容器
docker ps
- 查询所有的容器
docker ps -a
- 查询最新创建的容器
docker ps -l
- 只显示容器的id
docker ps -q
- 显示容器的大小
docker ps -s
- 创建并且运行容器
-
docker run -itd --name test01 ubuntu
docker run -itd --name test01_self ubuntu:self
-
docker exec -it test01 /bin/bash
self: 是TAG
-
进入到容器内部
docker attach test01
test01是容器名称 -
停止/启动容器
docker stop/start test01
-
删除容器
docker rm test01
-
删除所有容器
docker rm -f $(docker ps -q -a)
-
重命名容器
docker rename oldname newname
-
杀死容器进程
docker kill ubuntu
-
挂起容器,休眠/唤醒
docker pause/unpause ubuntu
三. 容器更多操作
- 添加一个host
docker run -itd --add-host abc:192.168.1.123 ubuntu
- 附加标准输入,输出等
docker run -it -a STDIN ubuntu
- 运行命令
docker run ubuntu echo hello
会创建一个容器,命令运行完成后,容器就会停止 - 设置DNS
- 查看dns
docker exec centos cat /etc/resolv.conf
- 设置DNS
docker run -itd --dns 8.8.8.8 centos
- 重启容器
docker run -itd --restart ubuntu
指定重启次数:(3次失败后,就不再重启了)
docker run -itd --restart on-failure:3 ubuntu
- 指定文件描述符
docker run -itd --ulimit nproc 10240 --ulimit nfile 10240
- 限制容器内存
docker run-itd -m 10240000 ubuntu
- 查看容器属性信息
docker inspect ubuntu
- 容器里面执行命令
- bash形式
docker exec ubuntu ls
- 交互形式
docker exec it ubuntu ls
docker exec -it ubuntu /bin/bash
- 显示容器中运行的进程
docker top ubuntu
- 显示容器映射的端口信息
docker port ubuntu
- 将宿主机的文件复制到容器中
docker cp a.txt ubuntu:/home
- 将容器中的文件拉取到宿主机
docker cp ubuntu:/home/a.txt /tmp
- 容器启动依以来,做的操作
docker diff ubuntu
- 查看容器的标准输出
docker logs ubuntu
- 动态查看容器的利用率
docker stats ubuntu
- 查看容器的利用率,收集
docker stats --no-stream ubuntu
- 事件查看
docker events
针对docker运行状态
四. 容器数据持久化
- 数据卷
将宿主机目录挂载到容器目录
- 数据卷特点:
在容器启动初始化时,如果容器使用的宿主机挂载点有数据,这些数据就会拷贝到容器中
数据卷可以在容器直接共享和重用
可以直接对数据卷里的内容进行修改
数据卷的变化不会影响镜像的更新
卷会一致存在,即使挂载数据卷的容器已经删除
示例:
docker run -itd --name web01 -v /container_data/web:/data ubuntu
/container_data/web为宿主机目录,/data是容器中的目录,目录不存在会自动创建
-
容器数据卷
将一个运行的容器作为数据卷,让其它容器通过挂载这个容器实现数据共享
示例:docker run -itd -v /data --name dvvdata ubuntu docker run -itd --name web01 -volumes-from dvdata ubuntu
五. 搭建LNMP网站平台
-
创建mysql数据库容器
docker run -itd --name lnmp_mysql -p 3308:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql --character-set-server=utf8
-
创建wp数据库
docker exec lnmp_mysql sh -c 'exec mysql -uroot -p"$MYSQL_ROOT_PASSWORD" -e"create database wp"'
-
创建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的版本
- 以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/
- 浏览器测试访问
http://IP:88
网友评论