docekr系列-04操作容器

seefly 2020年07月30日 138次浏览

操作容器

1、运行容器

docker run -d -p 2222:2222 -e JAVA_OPTS="-Xmx=1mb" -v /opt:/opt -v /data:/data --name containerName imageName

2、进入容器

docker exec -it <ContainerID> [CMD例如 bash或/bin/sh]
# 进入java容器
docker exec -it ca34 /bin/sh

3、删除容器

docker rm -f <ContainerId>

4、容器重命名

docker container rename <oldName> <newName>

有了镜像后,我们就能够以这个镜像为基础启动并运行一个容器。以上面的 ubuntu:18.04 为例,如果我们打算启动里面的 bash 并且进行交互式操作的话,可以执行下面的命令。


$ docker run -it --rm \
    --name myubunt \
    ubuntu:18.04 \
    bash
  • -it : 这是两个参数,一个是 -i 即交互式操作,-t 是一个终端。
  • --rm :从容器中退出后删除当前这个容器,一般就是测试使用
  • --name:给这个容器起一个名字,都--rm了,起不起名字不重要
  • ubuntu:18.04:使用的镜像

5、宿主和容器间复制

# 从外向里复制
docker cp <宿主机文件> <容器名>:<容器内路径>

docker cp server.xml containerA:/usr/local/tomcat/conf/

6、限制容器CPU

如果限制--cpus=2说明只能只用两个核心,例如服务器有16核,那么while(true)死循环的情况下,是只有两个核心100%状态,top命令看到的情况是cpu占用200%

  1. --cpus
    指定一个容器可以使用多少cpu资源,如果当前宿主机有4个cpu,那么--cpus=1命令,则限制了这个容器最多只能使用1个cpu资源

  2. --cpu-period--cpu-quota
    这俩是在docker1.13之前使用的,现在可以用--cpus代替了。作用和它一样就是限制cpu使用。例如设置了--cpu-period="100000" --cpu-quota="150000",则表明在一个cpu周期100000内,该容器可以使用150000 ----> --cpus=1.5,也就是1.5倍。

  3. --cpuset-cpus
    限制容器使用指定的cpu,如--cpuset-cpus="0-3"只能使用1,2,3,4核,或者--cpuset-cpus="0"只能使用第一个核心

补充
cat /proc/cpuinfo
查看服务器cpu信息

cat /proc/cpuinfo |grep "physical id"|sort|uniq|wc -l
查看几个物理cpu

grep 'core id' /proc/cpuinfo | sort -u | wc -l
每个物理cpu有几个核心 --cpus限制的就是这个

所以物理cpu数量*每个物理cpu核心数量=共有多少核心

查看每个核心使用情况

  1. 输入命令 top -bn1
  2. 再输入 top
  3. 再按数字键 1

7、内存限制

  1. -m或者 --memory
    容器最大使用的内存用量,最小4m,单位可取b,k,m,g分别代表字节,千字节,兆,g。
  2. --memory-swap
    交换内存,配合--m使用
    • 如果没有设置这个,设置了-m=300m,则交换内存也等于300m,总内存等于600m
    • 如果--memory-swap=1g -m=300m,那么容器占总内存为1g,交换内存700m,使用内存300m
    • 如果--memory-swap=-1表示不限制
    • 如果--memory-swap=1g -m=1g,表示不能使用交换内存