docker 常用命令

docker 常用命令

Docker 常用命令

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

null


镜像操作

docker images # 显示本地所有的镜像列表
docker import # 从一个tar包创建一个镜像,往往和export结合使用
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 kill # 发送信号给容器,默认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 # 从容器里向外拷贝文件或目录
docker export # 将容器整个文件系统导出为一个tar包,不带layers、tag等信息


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

1、查看本机有哪些镜像

# docker images` 或 `# docker image ls

2、拉取镜像

从仓库下载镜像到本地,默认保存到 /var/lib/docker 目录下
# docker [image] pull name[:tag]
name:镜像的名称,tag镜像的标签,若不显示指定tag,默认拉取tag为latest的镜像,即下载仓库中最新的镜像

注意

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

注意:

  1. exec命令是需要操作员登录到服务器;远程登录容器内并进行一些操作时,就需要用ssh的支持。
  2. 在运行中的容器内执行任意命令,使用vi、ifconfig、ip addr等命令时,出现如下“command not found”
    则需要敲:apt-get update
    等更新完毕以后再敲命令: apt-get install vim ; apt install iputils-ping ; apt install 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。

13、修改运行中的容器配置

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

方法一:删除原有容器,重新建新容器

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

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

容器的配置文件路径:

# vi /var/lib/docker/containers/[hash_of_the_container]/hostconfig.json

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

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


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