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