一、Docker基本使用方法
- Docker镜像相当于,将程序+依赖库打一个包。
- docker容器就是一个物理进程
cpu core核心控制,docker run 命令中的参数。
–cpuset-cpus参数,指定容器运行时使用那些cpu内核。
–cpu-shares参数,限定容器运行时占用cpu的份额。
taskset命令
taskset设定cpu的亲和力,将一个或多个进程绑定到一个或多个处理器上运行。
参数:
- -c,–cpu-list
- -p,–pid
Linux压力测试工具stress
stress是Linux压力测试工具
二、docker容器参数
2.1 docker容器对宿主机cpu,内存使用设置
docker容器重命名
docker rename oldname newname
创建docker容器实例时指定主机名
docker run -it --name 容器名 -h 主机名 镜像名 /bin/bash
容器退出时,始终重启容器
–restart=always
docker run -itd --name 容器名 --restart=always 镜像名 /bin/bash
dockr容器实例运行结束后自动释放资源
参数:–rm
–rm Automatically remove the container when it exits
docker run -it --rm --name zh1 centos sleep 5
docker ps -a | grep zh1 #查看zh1容器时,已经被删除了
docker容器内存使用控制
- -m, --memory bytes Memory limit
docker run -it -m 128m --name centos_test centos #没有写bash,默认是bash。
[root@94939cc06569 /]# exit #退出容器,就自动停止容器了。
创建一个docker容器,使用2个cpu核心,只能使用128M内存
docker run -it --name centos_zh --cpuset-cpus 0,1 -m 128 centos
2.2 docker数据映射
语法
docker run -itd -v /src:/dst centos bash
- -v 用来指定挂载目录
- 冒号前为宿主机内目录,冒号后为容器内目录
数据映射实例
[root@zhouhao ~]# docker run -it --name web11 -v /var/www/html:/var/www/html centos bash
[root@341237f05a17 /]# echo aaa > /var/www/html/html.index #在容器中将内容写入文本
[root@zhouhao /]# cat /var/www/html/html.index #去到宿主机上查看对应目录
aaa
2.3 docker容器资源配置之IO
IO控制
–device-read-bps list Limit read rate (bytes per second) from a device (default [])
–device-write-bps list Limit write rate (bytes per second) to a device (default [])
防止某个docker容器吃光磁盘IO资源
限制容器对磁盘的最高写入速度是1MB/s
docker run -it -v /var/www/html:/var/www/html --device /dev/sda:/dev/sda --device-write-bps /dev/sda:1mb centos /bin/bash
三、Dockerfile概述
3.1 4组核心的dockerfile指令
- USER/WORKDIR指令
- ADD/EXPOSE指令
- RUN/ENV指令
- CMD/ENTRYPOINT指令
whoami指令用于显示用户自身名称。
关于EXPOSE指令
在Dockerfile文件中指定EXPOSE 80,在启动镜像时要配合 -P
使用。例如:
docker run -it -P --name centos_test centos /bin/bash
在宿主机会随机映射一个端口号,到容器的80端口。
RUN指令
在构建镜像时运行的指令
CMD指令
在启动容器时运行的指令。若没有指定CMD指令,默认去到容器中的/entrypoint.sh脚本执行该脚本命令,entrypoint.sh脚本要具有可执行权限。
ENTRYPOINT指令
容器启动时,会运行该指令。若没有指定ENTRYPOINT指令,/entrypoint.sh脚本也不存在,默认执行/bin/bash。
3.2 运行docker容器,在浏览器打开能访问百度页面
dockerfile文件内容
FROM nginx
USER root
ENV WWW /usr/share/nginx/html
ENV CONF /etc/nginx/conf.d
RUN /bin/cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && \
echo 'Asia/Shanghai' > /etc/timezone
WORKDIR $WWW
ADD index.html $WWW/index.html
ADD demo.od.com.conf $CONF/demo.od.com.conf
EXPOSE 80
CMD ["nginx","-g","daemon off;"]
index.html文件来源
wget www.baidu.com -O index.html
demo.od.com.conf文件内容
server{
listen 80;
server_name demo.od.com;
root /usr/share/nginx/html;
}
构建docker镜像命令
docker build -t nginx:baidu -f Dockerfile .
启动docker容器命令
docker run -it -p 80:80 nginx:baidu
访问效果