Docker 入门学习(2)
1. Docker基本命令
- 查看Docker程序是否正常
$ sudo docker info
返回所有容器和镜像的数量、Docker使用的执行驱动和存储驱动,以及Docker的基本配置。
- 创建容器
$ sudo docker run -i -t ubuntu /bin/bash
-i:保证容器中STDIN是开启的;-t:为创建的容器提供一个伪tty终端。查看docker run所有标志:
$ docker help run
- 检查容器主机名
root@...:/# hostname
- 检查容器的/etc/hosts文件
root@...:/# cat /etc/hosts
- 检查容器的网络接口
root@.../# ifconfig
- 检查容器的进程
root@.../# ps -aux
- 第一个容器中安装软件包
root@.../#apt-get update && apt-get install vim
- 退出容器
root@.../#exit
-
列出容器
- 列出正在运行的容器
$ docker ps
- 列出所有容器
$ docker ps -a
- 显示最后x个容器,无论正在运行还是停止
$ docker ps -n x
输出包括:
ID、用于创建容器的镜像、容器最后执行的命令、创建时间以及退出状态。
2. 管理Docker容器
- 创建命名Docker
$ sudo docker run --name wtt_docker1 -i -t ubuntu /bin/bash
- 删除容器
$ docker rm <ID/NAMES>
- 一次性删除所有容器
$ sudo docker rm 'sudo docker ps -a -q'
-
重新启动已停止的容器
- 通过NAMES启动停止运行的容器
$ sudo docker start <NAMES>
- 通过ID启动已经停止运行的容器
$ sudo docker start <ID>
- 使用restart
$ docker restart <NAMES/ID>
-
终止正在运行的容器
$ sudo docker stop <NAMES/ID>
- 暂停容器
$ sudo docker pause <NAMES/ID>
- 恢复已暂停容器
$ sudo docker unpause <NAMES/ID>
- 清除容器
清除处于停止状态的容器
$ sudo docker prune <NAMES/ID>
- 强制终止
$ sudo docker kill <NAMES/ID>
- 进入容器
使用-d
参数时候,容器启动会进入后台,无法看到容器内信息,也无法进行操作,需要进入容器可以:
- 重新附着容器会话
Docker容器重启时,会沿用docker run命令指定的参数运行,使用docker attach
可以重新附着容器会话。
$ sudo docker attach <NAMES/ID>
exec
命令(推荐)
可以在容器内执行任意命令
$ sudo docker exec -it <ID> /bin/bash
指定-it
会保持标准输入打开,并分配一个伪终端。
- 自动重启容器
$ sudo docker run --restart=always --name wtt_long_time -d ubuntu /bin/sh -c "while true;do echo hello;sleep 1;done"
--restart
被设置成always
,无论容器的退出代码是什么,Docker都会重启容器。
或者:
--restart=on-failure:5
当容器退出代码非0时,Docker会自动重启该容器,最多重启5次。
3. 守护式容器
守护式容器没有交互式会话,适合运行应用程序和服务。
- 创建长期运行的容器
$ sudo docker run --name wtt_long_time -d ubuntu /bin/sh -c "while true;do echo hello;sleep 1;done"
-d:Docker会将容器放到后台运行。
- 获取守护式容器的日志
$ sudo docker logs <NAMES/ID>
- 跟踪日志
$ sudo docker logs -ft <NAMES/ID>
-f:跟踪日志;-t:为每条日志加上时间戳。
- 查看容器内的进程
$ sudo docker top <NAMES/ID>
- Docker统计信息
$ docker stats
输出:
守护式容器列表、CPU、内存、网络I/O及存储I/O的性能和指标。
- 容器内部运行进程
$ sudo docker exec -d wtt_long_time touch /etc/new_config_file
-d:运行一个后台进程。touch /etc/new_config_file:创建空文件。
- 容器内部运行交互命令
$ sudo docker exec -t -i wtt_long_time /bin/bash
4. 容器迁移
- 导出容器
导出一个已经创建的容器到一个文件
$ sudo docker export -o test.tar wtingting/apache2
或者
$ sudo docker export wtingting/apache2 > test.tar
- 导入容器快照
$ sudo docker import test.tar -test/ubuntu:v1.0
容器快照与镜像存储文件区别:
容器快照将丢弃所有的历史记录和元数据信息(即仅保存容器当时的快照状态),可以重新指定标签等元数据信息;
镜像存储文件将保存完整记录,体积更大。
5. 其他容器命令
- 复制文件
在容器和主机之间复制文件。
$ sudo docker cp <文件路径> <容器NAMES>:/tmp/
- 查看变更
查看容器内文件的变更
$ sudo docker diff <容器NAMES>
- 查看端口映射
$ sudo docker port <容器NAMES>
- 更新配置
更新容器的一些运行时配置,主要是一些资源限制份额。
$ sudo docker update <OPTIONS> <容器NAMES>