容器管理
创建容器但不启动
docker create -it daocloud.io/library/centos:5 /bin/bash
创建并运行一个新Docker 容器:
同一个镜像可以启动多个容器,每次执行run子命令都会运行一个全新的容器
docker run -it --restart=always centos /bin/bash
如果执行成功,说明CentOS 容器已经被启动,并且应该已经得到了 bash 提示符。
-i 捕获标准输入输出
-t 分配一个终端或控制台
--restart=always 容器随docker engine自启动,因为在重启docker的时候默认容器都会被关闭也适用于create选项
--rm 默认情况下,每个容器在退出时,它的文件系统也会保存下来,这样一方面调试会方便些,因为你可以通过查看日志等方式来确定最终状态。另一方面,也可以保存容器所产生的数据。
但是当你仅仅需要短暂的运行一个容器,并且这些数据不需要保存,你可能就希望Docker能在容器结束时自动清理其所产生的数据。这个时候就需要--rm参数了。注意:--rm 和 -d不能共用
--name 容器命名
断开容器而不关闭
快捷键:ctrl+p+q
查看只运行的容器
dicker ps
-a 查看所有容器
-q 只查看所有容器id
-l 列出最近一次启动的容器
查看容器详细信息
inspect Return low-level information on a container or image
用于查看容器的配置信息,包含容器名、环境变量、运行命令、主机配置、网络配置和数据卷配置等。
过滤出容器的ip
docker inspect --format='{{.NetworkSettings.IPAddress}}' 容器id
查看容器的详细信息
docker inspect 容器ID
启动关闭容器
docker start 容器名或者容器id、
docker rename 容器名 容器新名 #容器重命名
docker status 容器名 # 查看容器运行状态
docker port 容器名 #查看容器端口映射
docker stop name #关闭容器
docker kill name #-强制终止容器
杀死所有running状态的容器
docker kill $(docker ps -q)
删除容器:
docker rm 容器id或名称
要删除一个运行中的容器,添加 -f 参数
根据格式删除所有容器:
docker rm $(docker ps -qf status=exited) #删除所有退出状态的容器
查看容器运行日志
docker logs 容器ID
连接容器
方法1.attach
# docker attach 容器id //前提是容器创建时必须指定了交互shell
方法2.exec
通过exec命令可以创建两种任务:后台型任务和交互型任务
交互型任务:
docker exec -it 容器id /bin/bash
root@68656158eb8e:/# ls
后台型任务:
docker exec 容器id touch /testfile
监控容器的运行:
可以使用logs、top、events、wait这些子命令
logs:
使用logs命令查看守护式容器
可以通过使用docker logs命令来查看容器的运行日志,其中--tail选项可以指定查看最后几条日志,而-t选项则可以对日志条目附加时间戳。使用-f选项可以跟踪日志的输出,直到手动停止。
# docker logs App_Container //不同终端操作
# docker logs -f App_Container
top:
显示一个运行的容器里面的进程信息
# docker top 容器id
events
实时输出Docker服务器端的事件,包括容器的创建,启动,关闭等。
# docker start loving_meninsky
# docker events //不同终端操作
wait
Block until a container stops, then print its exit code
--捕捉容器停止时的退出码
执行此命令后,该命令会"hang"在当前终端,直到容器停止,此时,会打印出容器的退出码
# docker wait 01d8aa //不同终端操作
diff
查看容器内发生改变的文件,以elated_lovelace容器为例
root@68656158eb8e:/# touch c.txt
用diff查看:
包括文件的创建、删除和文件内容的改变都能看到
[root@master ~]# docker diff 容器名称
C对应的文件内容的改变,A对应的均是文件或者目录的创建删除
宿主机和容器之间相互COPY文件
cp的用法如下:
Usage: docker cp [OPTIONS] CONTAINER:PATH LOCALPATH
如:容器mysql中/usr/local/bin/存在docker-entrypoint.sh文件,可如下方式copy到宿主机
docker cp mysql:/usr/local/bin/docker-entrypoint.sh /root
修改完毕后,将该文件重新copy回容器
docker cp /root/docker-entrypoint.sh mysql:/usr/local/bin/