一.Docker容器管理
创建新容器但不启动
docker create -it daocloud.io/1ibrary/centos :5/bin/bash
创建并运行一个新Docker容器
同一个镜像可以启动多个容器,每次执行run子命令都会运行一个全新的容器
docker run -it --restart=a1ways centos /bin/bash
如果执行成功,说明centos容器已经被启动,并且应该已经得到了 bash提示符。
-i
捕获标准输入输出
-t
分配一个终端或控制台
–restart=always
容器随docker engine自启动,因为在重启docker的时候默认容器都会被关闭也适用于create选项
–rm
默认情况下,每个容器在退出时,它的文件系统也会保存下来,这样一方面调试会方便些,因为你可以通过查看日志等方式来确定最终状态。另一方面,也可以保存容器所产生的数据。
但是当你仅仅需要短暂的运行一个容器,并且这些数据不需要保存,你可能就希望Docker
能在容器结束时自动清理其所产生的数据。这个时候就需要–rm参数了。注意: --rm
和-d
不能共用
容器名称
–name=Assign a name to the container
–为容器分配一个名字,如果没有指定,docker会自动分配一个随机名称是docker run子命令的参数
可以通过三种方式调用容器命名:
1)使用UUID长命名(“f78375b1c487e03c9438c729345e54db9d20cfa2ac1fc3494b6eb60872e74778”)
2)使用UUID短Id ( “f78375b1c487”)
3)使用Name(“evi1_ptolemy”)
这个UUTD标识是由Docker deamon生成的。
如果你在执行docker run时没有指>-name,那么deamon会自动生成一个随机字符串UUID。但是对于一个容器来说有个name会非常方处,当你需要连接其它容器时或者类似需要区分其它容器时,使用容器名称可以简化操作。无论容器运行在前台或者后台,这个名字都是有效的。
保存容器PID equivalent:
如果在使用Docker
时有自动化的需求,你可以将containerID
输出到指定的文件中(PIDfile),类似于某些应用程序将自身ID输出到文件中,方便后续脚本操作。
--cidfile="": write the container ID to the file
断开与容器的连接,并且关闭容器:
root@d33c4e8c51f8 /#exit
如果只想断开和容器的连接而不关闭容器:
快捷键: ctrl+p+q
查看容器:
只查看运行状态的容器:dokcer ps
查看所有的容器: docker ps -a
只查看所有容器id:docker ps -a -q
列出最近一次启动的容器(了解): docker ps -l
查看容器或者镜像详细信息: docker inspect id(容器id或者镜像id)
提示:可以使用镜像id的前面部分,不需要完整的id。
列出所有绑定的端口
docker inspect --format='{{range $p,$conf :=.NetworkSettings.Ports}} {{$p}} -> {{(index $conf 0).HostPort}} {{end}}' 609d6c4b484f(容器名称或者容器id)
或者
docker inspect 782e2d193788(容器id) | grep IPAddr
启动容器:docker start 1116f0cc653b(容器id)
关闭容器:
docker stop docker start 1116f0cc653b(容器id)
docker kill 782e2d193788(容器id)
杀死所有runing状态的容器:
docker kill $(docker ps -q)
stop和kill的区别
docker stop命令给容器中的进程发送SIGTERM信号,默认行为是会导致容器退出,当然,容器内程序可以捕获该信号并自行处理,例如可以选择忽略。而docker kill则是给容器的进程发送SIGKILL信号,该信号将会使容器必然退出。
docker rm容器id或名称要删除一个运行中的容器,添加-f参数
根据格式删除所有容器:
docker rm $(docker ps -qf status=exited)
重启容器:
docker restart name
暂停容器:
pause–暂停容器内的所有进程,
通过docker stats可以观察到此时的资源使用情况是固定不变的,通过docker logs -f也观察不到日志的进一步输出。
恢复容器:
unpause–恢复容器内暂停的进程,与pause参数相对应
docker start 782e2d193788
这里的名字是状态里面NAMES列列出的名字,这种方式同样会让容器运行在后台
让容器运行在后台:
如果在docker run后面追加-d=true或者-d,那么容器将会运行在后台模式。此时所有I/o数据只能通过网络资源或者共享卷组来进行交互。因为容器不再监听你执行docker run
的这个终端命令行窗口。但你可以通过执行docker attach
来重新附着到该容器的回话中。
例如:
dokcer attach 782e2d193788 (容器id或者容器名字)
docker exec -it 782e2d193788 /bin/bash
docker run -it 782e2d193788 /bin/bash
以上均为进入容器命令
hostname -i (在容器内部查看容器ip)
docker logs 容器id(容器名字) ---> 查看容器的记录
例如:
docker run -it -d --name=mybox111 busybox /bin/sh -c "while true; do echo hellow word123;sleep 2;done"
docker logs mybox111
hellow word123
hellow word123
hellow word123
hellow word123
hellow word123
hellow word123
hellow word123
查看所有状态为exited的容器
docker ps -aqf status=exited
docker rm $(docker ps -aqf status=exited)
修改容器名字
docker rename mybox07(原有) mybox123(修改后)
查看容器的内部状态
docker stats mybox123
CONTAINER ID NAME CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PIDS
88d6209f1d08 mybox123 0.00% 124KiB / 3.685GiB 0.00% 2.42kB / 0B 1.52MB / 8.19kB 1
查看端口情况
docker port harbor-log
514/tcp -> 127.0.0.1:1514
查看文件的创建、删除和文件内容的改变都能看到
docker diff mybox123
A /a.sh
C /root
A /root/.ash_history
docker attach mybox123 --进入容器
touch 123.txt -->创建文件
docker diff mybox123
C /root
A /root/.ash_history
A /123.txt
A /a.sh