【Docker 江湖】之初入江湖

180 阅读9分钟
原文链接: mp.weixin.qq.com

序章

我,一位土生土长于口袋大陆的平凡人,本应按部就班,过着朝九晚五的生活,奈何命本不凡。

在少年时偶得一本奇书《Docker 宝典》,后闲来无事,开始翻看,痴迷于其中。

从此,我踏上了修炼 Docker 的不归路,开启了 996 的生活。

这本《我的 Docker 江湖》是我的笔记。

接下来的故事我将带你一起,见证这一路的修炼过程。

少侠,我们开始吧。

缘起

时间:很久很久很久以前…

地点:口袋大陆

怪老头:啊,靓仔,靓仔,别走啊,不得了,不得了啊!

我:怎么?

怪老头:你有道灵光从天灵盖喷出来,你知道吗?年纪轻轻的,就有一身横练的筋骨,简直是百年一见的编程奇材。如果有一天,让你打通任督二脉…那还不飞龙上天啊!

怪老头:正所谓:我不入地狱,谁入地狱,警恶惩奸,维护世界和平这个任务,就交给你了,好吗?

怪老头:好的,好的,好的

怪老头:这本《Docker 宝典》是无价之宝,我看与你有缘,就免费传授给你吧!

我:这是啥?(先收了再说)

简介

初入 Docker 江湖,我将赠与你一张命令图谱。

当你在修炼中走火入魔时,可根据此图谱,找到正确的解法。

其中每一命令都有更深入的招式,我将会在后续的实践中,一一传授。

目录

Image 之'CRUD'从 Dockerfile 创建镜像 根据容器的更改创建新镜像查看镜像列表 查看镜像历史添加镜像标签 删除镜像Container 之 'CRUD' 创建一个新的容器创建新的容器并执行命令 进入容器查看容器列表 查看容器详情查看容器内运行的进程 查看容器端口映射查看容器资源占用信息 查看容器日志查看服务器实时事件 更新容器配置更新容器名称 删除容器Image 保存/加载 保存镜像加载镜像 Container 生命周期启动容器 停止容器暂停/恢复 重启容器杀掉运行中的容器 等待容器退出Container 导入/导出 导出容器导入容器 Container 与本机交互复制文件/文件夹(本机 ⇆ 容器) 检查容器内文件/文件夹的更改镜像仓库 从 Docker Hub 搜索镜像登录/退出 Docker 仓库 从镜像仓库拉取 & 更新/推送指定镜像信息/版本 查看 Docker 系统范围信息查看 Docker 版本信息

Image 之'CRUD'

从 Dockerfile 创建镜像

Usage:    docker build [OPTIONS] PATH | URL | -Example:    docker build -t test/ubuntu:v1 .

根据容器的更改创建新镜像

Usage:    docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]Example:    docker commit -m "test" bd3fa0536c33  ubuntu:test

查看镜像列表

Usage:    docker images [OPTIONS] [REPOSITORY[:TAG]]Example:    docker images

查看镜像历史

Usage:    docker history [OPTIONS] IMAGEExample:    docker history ubuntu

添加镜像标签

添加的 tag 可理解为创建了 link 链接到原来的镜像,他们具有相同的镜像 ID

执行 docker rmi RESPOSITORY[:TAG] 命令去删除镜像时,若有此镜像还有其它标签,仅会移除当前标签 Untagged,镜像不会被移除。若当前镜像 ID 仅一个标签时,则会解除标签并删除镜像。

Usage:    docker tag SOURCE_IMAGE[:TAG] TARGET_IMAGE[:TAG]Example:    docker tag ubuntu:latest testubuntu:latest

删除镜像

Usage:    docker rmi [OPTIONS] IMAGE [IMAGE...]Example:    docker rmi 03b4557ad7b9

Container 之 'CRUD'

创建一个新的容器

create 命令创建容器,默认为停止状态

Usage:    docker create [OPTIONS] IMAGE [COMMAND] [ARG...]Example:    docker create ubuntu

创建新的容器并执行命令

Usage:        docker run [OPTIONS] IMAGE [COMMAND] [ARG...]Example:     docker run -it ubuntu bash    docker run -it ubuntu echo 'Hello Docker'    docker run -d ubuntu /bin/sh -c "while true; do echo hello world; sleep 1; done"

进入容器

进入容器有两种方式:attachexec 命令

attach 介绍:将本地的标准输入、输出、错误流附加到正在运行的容器。

attach 弊端:当多个窗口通过 attach 命令进入同一容器,所有窗口都会同步显示,当某个命令阻塞的时候,其它窗口也无法进行操作了。

exec 介绍:在一个运行的容器中执行命令。

exec 优点:通过制定 -it 参数来保持标准输入打开,并分配一个伪终端,执行 bash 会打开一个新的终端与容器进行交互,对其他用户不影响。

