本章重点:学习第一个docker容器,宿主机如何与Docker进行交互。本人习惯安装在centos的linux系统中,所以之后将主要以centos的linux服务器来介绍。
在介绍中会用到docker的一些命令,官方列出了docker的完整的命令列表。使用docker help
或者man docker-run
查看。
一、查看docker是否就绪
1、docker info
查看docker程序是否正常工作,若未启动可以使用start docker
启动守护进程
2、也可以通过docker version
来查看或者status docker
来查看状态
二、运行第一个容器
1、创建容器的命令是docker run 命令,docker run 命令提供了Docker容器的创建到启动的功能。
docker run -i -t ubuntu /bin/bash
意思是基于基础镜像ubuntu,-i标志保证容器中的STDIN(标准输入流)是开启的,持久的标准输入是交互式shell的“半边天”,-t标志则是另外“半边天”,他告诉docker为要创建的容器分配一个伪tty终端。这样,新创建的容器才能提供一个交互式shell。若要在命令行下创建一个我们能与之交互的容器,而不是一个运行后台服务的容器,这两个就是基本的参数。
2、首先docker会去本地检查是否存在ubuntu镜像,如果本地没有镜像的话,那么docker会连接官方维护的docker Hub Register,查看Docker Hub 中是否存在该镜像,docker一旦找到该镜像,就会下载并将其保存到本地宿主机中。
也可以使用
docker pull 镜像名
拉取默认镜像仓库中的docker镜像,也可以删除镜像
docker rmi 镜像名
拉取或者删除之后可以使用docker images
来查看当前的镜像。 当前删除镜像之前需要先把基于此镜像创建的所有容器先删除掉,否则无法删除掉镜像的。删除容器是docker rm 镜像id
。
3、随后Docker在文件系统内部用这个镜像创建了一个新容器。该容器拥有自己的网络、ip地址以及一个用户和宿主机进行通信的桥接网络接口。
4、最后我们告诉Docker在新容器中要运行什么命令,本例中运行/bin/bash命令启动了一个Bash shell。
当容器创建完毕之后,Docker就会执行容器中的/bin/bash命令,这是就会看到容器内的shell了。见下图1就是拉取了ubutun的镜像并以此为基础镜像创建了一个新的容器。

三、使用第一个容器
按上述步骤已经生成并进入了容器的终端,下面对这个容器进行简单的操作。
1、查看该容器的主机名:
hostname
可知道该容器的主机名就是容器的id
2、查看容器内的hosts文件
cat /etc/hosts
容器是有自己的ip地址以及网络的
3、可以查看容器内的进程,目前
ps aux
目前没有其他的启动的进程,可见和宿主机是独立分开的。

4、在第一个容器中进行安装软件包
apt-get update && apt-get install vim
可以在容器内下载并安装软件5、退出容器命令
exit
就可以退出到centOS的宿主机的命令行提示符了。退出之后这个容器就停止运行了。主要是取决于我们的启动的方式是只有在指定的/bin/bash命令处于运行状态的时候,我们的容器才会处于运行状态。容器仍存在只是不是处于启动状态而已,可使用docker ps -a
查看目前所有的容器,-a表示所有无论启动还是停止docker ps
指的是列出处于启动运行状态下的容器6、容器的命名
若不指定容器的名称,docker会为我们随机的生成一个容器的名称。想为容器指定一个名称可以在启动容器时候指定使用
--name
来命名一个容器的名称。如之前启动命令修改下 docker run --name myfirstcontainer -i -t ubuntun /bin/bash
如下图就是我们基于基础镜像ubuntu创建的两个容器,一个容器名是随机生成的,一个是通过参数--name来指定的。
7、容器的启动
docker start
后面加容器名或者容器ID即可将处于停止状态的容器再次启动或者使用
docker restart
加容器名/容器id也可以重新启动。容器重新启动沿用的还是docker run
命令时指定的参数来运行。
附着到正在运行的容器:
docker attach
加容器id或者容器名8、上面会发现创建的容器进入容器后在退出就会停止运行,针对此类问题来创建守护式容器。适合运行应用程序和服务。
docker run --name daemoncontainer -d ubuntu /bin/sh -c "while true ; do echo hello world ;sleep 1; done"

监测容器运行可通过日志进行分析查看
1、获取守护式容器的日志docker logs daemoncontainer或者docker logs -f daemoncontainer或者实时docker logs -ft daemoncontainer查看
2、docker的日志驱动docker run --log -driver="sysylog" --name daemoncontainerlog -d ubuntu /bin/sh -c "while true ; do echo hello world ;sleep 1; done"此命令会将该容器的日志输出到Syslog导致docker log不会输出任何内容的。
3、查看容器内的进程使用top命令docker top 加容器名/容器id如下图1
4、容器内的统计信息
docker stats +容器id或者容器名
5、在容器中运行后台任务
docker exec -d daemoncontainer touch /etc/newfile
通过docker exec 后台命令,可以在正在运行的容器中进行维护监控以及管理任务。
6、在容器中运行交互命令
docker exec -i -t daemoncontainer /bin/bash
7、停止守护式容器
docker stop 容器名/容器id
8、自动重启容器
在创建容器的时候加参数
docker run --restart=always --name daemoncontainerrestart -d ubuntu /bin/sh -c "while true ; do echo hello world ;sleep 1; done"
9、深入容器
docker inspect查看更多的容器信息。

10、删除容器
docker rm 容器名/容器id
删除所有容器
docker rm `docker ps -a -q`

网友评论