Docker 入门常用命令:镜像、容器、数据卷与网络
第一次接触 Docker 时,最容易被各种命令淹没。其实入门只需要抓住一条主线:镜像是模板,容器是运行起来的实例,数据卷负责持久化数据,网络负责让容器之间互联互通。下面按这四个部分,把最常用、最值得先记住的命令梳理一遍。
一、镜像:只读的模板
镜像是只读的模板,所有容器都是从镜像启动的。查看本机已有镜像、拉取镜像、自己打包镜像、删除镜像,分别用下面几条命令:
docker images
docker pull nginx:latest
docker build -t myapp:1.0 .
docker rmi myapp:1.0
初学者常把镜像和容器混为一谈:删除镜像前要先停掉并删除依赖它的容器,否则会提示冲突。标签(tag)相当于镜像的版本号,写清楚 latest 之外的具体版本,上线后回滚才有据可查。
二、容器:镜像的运行实例
容器是镜像的运行实例。最常用的是 docker run,比如以后台方式启动一个 Nginx 并映射端口:
docker run -d --name web -p 8080:80 nginx
docker ps
docker ps -a
docker exec -it web sh
docker logs -f web
docker stop web
docker rm web
记住用 --name 给容器起个名字,后面所有命令都可以直接用名字而不用抄容器 ID,省事很多。docker ps 默认只显示运行中的容器,加上 -a 可以看到已停止的容器,排查问题时别漏了这个参数。
三、数据卷:让数据活下来
容器删掉后,写在容器可写层里的数据也会一起消失,数据库这类有状态服务不能这样裸奔。数据卷就是专门用来持久化的:
docker volume ls
docker volume create webdata
docker run -d -v webdata:/usr/share/nginx/html nginx
docker run -d -v /home/user/html:/usr/share/nginx/html nginx
需要提醒的是,挂载宿主机目录时要注意目录权限和路径写法,Windows 和 macOS 下尤其容易因为路径格式踩坑。匿名卷、具名卷和绑定挂载三者的区别,记住一句话就行:具名卷由 Docker 管理,适合数据库;绑定挂载直接用宿主机目录,适合开发时实时同步代码。
四、网络:容器之间互联互通
多个容器之间要互相访问,需要网络。查看网络、创建自定义网络、启动时加入网络:
docker network ls
docker network create mynet
docker run -d --network mynet --name api myapp
同一网络内的容器可以直接用容器名当主机名互相访问,不需要记住 IP。对外暴露服务靠端口映射:-p 8080:80 表示把宿主机 8080 端口转发到容器 80 端口,浏览器访问 localhost:8080 就能打开容器里的服务。
小结:一条上手流程
把上面四组命令串起来,一个最简单的上手流程就是:docker pull 拉镜像、docker run 起容器、-v 挂数据卷、–network 连网络,再用 docker ps 和 docker logs 查状态。遇到命令记不住时,docker --help、docker run --help 这类帮助命令随时可查。先在自己的电脑上把这十几条命令跑熟,再去学 Compose 编排和镜像瘦身,会顺畅很多。
- 点赞
- 收藏
- 关注作者
评论(0)