一、创建并进入容器
[root@1 ~]# docker run -it --name centos-test1 centos /bin/bash
[root@7cf7e37e8690 /]# ls
bin etc lib lost+found mnt proc run srv tmp var
dev home lib64 media opt root sbin sys usr
exit后容器退出关闭了
后台运行
[root@1 ~]# docker run -d --name centos-test3 centos
cdd8b228db752769e441e27d24c80c250848ee474aa4ac18559caad6526705bd
二、容器退出后自动删除
[root@1 ~]# docker run -it --rm --name nginx-delete-test nginx
三、传递运行命令
容器需要有一个前台运行的进程才能保持容器的运行,通过传递运行参数是一种方式,另外也可以在构建镜像的时候指定容器启动时运行的前台命令。
[root@1 ~]# docker run -d centos /usr/bin/tail -f '/etc/hosts'
6de69ae892c23173419642d10542046cb896a29f910f4b2adeafe4a823d80970
四、docker启动和关闭
[root@1 ~]# docker stop 1736fd58fca0
[root@1 ~]# docker start 1736fd58fca0
五、进入正在运行的容器中
1、使用attach命令
#使用方式为docker attach 容器名,attach 类似于vnc,操作会在各个容器界面显示,所有使用此方式进入容器的操作都是同步显示的且exit后容器将被关闭,且使用exit退出后容器关闭,不推荐使用,
[root@1 ~]# docker attach f8110105ee93
ctrl+p+q 退出后还在运行
2、exec命令
执行单次命令与进入容器,不是很推荐此方式,虽然exit退出容器还在运行
[root@1 ~]# docker exec -it centos-test /bin/bash
3、使用nsenter
推荐使用此方式,nsenter命令需要通过PID进入到容器内部,不过可以使用docker inspect获取到容器的PID:
[root@1 ~]# yum install util-linux #安装nsenter命令
查看容器的ip
[root@1 ~]# docker inspect -f "{{.NetworkSettings.IPAddress}}" f8110105ee93
172.18.0.3
开始拉!
先查看容器的ID
[root@1 ~]# docker inspect -f "{{.State.Pid}}" centos-test
9291进入到容器里面
[root@1 ~]# nsenter -t 9291 -m -u -i -p
脚本方式:
#!/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
4、查看容器内部host文件
#默认会将实例的ID 添加到容器的hosts文件
五、批量命令
1、批量关闭正在运行的容器
[root@1 ~]# docker stop $(docker ps -a -q)
2、强制关闭正在运行的容器
[root@1 ~]# docker kill $(docker ps -q -a)
3、批量删除状态为exit的容器
[root@1 ~]# docker rm $(docker ps -aq -f status=exited)
4、批量删除所有容器
[root@1 ~]# docker rm -f $(docker ps -a -q)
5、指定容器的DNS
Dns服务,默认采用宿主机的dns 地址
一是将dns地址配置在宿主机
二是将参数配置在docker 启动脚本里面 –dns=1.1.1.1
[root@1 ~]# docker run -it --rm --dns 223.6.6.6 centos bash
[root@3442ec0b5c59 /]# cat /etc/resolv.conf
nameserver 223.6.6.6
options timeout:1 rotate
有问题请加博主微信进行沟通!
全部评论