操作Docker容器

nick814 Docker 897 次浏览 没有评论

镜像介绍完了,下面开始容器了。作为一名VMware的虚拟化工程师我是这么理解镜像,容器,仓库概念的。容器就相当于我们的桌面虚拟化。仓库是存着你的桌面系统镜像,win7.win8,win10,容器就是Thinapp,像office,winrar,这些软件。镜像就是win7这些操作系统,我们提供用户桌面虚拟机的话,先提供一个操作系统,然后上面加上软件,提供给用户,容器我个人认为也是这样的概念。当然docker上的操作系统非常的小,比虚拟机小多了。

创建容器

新建容器

使用docker create命令新建一个容器。

# docker create -it ubuntu:18.04

# docker ps -a

新建容器之后,容器处于停止状态,使用docker start命令来启动

启动容器

下面我们来启动容器,下面的命令后面f7就是前面容器的id,然后用docker ps命令查看运行中的容器

# docker start f7

新建并启动容器

我们也可以新建并直接启动一个容器,docker run命令

下面输出一个Hello world之后容器自动停止

# docker run ubuntu:18.04 /bin/echo ‘hello world’

利用docker run来创建并启动容器时,后台会有下面的几个标准操作

  • 检查本地是否存在指定的镜像,不存在就从公有云仓库下载
  • 利用镜像创建一个容器,并启动容器
  • 分配一个文件系统给容器,并在只读的镜像层外面挂载一层可读写层
  • 从宿主机配置的网桥中桥接一个虚拟接口到容器中
  • 从网桥地址池分配一个ip给容器
  • 执行用户指定的应用程序
  • 执行完毕容器自动停止

下面启动一个bash终端,可以让用户交互

# docker run -it ubuntu:18.04 /bin/bash

-it命令就是让用户来交互的,更多命令选项man docker-run查看。

交互模式下,用户可以自己输入命令

ps可以看到指运行了一个bash

可以输入exit来退出容器,退出容器后,容器就关闭了。

守护态运行

很多时候比如我们用nginx的容器,我们要他始终运行,就要用守护态形式,使用-d参数

# docker run -d ubuntu:18.04 /bin/sh -c “while true; do echo hello world; sleep 1; done”

然后用docker ps查看id

查看容器输出

docker logs命令查看容器输出的信息

-details 打印详细的信息,很多命令不写了

# docker logs 8e6a

停止容器

暂停容器

Docker pause命令

我们先启动一个容器,然后在暂停

# docker run -d ubuntu:18.04 /bin/sh -c “while true; do echo hello world; sleep 1; done”

# docker pause 7d1bb

终止容器

Docker stop命令

该命令会先向容器发送sigterm信号,等待一段时间后(默认10秒),在发送sigkill信号来终止容器。

# docker stop 7d1bb

此时在执行下docker container prune命令,会自动清除掉处于停滞状态的容器。

此外,还可以输入docker kill命令强制关闭容器。

可以用下面的命令来查看所有容器ID

# docker ps -qa

终止状态的容器可以通过docker start命令来重新启动

Docker restart 重启容器

进入容器

使用-d参数。容器会在后台运行,我们无法看到容器中的信息,需要进入容器操作,可以用attach或者exec命令。

Attach命令

这个是官方自带的命令

# docker run -itd ubuntu

80376feff7971c125cb0589a4ad585f4e2b9f1ef95c70d2ff71dce565d445ea0

# docker ps

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES

80376feff797 ubuntu “/bin/bash” 9 seconds ago Up 8 seconds dazzling_spence

# docker attach dazzling_spence

root@80376feff797:/#

这个命令不太方便推荐下面的命令。

Exec命令

我们直接进入一个容器,并启动一个bash

# docker exec -it 31c4 /bin/bash

删除容器

Docker rm命令,默认只能删除已经终止或退出状态的容器,如果在运行的容器不能删除,可以加-f参数,强制关闭容器,然后删除。

# docker ps -a

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES

31c4c1c26621 ubuntu “/bin/bash” 4 minutes ago Up 4 minutes hardcore_davinci

80376feff797 ubuntu “/bin/bash” 7 minutes ago Exited (0) 4 minutes ago dazzling_spence

# docker rm 31c4

Error response from daemon: You cannot remove a running container 31c4c1c26621732ef83348049ccdd5547742937a92bef7df148025d53cf3420a. Stop the container before attempting removal or force remove

# docker rm -f 31c4

31c4

# docker ps -a

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES

80376feff797 ubuntu “/bin/bash” 10 minutes ago Exited (0) 7 minutes ago dazzling_spence

查看容器

查看容器详情

Docker container inspect命令

# docker container inspect 8037

查看容器内进程

Docker top命令

查看统计信息

Docker stats 显示docker使用的cpu 内存等信息

发表评论

Go