Docker 快速入门、核心概念和常用指令
周末有朋友问起Docker相关的问题。今天就来跟大家分享Docker 快速入门、核心概念和常用指令。
1、基本概念与操作
1.1、安装
Linux 是 Docker 的原生支持平台,所以建议在 Linux 下安装。CentOS 下安装 Docker,需要 7 及以上的发行版,建议使用 overlay2 存储驱动程序。
# 卸载已有 docker sudo yum remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-engine 1. 添加安装源 sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo 1. 安装最新版 sudo yum install docker-ce docker-ce-cli containerd.io 1. 启动 sudo yum install docker-ce docker-ce-cli containerd.io登录后复制
2、重命名镜像 docker tag 如:docker tag nginx:latest mynginx:latest
3、查看镜像 docker image ls 或 docker images
4、删除镜像 docker rmi
如:docker rmi mynginx
5、构建镜像 docker build 或 docker commit 如:docker commit nginx mynginx:lastest docker build 相对复杂,但使用较多
生命周期:
created:初建状态
running:运行状态
stopped:停止状态
paused:暂停状态
deleted:删除状态
操作:1、创建并启动容器
创建:docker create -it --name=mynginx mynginx
启动:docker start mynginx
创建并启动:docker run -it --name=mynginx mynginx
2、终止容器 docker stop mynginx
3、进入容器 docker attach mynginx docker exec -it mynginx sh (使用较多)
4、删除容器 docker rm mynginx 删除运行中的容器:docker rm -f mynginx
5、导出容器 docker export mynginx > mynginx.tar
6、导入容器 docker import mynginx.tar mynginx:import
公共仓库 docker hub https://hub.docker.com/ 登录:docker login 推送镜像到仓库:docker push
使用 distribution 构建私有仓库 https://github.com/distribution/distribution
docker run -d -p 5000:5000 --name registry registry:2.7 docker push localhost:5000/mynginx
2、-v 指定被持久化的路径,Docker 会自动为我们创建卷,并且绑定到容器中 docker run -d --name=nginx-volume -v /usr/share/nginx/html nginx
3、查看:docker volume ls
4、卷详细信息:docker volume inspect volume-name
5、--mount 参数指定卷的名称 docker run -d --name=nginx --mount source=volume-name,target=/usr/share/nginx/html nginx
6、删除卷:docker volume rm volume-name
7、卷之间数据共享:docker run --mount source=lv,target=/tmp/log --name=v-producer -it test docker run -it --name consumer --volumes-from v-producer test
8、卷与主机之间数据共享:docker run -v /data:/usr/local/data -it test
- docker,是 Docker 客户端,发送请求
- dockerd,服务端入口,负责接收请求、返回结果
- docker-init,容器的 1 号进程,管理子容器
- docker-proxy,主机的网络流量转发到容器
2、containerd
- containerd,负责容器的生命周期管理,如容器启动、停止等…
- containerd-shim,作为容器进程的父进程,解耦 containerd 和真正的容器进程
- ctr,containerd 的客户端,开发与调试时向 containerd 发送请求
3、运行时
- runc,通过系统接口,创建、销毁容器