操作容器
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%
-
--cpus
指定一个容器可以使用多少cpu
资源,如果当前宿主机有4个cpu
,那么--cpus=1
命令,则限制了这个容器最多只能使用1个cpu
资源 -
--cpu-period
和--cpu-quota
这俩是在docker1.13
之前使用的,现在可以用--cpus
代替了。作用和它一样就是限制cpu
使用。例如设置了--cpu-period="100000" --cpu-quota="150000"
,则表明在一个cpu周期100000
内,该容器可以使用150000 ----> --cpus=1.5
,也就是1.5倍。 -
--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核心数量=共有多少核心
查看每个核心使用情况
- 输入命令
top -bn1
- 再输入
top
- 再按数字键 1
7、内存限制
-m
或者--memory
容器最大使用的内存用量,最小4m
,单位可取b,k,m,g
分别代表字节,千字节,兆,g。--memory-swap
交换内存,配合--m
使用- 如果没有设置这个,设置了
-m=300m
,则交换内存也等于300m
,总内存等于600m
- 如果
--memory-swap=1g -m=300m
,那么容器占总内存为1g
,交换内存700m
,使用内存300m
- 如果
--memory-swap=-1
表示不限制 - 如果
--memory-swap=1g -m=1g
,表示不能使用交换内存
- 如果没有设置这个,设置了