序章
我,一位土生土长于口袋大陆的平凡人,本应按部就班,过着朝九晚五的生活,奈何命本不凡。
在少年时偶得一本奇书《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"
进入容器
进入容器有两种方式:attach 与 exec 命令
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
未完待续
听说好看的人才能点