1. 创建容器常用选项

    Docker入门与应用实战之Docker容器管理_第1张图片

    Docker入门与应用实战之Docker容器管理_第2张图片


  2. 容器资源限制

    Docker入门与应用实战之Docker容器管理_第3张图片


  3. 管理容器常用命令

    Docker入门与应用实战之Docker容器管理_第4张图片

  4. 实战演练

    案例一:

[root@localhost ~]docker run -d --name nginx03 --memory="500m" --memory-swap="600m" --oom-kill-disable nginx
5fbb069b1fed579f6ccdb5f0d5fe1b746c19655acff56cd141b1c71c79493b79
[root@localhost ~]# docker stats nginx03
CONTAINER ID        NAME                CPU %               MEM USAGE / LIMIT   MEM %               NET I/O             BLOCK I/O           PIDS
5fbb069b1fed        nginx03             0.00%               1.387MiB / 500MiB   0.28%               648B / 0B           0B / 0B             2
CONTAINER ID        NAME                CPU %               MEM USAGE / LIMIT   MEM %               NET I/O             BLOCK I/O           PIDS
5fbb069b1fed        nginx03             0.00%               1.387MiB / 500MiB   0.28%               648B / 0B           0B / 0B             2
CONTAINER ID        NAME                CPU %               MEM USAGE / LIMIT   MEM %               NET I/O             BLOCK I/O           PIDS
5fbb069b1fed        nginx03             0.00%               1.387MiB / 500MiB   0.28%               648B / 0B           0B / 0B             2

[root@localhost ~]# docker run -d --name nginx04 --cpus="1.5" nginx
6a8520dc69bd2265951ced8ce80277f19fa73b58fbf20de32a57f2a81e93be16
[root@localhost ~]# 
[root@localhost ~]# docker stats nginx04
CONTAINER ID        NAME                CPU %               MEM USAGE / LIMIT     MEM %               NET I/O             BLOCK I/O           PIDS
6a8520dc69bd        nginx04             0.00%               1.387MiB / 1.953GiB   0.07%               648B / 0B           0B / 0B             2
CONTAINER ID        NAME                CPU %               MEM USAGE / LIMIT     MEM %               NET I/O             BLOCK I/O           PIDS
6a8520dc69bd        nginx04             0.00%               1.387MiB / 1.953GiB   0.07%               648B / 0B           0B / 0B             2
CONTAINER ID        NAME                CPU %               MEM USAGE / LIMIT     MEM %               NET I/O             BLOCK I/O           PIDS
6a8520dc69bd        nginx04             0.00%               1.387MiB / 1.953GiB   0.07%               648B / 0B           0B / 0B             2

[root@localhost ~]# docker run -d --name nginx05 --cpus=".5" nginx
a5669268253f2e9d4a75a39469c25a2a5f35d6f2d32ad552666ab0186a1e9963
[root@localhost ~]# docker stats nginx05
CONTAINER ID        NAME                CPU %               MEM USAGE / LIMIT     MEM %               NET I/O             BLOCK I/O           PIDS
a5669268253f        nginx05             0.00%               1.391MiB / 1.953GiB   0.07%               578B / 0B           0B / 0B             2
CONTAINER ID        NAME                CPU %               MEM USAGE / LIMIT     MEM %               NET I/O             BLOCK I/O           PIDS
a5669268253f        nginx05             0.00%               1.391MiB / 1.953GiB   0.07%               578B / 0B           0B / 0B             2
CONTAINER ID        NAME                CPU %               MEM USAGE / LIMIT     MEM %               NET I/O             BLOCK I/O           PIDS
a5669268253f        nginx05             0.00%               1.391MiB / 1.953GiB   0.07%               578B / 0B           0B / 0B             2

    案例二:

创建内存为500M的nginx容器
docker run -d --name nginx --memory="500m" nginx
查看容器状态
docker stats nginx
删除所有的容器:
docker rm -f $(docker ps -a |awk '{print $1}')


