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

引用一位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
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容