Usage:    docker attach [OPTIONS] CONTAINER    docker exec [OPTIONS] CONTAINER COMMAND [ARG...]Example:    docker attach bd3fa0536c33    docker exec -it bd3fa0536c33 bash

查看容器列表

Usage:    docker container ls [OPTIONS]Aliases:    ls, ps, listExample:     docker container ls    docker container ps    docker ps    docker container list

查看容器详情

inspect 可查看镜像、容器详情

container inspect 用来查看容器详情

Usage:    docker inspect [OPTIONS] NAME|ID [NAME|ID...]    docker container inspect [OPTIONS] CONTAINER [CONTAINER...]Example:    docker inspect bd3fa0536c33    docker container inspect bd3fa0536c33

查看容器内运行的进程

Usage:    docker top CONTAINER [ps OPTIONS]Example:    docker top bd3fa0536c33

查看容器端口映射

Usage:    docker port CONTAINER [PRIVATE_PORT[/PROTO]]Example:    docker port bd3fa0536c33

查看容器资源占用信息

Usage:    docker stats [OPTIONS] [CONTAINER...]Example:    docker stats bd3fa0536c33

查看容器日志

Usage:    docker logs [OPTIONS] CONTAINERExample:    docker logs bd3fa0536c33

查看服务器实时事件

Usage:    docker events [OPTIONS]Example:    docker events

更新容器配置

Usage:    docker update [OPTIONS] CONTAINER [CONTAINER...]Example:    docker update --cpu-shares 512 ae540ed39427

更新容器名称

Usage:    docker rename CONTAINER NEW_NAMEExample:    docker rename ae540ed39427 test_ubuntu

删除容器

移除指定 CONTAINER 可通过 rm 命令

批量移除所有停止的 CONTAINER 可使用 prune 命令

Usage:    docker container rm [OPTIONS] CONTAINER [CONTAINER...]    docker container prune [OPTIONS]Example:    docker container rm bd3fa0536c33    docker container prune

Image 保存/加载

保存镜像

Usage:    docker save [OPTIONS] IMAGE [IMAGE...]Example:    docker save -o test_ubuntu.tar 3ff4930bc673

加载镜像

Usage:    docker load [OPTIONS]Example:    docker load -i test_ubuntu.tar

Container 生命周期

启动容器

Usage:    docker start [OPTIONS] CONTAINER [CONTAINER...]Example:    docker start bd3fa0536c33

停止容器

Usage:    docker stop [OPTIONS] CONTAINER [CONTAINER...]Example:    docker stop bd3fa0536c33

暂停/恢复

Usage:    docker pause CONTAINER [CONTAINER...]    docker unpause CONTAINER [CONTAINER...]Example:    docker pause bd3fa0536c33    docker unpause bd3fa0536c33

重启容器

Usage:    docker restart [OPTIONS] CONTAINER [CONTAINER...]Example:    docker restart bd3fa0536c33

杀掉运行中的容器

Usage:    docker kill [OPTIONS] CONTAINER [CONTAINER...]Example:    docker kill bd3fa0536c33

等待容器退出

Usage:    docker wait CONTAINER [CONTAINER...]Example:    docker wait bd3fa0536c33

Container 导入/导出

导出容器

Usage:    docker export [OPTIONS] CONTAINERExample:    docker export -o docker_bak.tar bd3fa0536c33

导入容器

Usage:    docker import [OPTIONS] file|URL|- [REPOSITORY[:TAG]]Example:    docker import docker_bak.tar bak/ubuntu:v1.0

Container 与本机交互

复制文件/文件夹(本机 ⇆ 容器)

Usage:    docker cp [OPTIONS] CONTAINER:SRC_PATH DEST_PATH|-    docker cp [OPTIONS] SRC_PATH|- CONTAINER:DEST_PATHExample:    docker cp  bd3fa0536c33:/www /www/py_script/    docker cp /www/py_script bd3fa0536c33:/www/

检查容器内文件/文件夹的更改

Usage:    docker diff CONTAINERExample:    docker diff    docker diff bd3fa0536c33

镜像仓库

从 Docker Hub 搜索镜像

Usage:    docker search [OPTIONS] TERMExample:    docker search ubuntu

登录/退出 Docker 仓库

Usage:    docker login [OPTIONS] [SERVER]Example:    docker login    docker login -u [username] -p [password]    docker logout

从镜像仓库拉取 & 更新/推送指定镜像

Usage:    docker pull [OPTIONS] NAME[:TAG|@DIGEST]    docker push [OPTIONS] NAME[:TAG]Example:    docker pull ubuntu    docker push ubuntu:test1

信息/版本

查看 Docker 系统范围信息

Usage:    docker info [OPTIONS]Example:    docker info

查看 Docker 版本信息

Usage:    docker version [OPTIONS]Example:    docker version

未完待续

听说好看的人才能点