博主是在Ubuntu14.04最小化安装的状态下进行docker学习的。教材是《第一本docker书》
ubuntu14.04默认就有docker的安装源,所以安装很简单:
# apt-get install lxc-docker
使用以下代码察看docker功能清单:
#docker info
info命令会返回所有容器和镜像的数量、docker的执行驱动和存储驱动(execution and storage driver)以及docker的基本配置。
1.运行容器命令如下:
# docker run -i -t ubuntu /bin/bash
-i 参数保证容器中的stdin开启,目的是为了保证交互式shell的运行
-t 参数为要创建的容器分配一个伪tty终端
但是博主在刚安装好docker的时候运行这一命令,因为本地没有Ubuntu的镜像,理论上来说docker会自动从公共docker hub下载镜像,不过第一次下载速度太慢,大家需要耐心等待。
也可以运行 #docker pull ubuntu
命令,先将Ubuntu镜像下载到本地,默认使用的镜像标签是latest。
然后再运行docker run -i -t ubuntu /bin/bash
这时候我们的容器就创建成功了,该容器会被自动分配一个ID,一般是一个杂乱的字符串
结果如下:
我们已经在Ubuntu中又运行了一个Ubuntu容器,可以在该容器be08178f33ae进行各种操作:
2.退出该容器:
#exit
需要注意的是,退出该容器后,该容器停止了运行,但容器仍然是存在的,可以使用 #docker ps -a
来查看当前系统中的容器列表:
3.容器命名
–name <容器名>
docker run --name my_first_container -i -t ubuntu /bin/bash
docker run --name demon_container -d ubuntu /bin/bash -c "while true; do echo hello world;sleep 1;done"
-d参数 docker会将该容器放到后台运行
-c参数 在该容器中使用一些命令,上例中则是使用了一个while循环,循环打印hello world直到该容器停止运行
通过这些参数组合,docker run并不会将交互式的shell显示出来,而仅仅返回了一个容器ID,我们依旧处在主机的命令行终端,此时我们可以执行docker ps
命令,可以看到一个正在运行的容器。
docker logs demon_container
扩展选项有:
获取后10行: docker logs --tails 10 demon_container
为每条日志加上时间戳: docker logs -ft demon_container
#docker top demon_container
使用 docker exec
docker exec -d demon_container touch /etc/new_config_file
此命令表示后台运行一个容器demon_container,并且在该容器中创建了一个文件
docker inspect
除了使用docker ps 命令查看docker 信息之外我们还可以使用docker inspect 命名来获取更加详细的信息。
博主将输出的详细信息重定向到了一个文件docker inspect demon_container >> inspect_info
然后vim打开inspect_info显示如下:
我们甚至可以使用-f或–format来选定选项查询
# docker inspect --format='{{ .State.Running }}' demon_container
上述命令会返回容器的状态
# docker inspect --format '{{ .NetworkSettings.IPAddress }}' \demon_container
上述命令会返回该容器的IP地址。
docker rm
运行中的容器无法直接删除,必须先stop或者kill掉才能rm删除