官网英文教程真的不错,一门好的技术成果一定先有优秀且面面俱到的文档。
这个文档应该是渐进式的引导教程,我太喜欢这种方式了。
一、docker基本指令
1. docker build -t getting-started .
build :表示构建镜像
-t getting-started :表示tag为getting-started
. : 能看到这个点吧,表示docker到当前目录找Dockerfile这个配置文件
2. docker run -dp 801:801 getting-started 或者 docker run -d -p 801:801 getting-started
run:根据镜像创建一个新的容器,然后启动容器
-d:表示后台启动,detached
-p 801:801:主机801端口映射容器801端口(web请求时注意设置该端口的值为实际端口值)
-dp 801:801:-d -p的缩写
getting-started:镜像的名称
3. docker stop 564cb2d5e061
stop:停止容器,web服务无法访问。容器不会消失(docker ps -a 可查看),镜像也还在。
564cb2d5e061:这个是容器ID,可先通过docker ps查看
4. docker rm -f 564cb2d5e061
rm :删除容器,如果成功,容器消失,服务停止
-f:强制删除容器,如果不加-f,正在运行的image的容器不允许删除
564cb2d5e061:这个是容器ID,通过docker ps可查看
5. docker login -u 2020605
login : 登录
-u 2020605:-u代表username,2020605是dockerId,要先注册 https://hub.docker.com/
6. docker tag getting-started 2020605/getting-started
tag :为了上传和共享image,创建tag映射(本地image和远程image的名称映射)
getting-started:tag后的第一个字符串,是本地镜像的名字
2020605/getting-started:tag后的第二个完整的字符串是远程镜像的名字,斜杠左是dockerId,右侧是https://hub.docker.com/上自定义的名字
7. docker push 2020605/getting-started
push:上传镜像操作
2020605/getting-started:远程镜像的名字,因为存在名称映射,所以该指令没有指定本地镜像名称
8. docker exec container-id cat /data.txt
exec :在容器上执行命令
container-id : 容器ID
cat /data.txt :虚拟机可执行的指令,查看根目录下的data.txt的内容
9.docker volume create todo-db
volume :volume操作
create :添volume
todo-db:volume名称
10. docker run -dp 3000:3000 -v todo-db:/etc/todos getting-started
-v : 使用volume并挂载
todo-db:/etc/todos 冒号左边是volume的名称,右侧是挂载的路径
11. docker run -dp 3000:3000 -w /app -v "$(pwd):/app" node:12-alpine sh -c "yarn install && yarn run dev"
-w :代表目录,后面跟/app
-v : bind mount方式持久化代码,"$(pwd):/app为虚拟机的目录位置
sh -c:sh脚本,-c后面是脚本代码
注意:bind mounts方式仅保持当前的image代码同步,容器还需要重新build才可以让其它image更新代码
12. docker image history --no-trunc getting-started
image :镜像操作
history :查看image创建时每个layer的执行过程
--no-trunc :显示省略的内容
13. docker inspect getting-started
inspect : 查看容器的详细信息
二、docker-compose指令
1. docker-compose version
verson :查看版本
2. docker-compose up -d
up :启动,按照yml文件定义,创建多个docker容器
-d:后台运行
3. docker-compose down --volumes
down : 停止docker-compose多个容器,删除network
--volumes :不是必须的,会删除volume
4. docker-compose logs -f
logs :查看日志
-f :实时更新显示最新的日志