title: Docker 一点点 author: Gamehu tags: - Docker categories: - 工作 date: 2019-11-26 15:32:00 --- ### 背景 由于我们产品是基于docker做的部署,所以不管在开发过程中还是在处理客户现场问题时,多多少少都要用到一些docker命令,此篇做个简单的记录,把我用到的命令记录下来。 ### 先看图 说命令之前先看图了解下便于更有代入感。 **架构图**(不包含Dokcer Engine等细节) {% asset_img architecture.png docs.docker.com %} {% asset_img docker-arch1.jpg 运维之美 -www.hi-linux.com %} ### 命令 #### 各种查看 ##### `docker COMMAND --help` 查看docker相关命令的信息,里面有每个命令的说明。 ##### `docker ps、docker ps -a` docker ps 这是最常用的,查看容器的运行状态,查问题时不ps一下心里都没底,该命令会列出所有正在运行的容器,当然 等同于docker container ls。 另外docker ps -a,可用于显示所有正在运行和退出的容器。 ##### `docker info、docker version` docker info 该命令用于获取当前安装的docker版本以及有关操作系统的几条信息。 {% asset_img 1.png %} docker version 列出有关Docker客户端和服务器版本的信息。 ``` Client: Version: 18.09.7 API version: 1.39 Go version: go1.10.1 Git commit: 2d0083d Built: Fri Aug 16 14:20:06 2019 OS/Arch: linux/amd64 Experimental: false Server: Engine: Version: 18.09.7 API version: 1.39 (minimum version 1.12) Go version: go1.10.1 Git commit: 2d0083d Built: Wed Aug 14 19:41:23 2019 OS/Arch: linux/amd64 Experimental: false ``` ##### `docker search xxx` 该命令只有在我自己玩得时候用过(不想重复造轮子),搜索registry上得镜像。 ##### `docker images` 列出所有的镜像,通常只需要关注REPOSITORY、TAG两列就行。 ``` root@feature1_dev:~# docker images REPOSITORY TAG IMAGE ID CREATED SIZE 172.17.162.141:5000/baymax-nginx 1.17.6 231d40e811cd 6 months ago 126MB 172.17.162.141:5000/pg10-cmdb 1.3.0 284de991364f 10 months ago 370MB 172.17.162.141:5000/myflink 1.8.1 96c4d2af10fc 10 months ago 449MB 172.17.162.141:5000/yandex/clickhouse-server 19 58006c9044b7 13 months ago 514MB 172.17.162.141:5000/zookeeper latest f336949ce7a1 19 months ago 148MB 172.17.162.141:5000/redis latest 1babb1dde7e1 20 months ago 94.9MB 172.17.162.141:5000/kafka latest 568143d73a6b 20 months ago 339MB 172.17.162.141:5000/dubbo-admin latest 954bf5f29e96 2 years ago 492MB ``` ##### `docker logs -f container_name ` 查看容器的日志,我用的也较少。 ##### `docker commit -a "gamehu" -m "what f" container_id ` IMAGE_REPOSITORY:TAG` 通过容器id创建一个新的镜像, #### Container ##### `docker start 、stop、restart、rm、kill` 高频使用了,后接 container_id/container_name,依次分别为:启动(已存在)容器、停止容器(会进行正常时间等待其停止)、重启重启、删除(已停止)容器、立即停止容器 ##### `docker exec -it container_id` 使用的较多,通常是为了测试而替换容器内的内容,命令用于访问正在运行的容器,并启用交互模式,可用一些基本的命令。 ``` root@feature1_dev:~# docker exec -it 58f5d79c10a3 /bin/bash root@58f5d79c10a3:/# ls bin boot dev etc home lib lib64 media mnt opt proc root run sbin srv sys tmp usr var root@58f5d79c10a3:/# ``` ##### `docker inspect container_id` 查看容器的相关信息,用的也较少。 #### Image ##### `docker run、create` 基于镜像创建一个新的容器,`run`是创建并启动,`create`是创建但不启动。 示例:`docker run -i -t -p 1000:8000 image_name/image_id:TAG`,使用镜像,以后台模式启动一个容器,将容器的 8000 端口映射到主机的 1000 端口 ##### `docker build ` 此命令用于从指定的dockerfile构建镜像。 ##### `docker push IMAGE_NAME:TAG` 做完镜像推送到镜像仓库。 ##### `docker rmi image_id/image_name` 删除镜像,通常是处理现场问题,要替换镜像的时候用一用。 ##### `docker inspect image_id` 查看镜像相关信息,我制作镜像的时候会用一用,用的很少。 ##### `docker save image_id> xx.tar` 导出镜像,通常是修复现场问题时做该操作,导出已修复的镜像。 ##### `docker load < xx.tar` 导入镜像,通常是修复现场问题时做该操作,载入已修复后的镜像。 ##### `docker tag image_id tag_name` 修改镜像的TAG,通常是修复现场问题时做该操作。 #### 感谢 {% blockquote Jeff Hale https://towardsdatascience.com/15-docker-commands-you-should-know-970ea5203421 15 Docker Commands You Should Know %} {% endblockquote %} `本文引用的内容,如有侵权请联系我删除,给您带来的不便我很抱歉。`