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"

 

 

 

 

  

  

  

 

 

  

 

posted @ 2019-12-01 17:33  桥头堡洗脚城  阅读(245)  评论(0编辑  收藏  举报