1、容器命令

#说明:我们有了镜像才可以创建容器,下载一个centos镜像来测试学习
[root@node1 ~]# docker pull centos
[root@linux-node1 ~]# docker run --help
#启动选项
选项                      描述
-i, –interactive          #交互式
-t, –tty                  #分配一个伪终端
-d, –detach               #运行容器到后台
-e, –env                  #设置环境变量
-p, –publish list         #发布容器端口到主机
-P, –publish-all          #发布容器所有EXPOSE的端口到宿主机随机端口
–name string              #指定容器名称
-h, –hostname             #设置容器主机名
–ip string                #指定容器IP,只能用于自定义网络
–network                  #连接容器到一个网络
–mount mount              #将文件系统附加到容器
-v, –volume list          #绑定挂载一个卷
–restart string           #容器退出时重启策略,默认no,可选值:[always|on-failure]

1.1 以后台运行的方式启动一个centos容器

[root@node1 ~]# docker run -it -d centos
434db6faf0b171cdf276ead4a0e619fb40fb9c85fae80748644205ee8f2058c3
[root@node1 ~]# 

1.2 查看最新启动的容器

[root@node1 ~]# docker ps -l
CONTAINER ID   IMAGE     COMMAND       CREATED          STATUS          PORTS     NAMES
434db6faf0b1   centos    "/bin/bash"   57 seconds ago   Up 56 seconds             recursing_boyd
[root@node1 ~]# 

1.3 查看centos运行进程

[root@node1 ~]# docker top 434db6faf0b1
UID                 PID                 PPID                C                   STIME               TTY                 TIME                CMD
root                21850               21828               0                   15:26               pts/0               00:00:00            /bin/bash
[root@node1 ~]# 

1.4 进入centos容器

[root@node1 ~]# docker exec -it 434db6faf0b1 /bin/bash

1.5. 查看容器

#列出所有的运行的容器
docker ps          #列出当前正在运行的容器
docker ps -a    #列出所有的容器
docker ps -n=?    #显示最近创建的容器
docker ps -aq   #只显示容器的id

#退出容器
exit            #容器直接停止并退出
Ctrl + P + Q    #容器不停止并退出

1.6. 删除容器

#删除容器
docker rm 容器id                        #删除指定的容器,不能删除正在运行的容器,如果要强制删除 rm -f
docker rm -f $(docker ps -aq)         #删除所有的容器
docker ps -a -q|xargs docker rm -f  #删除所有的容器
for i in `docker ps -a|grep -i exit|awk '{print $1}'`;do docker rm -f $i;done #删除所有退出的容器

1.7. 启动和删除容器

#启动和停止容器的操作
docker start 容器id        #启动容器
docker restart 容器id        #重启容器
docker stop 容器id        #停止当前运行的容器
docker kill 容器id        #强制停止当前容器

1.8.查看容器日志

#查看日志
docker logs -f -t --tail 10 容器id
参数:
    -tf             #时间戳
    --tail numer #要显示日志的条数
#自己编写一段shell脚本,然后查看容器的日志
[root@node1 ~]# docker run -d centos /bin/sh -c "while true;do echo hello;sleep 1;done"
c074ef353597f57c1d22608bd686ab1162c7b54eb1d7b09c7f8a23208c562830
[root@node1 ~]# 
[root@node1 ~]# docker logs -tf --tail 3 c074ef353597
2021-03-17T08:01:51.858553221Z hello
2021-03-17T08:01:52.860892615Z hello
2021-03-17T08:01:53.863171673Z hello
2021-03-17T08:01:54.865843202Z hello
2021-03-17T08:01:55.868568051Z hello

1.9.容器设置环境变量

# 传递环境变量
语法:docker run -e 环境变量key=环境变量value 
# 传递一个环境变量
[root@node1 ~]# docker run --rm -e username=hebye alpine printenv
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
HOSTNAME=aec124b5a336
username=hebye
HOME=/root
[root@node1 ~]# 

