docker命令
-- 查看docker版本
docker version
-- 移除旧的版本
$ sudo yum remove docker \ docker-client \ docker-client-latest \ docker-common \ docker-latest \ docker-latest-logrotate \ docker-logrotate \ docker-selinux \ docker-engine-selinux \ docker-engine
-- 安装步骤
-- 安装一些必要的系统工具
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
-- 添加软件源信息
sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
-- 更新 yum 缓存
sudo yum makecache fast
-- 安装 Docker-ce
sudo yum -y install docker-ce
-- 启动 Docker 后台服务
sudo systemctl start docker
-- 查看docker本地镜像
-- REPOSITORY:表示镜像的仓库源
-- TAG:镜像的标签
docker images
-- 查询镜像
-- NAME:镜像仓库源的名称
-- DESCRIPTION:镜像的描述
-- OFFICIAL:是否docker官方发布
docker search 关键字
-- 获取镜像
docker pull training/webapp
-- 查看运行中的容器
-- CONTAINER ID:容器ID
-- NAMES:自动分配的容器名称
-- -a 查看全部容器
-- -l 查询最后一次创建的容器
docker ps
-- 删除镜像
docker image rm 镜像
-- 查看到容器的端口映射
docker port 容器ID
-- 可以查看容器内部的标准输出
docker logs -f 容器ID
-- 查看容器内部运行的进程
docker top 容器ID
-- 查看 Docker 的底层信息
docker inspect 容器ID
docker inspect NAMES # 查看容器所有状态信息; docker inspect --format='{{.NetworkSettings.IPAddress}}' ID/NAMES # 查看 容器ip 地址 docker inspect --format '{{.Name}} {{.State.Running}}' NAMES # 容器运行状态
-- 删除容器
docker rm 容器ID
-- 查询容器名字是ub开头
docker rm ` docker ps -a|grep ub|awk '{print $1}'`
-- 启动容器
docker start 容器ID
-- 使用 docker run 命令来在容器内运行一个应用程序。输出Hello world
docker run ubuntu:15.10 /bin/echo "Hello world"
-- 通过docker的两个参数 -i -t,让docker运行的容器实现"对话"的能力
-- -t:在新容器内指定一个伪终端或终端。
-- -i:允许你对容器内的标准输入 (STDIN) 进行交互。
-- -d:让容器在后台运行。
-- -P:是容器内部端口随机映射到主机的高端口。
-- -p:是容器内部端口绑定到指定的主机端口。
-- --name:标识来命名容器
-- exit退出容器终端
-- 使用 REPOSITORY:TAG 来定义不同的镜像
docker run -i -t ubuntu:15.10 /bin/bash
-- 在docker容器中运行一个 Python Flask 应用来运行一个web应用
docker run -d -P training/webapp python app.py
-- 通过 -p 参数来设置不一样的端口
docker run -d -p 5000:5000 training/webapp python app.py
-- 进入一个启动的容器
docker exec -it 容器ID /bin/bash
-- 默认都是绑定 tcp 端口,如果要绑定 UDP 端口,可以在端口后面加上 /udp
docker run -d -p 127.0.0.1:5000:5000/udp training/webapp python app.py
-- 可以使用 --name 标识来命名容器
docker run -d -P --name runoob training/webapp python app.py
-- 创建一个以进程方式运行的容器
docker run -d ubuntu:15.10 /bin/sh -c "while true; do echo hello world; sleep 1; done"
-- 查看IP地址
yum install net-tools -y
-- 容器内存设置
-m 或 –memory:设置内存的使用限额,例如 100M, 2G。 –memory-swap:设置 内存+swap 的使用限额。 列如: docker run -m 200M --memory-swap=300M ubuntu 其含义是允许该容器最多使用 200M 的内存和 100M 的 swap。默认情况下,上面两组参数为 -1,即对容器内存和 swap 的使用没有限制。 --memory-swap 介绍 只有当--memory设置之后,--memory-swap 才会生效 1、如果--memory-swap设置为正整数,那么这两个--memory和 --memory-swap必须设置。--memory-swap表示可以使用的内存和交换总量,并--memory控制非交换内存使用的数量。因此,如果--memory="300m"和--memory-swap="1g",容器可以使用300m的内存和700m(1g - 300m)交换。 2、如果--memory-swap设置为0,则忽略该设置,并将该值视为未设置。 3、如果--memory-swap设置为与值相同的值--memory,并且--memory设置为正整数,则不使用swap。 4、如果--memory-swap未设置并且--memory已--memory设置,则如果主机容器配置了交换内存,则容器可以使用两倍于设置的交换。例如,如果--memory="300m"和--memory-swap未设置,容器可以使用300m的内存和600m的交换。 5、如果--memory-swap明确设置为-1,则允许容器使用无限制交换,最多可达主机系统上可用的数量。 防止容器使用交换 如果--memory和--memory-swap设置为相同的值,则可以防止容器使用任何交换。这是因为--memory-swap可以使用的组合内存和交换量,而--memory只是可以使用的物理内存量。 --memory-swappiness 细节 值为0将关闭匿名页面交换。 值100将所有匿名页面设置为可交换。 默认情况下,如果未设置--memory-swappiness,则值将从主机继承。 --kernel-memory 细节 内核内存限制以分配给容器的总内存表示。请考虑以下方案: 1、无限内存,无限内核内存:这是默认行为。 2、无限内存,有限内核内存:当所有cgroup所需的内存量大于主机上实际存在的内存量时,这是合适的。您可以将内核内存配置为永远不会覆盖主机上可用的内容,而需要更多内存的容器需要等待它。 3、有限的内存,无限的内核内存:整体内存有限,但内核内存不受限制。 4、有限的内存,有限的内核内存:限制用户和内核内存对于调试与内存相关的问题非常有用。如果容器正在使用意外数量的任一类型的内存,则它会耗尽内存而不会影响其他容器或主机。在此设置中,如果内核内存限制低于用户内存限制,则内核内存不足会导致容器遇到OOM错误。如果内核内存限制高于用户内存限制,则内核限制不会导致容器遇到OOM。
gitlab容器配置 docker run -d -p 9443:443 -p 9080:80 -p 9022:22 \ --name gitlab --restart always \ --volume /software/gitlab/config:/etc/gitlab \ --volume /software/gitlab/logs:/var/log/gitlab \ --volume /software/gitlab/data:/var/opt/gitlab \ -m 2g \ --memory-swap=2200m \ gitlab/gitlab-ce:latest
-- 查看容器运行状态命令
持续监控 docker stats 只返回当前的状态 docker stats --no-stream 只输出指定的容器 docker stats --no-stream 容器ID/Name 格式化输出的结果 docker stats --format “table {{.Name}}\t{{.CPUPerc}}\t{{.MemUsage}}"
显示列说明 .Container 根据用户指定的名称显示容器的名称或 ID .Name 容器名称 .ID 容器 ID .CPUPerc CPU 使用率 .MemUsage 内存使用量 .NetIO 网络 I/O .BlockIO 磁盘 I/O .MemPerc 内存使用率 .PIDs PID 号
对运行中的容器设置限制
例如:docker container update nginx --cpus="2" --memory="8g" --memory-swap="-1"
docker container update gitlab --memory="500m" --memory-swap="800m"