Docker笔记
我研究了一下Docker,所以写了一份备忘录。
只考虑个人使用,不考虑他人阅读,但如果你有指出错误的想法,请留下评论或任何其他的意见。
容器与虚拟机的比较
なんかコンテナってやつはVMとは違うらしい。
Microsoftが良い感じな説明してた
まぁ、コンテナのほうが色々便利な場合もあるし基本的によほどのことをしないならコンテナのほうが幸せになれるよね的な。
容器 vs 镜像 vs
class/instance的な感じでimage/containerという理解。
同じimageのcontainerが複数存在できるけど、複数の同じcontainerが存在することはあり得ないよね。
Docker的命令行工具
在中国,请提供一种本地语言的转述选择:
使用Docker运行命令[选项](镜像)/使用Docker删除命令[选项](容器名称/ID)
使用 docker run {image} 命令来创建(运行)容器
使用 docker rm {container} 命令来删除容器
可能会使用的选项(跑步):
-i interactive mode (MinTTYとかだと winpty docker run -it {image})
-t terminal
-d daemon化する(detachのdっぽい)再起動したとき勝手に起動するんだっけ・・・?
-p {machine_port:container_port} portをlocalhostにバインドする
-P 適当な空いているportにバインドする
–rm stopしたらコンテナをrmする。
-v {host/path:container/path} ホストマシンのドライブに、コンテナ内のパスのものを保存する(DBとか)1
docker ps [选项]
在中文中,使用类似Linux中的ps命令,显示”正在运行的容器及其相关信息”。
以下是這句話的中文原生寫法:
可能會使用的選擇:
-a stopしているコンテナの情報も表示する
-l 最も最近編集したコンテナを表示する
-q PID(多分コンテナのUUID的なもの、rmとかに与えるパラメータ)を抽出する。
启动/停止 Docker 容器 {容器名字/ID}。
使用docker start来启动停止的容器。
使用docker stop来停止正在运行的容器(但不删除)。
在Docker中执行命令,使用容器名称或ID:docker exec {容器名称/ID} {命令}
在正在运行的容器内,使用docker exec命令启动一个新的进程。
例如,使用docker exec adoring_shaw bash命令来探索容器内的Linux环境。
使用Docker创建[选项] {Dockerfile路径}
使用`docker build {path_to_dockerfile}`命令根据名为Dockerfile的类似.sh的文件编译镜像。
这里只需要一个例子,请用母语中文重新解释以下内容:
The following natively in Chinese
-t {user/image:tag} 変なimageの名前( になるんだっけ・・・)じゃなくてちゃんと名前つける
Docker 镜像
希望像Docker ps那样有一个镜像版本。如果Git之类的也有这种功能就好了……
使用docker rmi [选项] {镜像}。
使用命令 `docker rmi {image}` 删除镜像。
查看 Docker 容器的进程信息:docker top {容器名称/ID}
类似于Docker的TopLinux的工具。用于显示容器内资源的使用率。
使用docker logs命令,您可以查看指定容器的日志。
显示docker logs容器的stdout。
请用中文原生态地重新表达以下内容,并只提供一个选项:
“Can you please pass me the salt?”
-f linuxのtail -fのように逐次更新される。
DockerHub is a platform in the Docker ecosystem.
用中文进行重述(仅需一种选项):
将 Docker 容器提交为镜像时,使用以下命令:docker commit [选项] {容器名称/ID} [新镜像名称]。
使用docker commit命令从容器的当前状态创建一个新的镜像,命令格式为:docker commit {容器名称/ID} [新名称]。
用汉语将以下内容重新表达,只需要一个选项:
可能会使用的选项:
-a “{Author } authorをつける
-m “{message}” commit messageをつける
登录到 Docker
用docker登录以持久化方式登录到dockerhub。
拉取容器镜像 {user/image:tag}
从Docker Hub上使用docker pull类似于git的方式下载最新版本的image。
如果忘记指定标签,将会下载到一个特殊的标签叫latest(但不一定是最新版本),因此请明确指定标签。
将用户/镜像:标签推送到Docker。
与git相同,使用docker push将更改上传至Docker Hub。
如果忘记标签,将自动创建一个名为latest的特殊标签(并不一定是最新版本),因此请明确指定。
将{image}的Docker镜像标记为{tag}2
使用docker tag命令可以创建一个与现有镜像内容完全相同但名称不同的镜像。在将其推送到DockerHub之前,可以将其转换为username/imagename:tag格式使用。
Docker Compose: Docker Compose是一种常用的工具。
docker-compose是一个工具,用于同时启动多个容器(如数据库、服务器等)。感觉有点像ROS Launch。
每个容器被称为服务(service)。
可以将各种设置写入名为docker-compose.yml的文件中(完全的参考)。
请注意的要点
曝光和端口的区别
在使用docker-compose时,默认会构建compose内部的自定义网络。这是一个与本地主机隔离的环境,因此只能从内部访问(可能)。
有两种类型的端口公开方式:
-
- exposeはdocker-compose内の他のコンテナに対してポートを公開する設定。
- portsはlocalhostのポートとコンテナのポートをバインドする設定(docker run -pと同じ)。
使用depends_on或links
在Compose中,主机名可以与服务名连接起来,但需要进行相关配置。
depends_onをする。この場合dependencyが先に起動される。
linksをする。この場合ただ curl -X PUT http://db:5984/hogehogeなどができる。
请帮我搬一下这个箱子。
请你来帮助我搬这个箱子。
version: "2"
services:
srv:
image: spaghet/srv:latest
build: .
ports:
- "80:80"
depends_on:
- db
db:
image: klaemo/couchdb
volumes:
- //c/Users/spaghet/Documents/hoge/fuga/:/opt/couchdb/data
expose:
- "5984"