docker目录
/var/lib/docker目录存放着Docker镜像、容器以及容器的配置。
所有的容器都保存在/var/lib/docker/containers目录下。
查看Docker运行状态
docker info
第一个docker入门
docker run -i -t ubuntu /bin/bash
-i stdin 标准的输入
-t 伪tty终端
上面可能会出现: docker: error pulling image configuration这样的错误,是因为网络问题,解决办法是使用国内的docker镜像,这里使用daocloud的加速镜像:
echo "DOCKER_OPTS=\"\$DOCKER_OPTS --registry-mirror=http://xxxxx.m.daocloud.io\"" | tee -a /etc/default/docker
原理:首先Docker会检查本地是否存在ubuntu镜像,如果本地还没有该镜像的话,那么Docker就会连接官方维护的Docker Hub Registry,查看Docker Hub中是否有该镜像。
Docker一旦找到该镜像,就会下载该镜像并将其保存到本地宿主机中。 随后,Docker在文件系统内部用这个镜像创建了一个新容器。
该容器拥有自己的网络、IP地址,以及一个用来和宿主机进行通信的桥接网络接口。最后,我们告诉Docker在新容器中要运行什么命令,本例中我们在容器中运行/bin/bash命令启动了一个Bash shell .当容器创建完毕之后,Docker就会执行容器中的/bin/bash命令,这时我们就可以看到容器内的shell了。
查看容器
docker ps -a 包含停止的和运行的
docker ps -l 最后一次的
docker ps 只有运行的
docker images 所有的镜像
docker ps -n x 显示最后x个容器
docker inspect container_name
docker inspect --format=’{{.State.Running}}’ container_name 返回指定内容
怎样给容器起一个名字?
Docker会为我们创建的每一个容器自动生成一个随机的名称。如果想为容器指定一个名称,而不是使用自动生成的名称,则可以用一name标志来实现.
比如:docker run --name ubuntu_container -i -t ubuntu /bin/bash
一个合法的容器名称只能包含以下字符:小写字母a-z、大写字母A-Z、数字0-9、下划线、圆点、横线(如果用正则表达式来表示这些符号,就是[a-zA-Z0-9_.-])
重启容器的几种方式?
docker start|restart container_name|container_id
停止容器
docker stop|kill container_name|container_id
创建长期运行的容器
守护式容器(daemonized container)没有交互式会话,非常适合运行应用程序和服务。
大多数时候我们都需要以守护式来运行我们的容器。
docker run --name ubuntu_daemon -d ubuntu /bin/sh -c "while true;do echo hello world;sleep 1;done"
-d 将容器放到后台执行
上面的命令是在后台一直循环输出hello world
获得容器的日志
docker logs [-f] container_id|container_name
-f 可以实时监控日志
docker logs一tail 10 container_name 获取日志的最后10行
docker logs --tail 0 -f container_name 读取最新的日志
docker logs --tail 0 -ft container_name 读取最新的日志并添加时间戳
查看容器内运行的进程
docker top container_name
怎样在容器内部运行进程呢?
在Docker 1.3+通过docker exec命令在容器内部额外启动新进程。
在容器内运行的进程有两种类型:后台任务和交互式任务。
后台任务在容器内运行且没有交互需求,而交互式任务则保持在前台运行。
对于需要在容器内部打开shell的任务,交互式任务是很实用的。
docker exec -d ubuntu_daemon touch /etc/new_file
上面执行后在后台创建一个空的文件
docker exec -i -t ubuntu_daemon /bin/bash
上面执行后,打开shell
docker的自动重启?
docker run --restart=always|on-failure:5 --name ubuntu_daemon
-d ubuntu bin/sh -c "while true; do echo hello world; sleep 1;done"
--restart 检查容器的退出代码,确定是否重启,默认是不重启的
always 一直自动重启,无论退出代码是什么.
on-failure:5 容器退出代码为非0时,重启5次,其中:5可以不要.
删除停止的容器
docker rm container_id 删除指定的容器
docker rm `docker ps -a -q` 删除所有的容器(反引号)