# 传递多个环境变量
[root@node1 ~]# docker run --rm -e username=admin -e password=admin123 alpine printenv
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
HOSTNAME=c31195626110
password=admin123
username=admin
HOME=/root
[root@node1 ~]# 

1.10.查看容器中的进程信息

#命令 docker top 容器id
[root@node1 ~]# docker top 94247b341fd7
UID                 PID                 PPID                C                   STIME               TTY                 TIME                CMD
root                23340               23319               0                   16:17               ?                   00:00:00            nginx: master process nginx -g daemon off;
101                 23392               23340               0                   16:17               ?                   00:00:00            nginx: worker process
[root@node1 ~]#
1.11.查看容器的元数据
[root@node1 ~]# docker ps
CONTAINER ID   IMAGE     COMMAND                  CREATED          STATUS          PORTS     NAMES
94247b341fd7   nginx     "/docker-entrypoint.??   39 minutes ago   Up 39 minutes   80/tcp    web
[root@node1 ~]# docker inspect 94247b341fd7

1.12.设置容器退出重启策略

#开机启动
[root@node1 ~]# docker  run -d --name web2 -P -h web2 --restart always nginx 
#在容器非正常退出时重启容器,最多重启3次
[root@node1 ~]# docker  run -d --name web3 -P -h web3 --restart on-failure:3 nginx

1.13.容器资源限制

-m , -memory 容器可以使用的最大内存量
-memory-swap 允许交换到磁盘的内存量(物理内存-swap内存=真实swap空间)
-oom-kill-disable 禁用OOM killer (找出最多消耗资源的进程并杀掉)
-cpus 可以使用的CPU数量
-cpuset-cpus 限制容器使用特定的CPU核心,(0-3,0,1)
-cpu-shares CPU共享(相对权重)

内存限额:
#允许容器最多使用500M内存和100M的Swap,并禁用OOM Killer
[root@node1 ~]# docker run -d --name web03 --memory="500m" --memory-swap="600m" --oom-kill-disable nginx
#查看容器的设置
[root@node1 ~]# docker stats --no-stream web03
CONTAINER ID   NAME      CPU %     MEM USAGE / LIMIT   MEM %     NET I/O     BLOCK I/O     PIDS
2956648b45ff   web03     0.00%     1.414MiB / 500MiB   0.28%     656B / 0B   1.13MB / 0B   2
[root@node1 ~]# 
CPU限额:
#允许容器最多使用一个的CPU:
[root@node1 ~]# docker run -d --name nginx01 --cpus="1" nginx
#允许使用最多百分之50%的CPU
[root@node1 ~]# docker run -d --name  nginx02  --cpus=".5"  nginx

1.14.管理容器的常用命令

选项              描述
ls                 列出容器
inspect            查看一个或多个容器详细信息
exec              在运行容器中执行命令
commit            创建一个新镜像来自一个容器
cp                拷贝文件/文件夹到一个容器
logs              获取一个容器日志
port            列出或指定容器端口映射
top                显示一个容器运行的进程
stats            显示容器资源使用统计
stop/start        停止/启动一个或多个容器
rm                删除一个或多个容器

1.15.拷贝宿主机目录或者文件到容器中

[root@node1 ~]# docker cp mysql_5.7.tar  web2:/
[root@node1 ~]# docker exec -it web2 ls /
bin   docker-entrypoint.d   home   media      opt    run   sys  var
boot  docker-entrypoint.sh  lib    mnt          proc    sbin  tmp
dev   etc            lib64  mysql_5.7.tar  root    srv   usr
[root@node1 ~]# 

1.16.拷贝容器内文件到宿主机

[root@node1 opt]# docker cp 98cb5a4c9b1f:/mysql_5.7.tar .
[root@node1 opt]# ls
containerd  mysql_5.7.tar
[root@node1 opt]# 

1.17.查看容器中端口映射

[root@node1 ~]# docker port web2
80/tcp -> 0.0.0.0:49153
[root@node1 ~]# 
文档更新时间: 2021-03-17 22:05   作者:xtyang