docker 常用命令

docker 常用命令
docker 常用命令

我们可以通过 docker -h 去查看命令的详细的帮助文档。在这里我只会讲一些日常我们可能会用的比较多的一些命令。

镜像操作

显示本地所有的镜像列表

docker images

从一个tar包创建一个镜像,往往和export结合使用
docker import
docker build                                    使用dockerfile创建镜像(推荐)
docker commit                               从容器创建镜像
docker rmi                                       删除一个镜像
docker load                                     从一个tar包创建一个镜像,和save配合使用
docker save                                    将一个镜像保存为一个tar包,带layers和tag信息
docker history                                显示生成一个镜像的历史命令
docker tag                                      为镜像起一个别名

镜像仓库(registry)操作

docker login                                    登录到一个registry
docker search                                 从registry仓库搜索镜像
docker pull                                      从仓库下载镜像到本地
docker push                                    将一个镜像push到registry仓库中

容器相关操作

docker create                                创建一个容器但是不启动它
docker run                                     创建并启动一个容器
docker stop                                   停止容器运行,发送信号SIGTERM
docker start                                   启动一个停止状态的容器
docker restart                               重启一个容器
docker rm                                       删除一个容器
docker kil                                       发送信号给容器,默认SIGKILL
docker attach                                连接(进入)到一个正在运行的容器
docker wait                                   阻塞到一个容器,直到容器停止运行

获取容器相关信息

docker ps                                        显示状态为运行(Up)的容器
docker ps -a                                   显示所有容器,包括运行中(Up)的和退出的(Exited)
docker inspect                               深入容器内部获取容器所有信息
docker logs                                     查看容器的日志(stdout/stderr)
docker events                                得到docker服务器的实时的事件
docker port                                     显示容器的端口映射
docker top                                      显示容器的进程信息
docker diff                                      显示容器文件系统的前后变化

导出容器

从容器里向外拷贝文件或目录

docker cp

将容器整个文件系统导出为一个tar包,不带layers、tag等信息

docker export

常用的docker命令,重点练习下

1、查看本机有哪些镜像

docker images

docker image ls

2、拉取镜像
从仓库下载镜像到本地,默认保存到 /var/lib/docker 目录下

docker [image] pull name[:tag]

name:镜像的名称,tag镜像的标签,若不显示指定tag,默认拉取tag为latest的镜像,即下载仓库中最新的镜像

注意:

latest标签,表示拉取的镜像是最新的,通常是不稳定的,因此生产环境中,因此生产环境中,一定拉取指定tag标签(稳定版本号)的镜像。
默认情况下,docker pull从docker Hub拉取镜像。当然,我们可以设置从其他注册中心拉取镜像。
-可以用docker tag image_id/image_name name[:tag] 添加镜像标签
3、添加镜像标签

docker run images_name[:tag]/images_id images_name[:tag]

为了在工作中便于使用特定镜像,可以使用tag命令给镜像添加新的标签,他们都指向同一个镜像文件,只是不同的别名而已。

4、删除镜像

docker rmi images_name[:tag]/images_id

注意:我们想删除指定镜像,若该 Image 被某个 Container 引用(拿来运行),如果不将这个引用的 Container 销毁(删除),那 Image 肯定是不能被删除。先删除容器后,再删除镜像

5、有哪些容器在运行

显示所有容器,包括运行中(Up)的和退出的(Exited),若不加-a,则只显示状态为运行(up)的容器

docker ps -a

6、删除容器
添加-f参数,可用强行删除一个运行中的容器

docker rm container_name/container_id -f

7、创建并运行一个容器
检查本地(镜像存储地址)是否存在指定的镜像,不存在则从公有仓库中下载

docker run images_name[:tag]/images_id

注意:run有大量的选项,后面的章节会介绍常用选项

8、查看容器详情

docker inspect container_name/container_id

9、进入到一个运行中的容器
在创建或运行容器时,若使用了-6参数,则容器启动后在后台运行,用户无法看到容器的信息了,也就不能对容器进行操作了。
这个时候,需要先进入该容器。

1)使用attch命令

docker attach container_name/container_id

2)推荐使用exec命令

docker exec -it container_name/container_id /bin/bash
exit or ctrl+d

注意:
exec命令是需要操作员登录到服务器;远程登录容器内并进行一些操作时,就需要用ssh的支持。
在运行中的容器内执行任意命令,使用vi、ifconfig、ip addr等命令时,出现如下“command not found”

则需要敲:

yum -y update

等更新完毕以后再敲命令:

yum -y install vim iputils-ping net-tools

10、停止启动容器

docker start container_name/container_id
docker restart container_name/container_id
docker stop container_name/container_id

docker create 命令、run命令的选项参数,用到时再查看手册吧
更多:若一个主机上多个容器,一个一个重启也挺麻烦的,试试这个命令,

docker restart $(docker ps -a -q)

11、容器与主机之间复制文件
1) 将docker内目录或文件拷贝到宿主机绝对路径下

容器内目录或文件 宿主机目录

docker cp container_name/container_id

例如:

docker cp xxxid:/usr/shar /usr/shar
docker cp xxxid:/usr/shar/index.html /usr/shar/inde.html

将宿主本地文件拷贝到docker 容器内
容器内目录或文件

docker cp 宿主机目录 container_id:
例如:

docker cp /usr/shar xxxid:/usr/shar

12、限制容器内存
一个 docker host 上会运行若干容器,每个容器都需要 CPU、内存和 IO 资源。对于 KVM,VMware 等虚拟化技术,用户可以控制分配多少 CPU、内存资源给每个虚拟机。对于容器,docker 也提供了类似的机制避免某个容器因占用太多资源而影响其他容器乃至整个 host 的性能。
与操作系统类似,容器可使用的内存包括两部分:物理内存和 swap。

-m–memory:设置内存的使用限额,例如 100M, 2G。
–memory-swap:设置 内存+swap 的使用限额。

docker run --name myweb1 -m 1024M --memory-swap=512M nginx

13、修改运行中的容器配置
docker 命令中给出修改容器的配置内容很有限,只能改cpu、内存等配置信息。大部分属性都是在创建容器时指定的,如果后期需要重新指定或增加新设置,如何办

方法一:删除原有容器,重新建新容器,这个解决方案最为简单,把原来的容器删掉,重新建一个。

方法二:修改容器配置文件,重启docker服务,容器的配置文件路径:

vim /var/lib/docker/containers/[hash_of_the_container]/hostconfig.json

其中的hash_of_the_container是docker镜像的hash值,可以通过 docker ps 或者 docker inspect containername 查看

缺点是需要重启整个docker服务,如果在同一个宿主机上运行着多个容器服务的话,就会影响其他容器服务。

到这里,容器的常用命令操作就介绍结束了。