docker服务之容器管理命令
docker管理命令
随机端口运行
$ docker run -lt P nginx
指定端口运行
$ docker run -d --name nginx-test -p 81:80 nginx
$ docker run -it -p 192.168.7.101:8801:80 nginx #指定ip运行
测试:curl http://192.168.7.101:8801
4.6查看日志
$ docker logs nginx-test
$ docker logs -f nginx-test
4.7查看映射端口
root@docker-node1:~# docker port nginx-test
80/tcp -> 0.0.0.0:81
4.8后台启动nginx
docker run -d --name nginx-teset2 -p 8801:80 nginx #-d 即为后台启动、只针对当前终端,关闭终端后,nginx也就不执行
4.9进入nginx
$ docker run -it --name centso-test1 nginx bash #进入容器、
$ exit #退出容器
$ docker exec -it nginx-test3 bash 再次进入容器
$ docker run -it --rm --name centso-test1 nginx 单次进入容器,退出即删除
命令传递
docker run -d -it centos /usr/bin/tail -f \'/etc/hosts\'
docker exec -it 1b6056266ba753ccbc056aed30a7970b8a825e0a1862a481eaf5ddbe5b09ded0 bash
4.10容器启动和停止
$ docker stop f12f8b8dc688 #不常用
$ docker start f12f8b8dc688
4.11进入容器命令
exec命令
执行单次命令与进入容器,不是很推荐此方式,虽然 exit 退出容器还在运行
docker exec -it 1b6056266ba7 bash
nsenter 命令:
推荐使用此方式,nsenter 命令需要通过 PID 进入到容器内部,不过可以使用
docker inspect 获取到容器的 PID:
centos:yum install util-linux #安装 nsenter 命令
Ubuntu: apt instlll util-linux
docker inspect d4dfa1b6acd1 -f "{{.NetworkSettings.IPAddress}}"
docker inspect d4dfa1b6acd1 -f "{{.State.Pid}}"
nsenter -t PID -m -u -i -n -p
脚本方式进入
$ cat docker-start.sh
#!/bin/bash
docker_in(){
NAME_ID=$1
PID=$(docker inspect -f "{{.State.Pid}}" ${NAME_ID})
nsenter -t ${PID} -m -u -i -n -p
}
docker_in $1
$ bash docker-start.sh d4dfa1b6acd1
继承宿主机的网络
4.12容器关闭
$ docker ps
$ docker kill 1b6056266ba7
$ docker ps -a -q
$ docker kill $(docker ps -a -q)
删除容器
#删除已经退出容器
root@docker-node1:~/scripts# docker rm -f `docker ps -aq -f status=exited`
d4dfa1b6acd1
00d91f2af7c4
66459b7ec6c1
3c524ad8e18a
1b6056266ba7
0d4743a57b96
ff52ff99ab0a
cda8f817fb9c
f6d1ed50a8d0
bd06cf7ca242
0dc78f574f24
7093dea4ee1b
59a7fbd92693
删除所有容器(慎重操作,危险)
$ docker rm -f $(docker ps -a -q)