Docker入门以及一些常用命令
2021-07-07
4分钟阅读时长
这两天学了一下docker,做下笔记。网上看了一些视频,阮一峰老师的《Docker 入门教程》写的很好,推荐大家去看看。
相关链接
- docker官网
- Play with Docker,一个支持在线跑docker命令的演练场,初学者免去自己搭环境,免费版每次4小时
- 安装docker,菜鸟教程里的装docker
什么是docker
Docker是一种开源的应用容器化平台,可以将应用程序和依赖项打包成独立的容器,实现跨平台、高效和快速的部署。
与虚拟机不同的是,docker无需像传统虚拟机一样全量模拟系统,其调用的系统资源依赖于宿主机并与宿主机隔离,减少了较传统虚拟机而言的系统开销。
使用docker,将需要复杂配置的软件和环境放到一起,迁移或部署的时候,直接将整个打包带走,这种拆分式的部署减少了耦合,极大提高了运维效率。
docker相关概念
镜像
image是docker里的镜像,类似于平时安装虚拟机时的ios文件。镜像可以看成是容器的模板。镜像可以从docker仓库中下载,或者从本地环境中封装制作。
容器
container是docker里的容器,容器就像是安装之后的虚拟机。容器可以看成是镜像的实例,docker通过镜像文件生成容器。
仓库
repository是docker镜像的远端仓库,Docker hub是Docker官方维护的仓库。可以从仓库中拉取现成的镜像到本地运行。
Dockerfile
Dockerfile是用于构建镜像的配置文件,可以使用docker build命令构建镜像。配置文件里可以自定义构建步骤。
.tar文件
.tar文件是镜像导出的文件,可以通过文件方式传输到其他地方运行。
docker相关操作和命令
查看docker相关信息
docker version
# 或者
docker info
查看docker是否启动
systemctl status docker
# 或者
service docker status
启动docker
systemctl start docker
# 或者
service docker start
从仓库拉取镜像
# 默认拉取最新版本
docker pull nginx
# 拉取最新版本
docker pull nginx:latest
# 拉取指定版本
docker pull nginx:版本
查看本地镜像
docker image ls
或者
docker images
移除镜像
docker image rm [image_name]
# 或者
docker rmi [image_name]
从镜像启动新容器
docker run -d -p 8080:80 -v /data:/usr/share/nginx/html --name my-nginx nginx
# 参数说明
# -d 运行在后台
# -p 8080:80 将宿主机的8080端口映射到容器的80端口
# -v /data:/usr/share/nginx/html将宿主机的/data映射到容器的/usr/share/nginx/html
# --name my-nginx 设置容器名称为my-nginx
进入容器shell
docker exec -it [container_id] bash
# 参数说明
# -it 将容器shell映射到当前shell
# [container_id]为容器的id,可以简写前缀部分
# bash 运行容器的bash
查看容器
# 正在运行的容器
docker ps
# 全部容器
docker container ls --all
停止容器
docker container kill [container_id]
# 或者
docker kill [container_id]
# [container_id]为容器的id,可以简写前缀部分
移除容器
# 需要先停止容器
docker rm [container_id]
# 或者强制移除
docker rm -f [container_id]
# [container_id]为容器的id,可以简写前缀部分
容器封装镜像
docker commit [container_id] [image_name]
# 参数说明
# [container_id]为容器的id,可以简写前缀部分
# [image_name]为封装之后的镜像名
构建镜像
或者通过Dockerfile文件,使用docker build命令来构建镜像
docker image build -t [image] [path]
# 或者
docker build -t [image] [path]
# 参数说明
# -t 为构建的镜像指定名称
# [image] 镜像名称
# [path] Dockerfile所在的路径,.表示当前路径
Dockerfile语法参考,示例文件:
FROM nginx
# 基于nginx镜像构建
ADD ./ /user/share/nginx/html/
# 将当前目录下的所有文件复制到镜像里的/user/share/nginx/html/下
镜像导出tar
docker save [image_name] > [output_file]
# [image_name]需要导出的镜像
# [output_file]导出的.tar文件,
# 例如:docker save nginx > nginx.tar 将nginx镜像导出到当前目录的nginx.tar文件中
tar导入镜像
docker load < [tar]
# 参数说明
# [tar]为需要导入的tar文件,例如nginx.tar