docker基础命令(8)

1572人浏览 / 0人评论

一、创建并进入容器

[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

 

 

全部评论