[root@localhost ~]# docker run -d --name nginx --memory="500m" nginx
28f5bae432ede73aa33daac353f12884be41a349540b3dd26b571fe9a85ed83a
[root@localhost ~]# 
[root@localhost ~]# docker stats nginx  #动态监控
CONTAINER ID        NAME                CPU %               MEM USAGE / LIMIT   MEM %               NET I/O             BLOCK I/O           PIDS
28f5bae432ed        nginx               0.00%               1.387MiB / 500MiB   0.28%               508B / 0B           0B / 0B             2
CONTAINER ID        NAME                CPU %               MEM USAGE / LIMIT   MEM %               NET I/O             BLOCK I/O           PIDS
28f5bae432ed        nginx               0.00%               1.387MiB / 500MiB   0.28%               578B / 0B           0B / 0B             2
CONTAINER ID        NAME                CPU %               MEM USAGE / LIMIT   MEM %               NET I/O             BLOCK I/O           PIDS
28f5bae432ed        nginx               0.00%               1.387MiB / 500MiB   0.28%               578B / 0B           0B / 0B             2

[root@localhost ~]# docker stats nginxserver
CONTAINER ID        NAME                CPU %               MEM USAGE / LIMIT     MEM %               NET I/O             BLOCK I/O           PIDS
affb3483a380        nginxserver         0.00%               1.379MiB / 1.953GiB   0.07%               1.3kB / 0B          0B / 0B             2
CONTAINER ID        NAME                CPU %               MEM USAGE / LIMIT     MEM %               NET I/O             BLOCK I/O           PIDS
affb3483a380        nginxserver         0.00%               1.379MiB / 1.953GiB   0.07%               1.3kB / 0B          0B / 0B             2
CONTAINER ID        NAME                CPU %               MEM USAGE / LIMIT     MEM %               NET I/O             BLOCK I/O           PIDS
affb3483a380        nginxserver         0.00%               1.379MiB / 1.953GiB   0.07%               1.3kB / 0B          0B / 0B             2

[root@localhost ~]# docker rm -f $(docker ps -a |awk '{print $1}')
28f5bae432ed
257212b16d8d
acb0d268f4e5
affb3483a380
Error: No such container: CONTAINER
[root@localhost ~]# docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
[root@localhost ~]#

结论:默认使用宿主机的所有剩余内存。

  案例三:

启动java容器并传入环境变量
docker run -itd -e JAVA_HOME=/usr/local/jdk --name test -h java8 java:8
docker run -itd --restart=always -e JAVA_HOME=/usr/local/jdk --name test -h java8 java:8


[root@localhost ~]# docker run -itd -e JAVA_HOME=/usr/local/jdk --name test -h java8 java:8
Unable to find image 'java:8' locally
8: Pulling from library/java
5040bd298390: Pull complete 
fce5728aad85: Pull complete 
76610ec20bf5: Pull complete 
60170fec2151: Pull complete 
e98f73de8f0d: Pull complete 
11f7af24ed9c: Pull complete 
49e2d6393f32: Pull complete 
bb9cdec9c7f3: Pull complete 
Digest: sha256:34959eed5df6bfe74a17fbf459ed29505d51a48d5cb4a39f215b613c65b8023b
Status: Downloaded newer image for java:8
4ea94a839a6d17bdfd2577c6e46e02331de79bcb82508978ee93357020618b35
[root@localhost ~]# docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                NAMES
4ea94a839a6d         java:8               "/bin/bash"                   39 seconds ago            Up 30 seconds                            test10
89ff05f9b5cf         nginx               "nginx -g 'daemon of…"          3 hours ago           Up 3 hours            0.0.0.0:80->80/tcp   nginxserver
[root@localhost ~]# docker exec -it test bash
root@java8:/# echo $JAVA_HOME 
/usr/local/jdk
root@java8:/# java -version 
openjdk version "1.8.0_111"
OpenJDK Runtime Environment (build 1.8.0_111-8u111-b14-2~bpo8+1-b14)
OpenJDK 64-Bit Server VM (build 25.111-b14, mixed mode)
root@java8:/# which java
/usr/bin/java
root@java8:/# ls /usr/local/jdk
ls: cannot access /usr/local/jdk: No such file or directory
root@java8:/#