Docker入门以及一些常用命令

2021-07-07
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文件是镜像导出的文件,可以通过文件方式传输到其他地方运行。

引用一位B站up主的图,说明docker概念之间的关系https://www.processon.com/view/link/5d836beae4b021bb66447353

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
Avatar

陈文

热爱生活,喜欢新鲜的事物,希望用自己的能力让世界变得更好,愿望是世界和平。