Docker 系列之 基础入门

安装 Docker
- Windows 10 专业版以上版本
在安装前,需要确保目标机器已经开启了硬件虚拟化和 HyperV ;在安装的过程中建议不要进行其它操作,它需要自动重启。
- Ubuntu
- MacOS
镜像加速器:registry mirror https://registry.docker-cn.com
安装完成后可打开 bash 窗口检查安装是否正常。
# 查看当前安装版本
docker -v
# 查看当前详细信息
docker -info
# 登录 Docker
docker login
安装 Portainer
portainer: 可视化的管理界面,可选操作;(VSCode 里面的 Docker 插件也是可以进行相关操作)
docker volume create portainer_data
docker run -d -p 9000:9000 --name portainer --restart always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer
执行成功后浏览 127.0.0.1:9000 即可。
架构图

三大关键点
image
Docker 镜像是一个只读的环境模板,里面只存放了我们需要运行程序的基础环境配置。
- 常用命令
# 获取镜像
docker pull [选项] [Docker Registry 地址[:端口号]/]仓库名[:标签]
# 查看当前已经下载下来的所有镜像
docker images
docker image ls
# 显示所有悬挂镜像(仓库名、标签均为 <none> 的镜像)
docker image ls -f dangling=true
# 以特定格式显示
docker image ls -q
docker image ls --format "{{.ID}}: {{.Repository}}"
docker image ls --format "table {{.ID}}\t{{.Repository}}\t{{.Tag}}"
# 查看镜像体积
docker system df
# 删除指定镜像
docker image rm [选项] <镜像1> [<镜像2> ...]
docker rmi container_id
注:删除镜像前,请先删除对应的容器。
- 使用 Dockerfile 进行自动构建
- FROM:指定基础镜像
- RUN:执行命令
- build:docker build [选项] <上下文路径/URL/->
- COPY:复制文件
- ADD:更高级的复制文件
- ENTERPOINT:入口点
- ENV:设置环境变量
- ARG:构建参数
- VOLUME:定义匿名卷
- EXPOSE:暴露端口
- WORKDIR:指定工作目录
- USER:指定当前用户
- HEALTHCHECK:健康检查
- ONBUILD:未他人做嫁衣裳
示例脚本如下所示:
docker build -t friendlyname .# 使用此目录的 Dockerfile 创建镜像
docker run -p 4000:80 friendlyname # 运行端口 4000 到 90 的“友好名称”映射
docker run -d -p 4000:80 friendlyname # 内容相同,但在分离模式下
docker ps # 查看所有正在运行的容器的列表
docker stop <hash> # 平稳地停止指定的容器
docker ps -a # 查看所有容器的列表,甚至包含未运行的容器
docker kill <hash> # 强制关闭指定的容器
docker rm <hash> # 从此机器中删除指定的容器
docker rm $(docker ps -a -q) # 从此机器中删除所有容器
docker images -a # 显示此机器上的所有镜像
docker rmi <imagename> # 从此机器中删除指定的镜像
docker rmi $(docker images -q) # 从此机器中删除所有镜像
docker login # 使用您的 Docker 凭证登录此 CLI 会话
docker tag <image> username/repository:tag # 标记 <image> 以上传到镜像库
docker push username/repository:tag # 将已标记的镜像上传到镜像库
docker run username/repository:tag # 运行镜像库中的镜像
container
容器是从镜像的创建的运行实例;简单的说,它是在镜像上面又创建了一层可读写层。容器之间相互隔离。
- 常用命令
# 查看当前正在运行的容器
docker container ls
docker ps
# 查看当前所有容器实例
docker container ls -a
docker ps -a
# 新建(若不存在)并启动一个容器实例
docker run image
# 新建(若不存在)并后台启动一个容器实例
docker run -d image
# 新建(若不存在)并以交互模式启动一个容器实例
docker run -it image
# 启动已终止的容器
docker start conatiner_id
docker container start conatiner_id
#停止指定容器
docker stop conatiner_id
docker container stop conatiner_id
# 停止所有容器(在 powershell 中操作)
docker stop $(docker ps -aq)
# 删除指定容器
docker rm conatiner_id
# 查看指定容器的运行日志
docker logs conatiner_id
repository
仓库是集中存放镜像的地方,仓库分为公开仓库和私有仓库两种,最大的公开仓库是Docker Hub,提供了数量庞大的镜像供用户下载,国内的公开仓库包括Docker Pool等,可以提供大陆用户更稳定、更快的访问。
- 常用命令
# 查找镜像
docker search keywords
# 拉取镜像
docker pull repo_name
docker push username/repo_name
相关参考
- docker官网
- Docker中文网站
- Docker Hub Quickstart
- Docker Practice
- Dockerfie 官方文档
- Dockerfile 最佳实践文档
- Docker 官方镜像 Dockerfile
- portainer
- Docker 教程
- Docker 容器入门
Docker 系列之 基础入门的更多相关文章
- docker容器技术基础入门
目录 docker容器技术基础入门 容器(Container) 传统虚拟化与容器的区别 Linux容器技术 Linux Namespaces CGroups LXC docker基本概念 docker ...
- 「译」JUnit 5 系列:基础入门
原文地址:http://blog.codefx.org/libraries/junit-5-basics/ 原文日期:25, Feb, 2016 译文首发:Linesh 的博客:JUnit 5 系列: ...
- docker系列之基础命令-2
一.查看本地镜像 docker images 二.需要基础的镜像两种方式 1.docker pull centos 可以直接拉起镜像 2.直接用xshell导入就行,docker load -i 加 ...
- docker系列之基础命令-1
1.docker基础命令 docker images 显示镜像列表 docker ps 显示容器列表 docker run IMAGE_ID 指定镜像, 运行一个容器 docker start/sto ...
- Docker系列之基础实践篇(上)
常用命令回顾 帮助命令 1.启动docker //启动 $ systemctl start docker 2.查看docker版本 $ docker version 3.查看安装的docker信息描述 ...
- 1、docker容器技术基础入门
Docker和传统虚拟机的区别 参考文章: https://lwn.net/Articles/531114/ 操作中的命名空间详解 https://blog.yadu ...
- 1.docker容器技术基础入门
内容来自:https://www.cnblogs.com/marility/p/10215062.html https://blog.51cto.com/gouyc/2310785?source=dr ...
- Vue 系列之 基础入门
背景叙述 渐进式 JavaScript 框架 易用:已经会了 HTML.CSS.JavaScript?即刻阅读指南开始构建应用! 灵活:不断繁荣的生态系统,可以在一个库和一套完整框架之间自如伸缩. 高 ...
- 快速入门系列--WebAPI--01基础
ASP.NET MVC和WebAPI已经是.NET Web部分的主流,刚开始时两个公用同一个管道,之后为了更加的轻量化(WebAPI是对WCF Restful的轻量化),WebAPI使用了新的管道,因 ...
随机推荐
- Ubuntu18.04 配置Cups PDF虚拟打印机服务
更新 sudo apt update && sudo apt upgrade -y 安装cups pdf服务 sudo apt-get install cups-pdf -y 修改配置 ...
- 《Java算法》判重算法-整数判重
判重算法-整数判重 /** * 判断大于1,小于63的整数是否出现重复数字. * * 算法逻辑:先获取8 根据移位(1 << arrInt[i]) 得到2进制数100000000 , * ...
- 【nginx+keepalived】nginx+keepalived搭建高可用
一.结构及环境 1.1 环境介绍 操作系统:centos7 nginx+keepalived:106.53.73.200 master nginx+keepalived:182.254.184.102 ...
- Python 库打包分发、setup.py 编写、混合 C 扩展打包的简易指南(转载)
转载自:http://blog.konghy.cn/2018/04/29/setup-dot-py/ Python 有非常丰富的第三方库可以使用,很多开发者会向 pypi 上提交自己的 Python ...
- WinForm WebBrowser 设置cookie
[DllImport("wininet.dll", CharSet = CharSet.Auto, SetLastError = true)] public static exte ...
- 安卓AlertDialog四种对话框的最科学编写用法
首先我们上图: xml的代码如下,用于编写按钮: <?xml version="1.0" encoding="utf-8"?> <Linear ...
- Android 线性布局 计算器
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android=&quo ...
- 《Hands-On System Programming with Go》之读文件
有点全,但不是很全. 一次读入,分批次读入,缓存读入. 要记得这几种不同读取的应用场景. package main import ( "bufio" "bytes&quo ...
- IO - 同步 异步 阻塞 非阻塞的区别,学习Swoole有帮助
同步(synchronous) IO和异步(asynchronous) IO,阻塞(blocking) IO和非阻塞(non-blocking)IO分别是什么,到底有什么区别?本文较长需耐心阅读,基础 ...
- .Net Core组件化视图(部分视图)
.Net Core组件化视图(部分视图) 1.背景 1.以前我们使用.Net的时候使用部分视图的方式在,.Net Core 中能在单独处理逻辑的部分视图没有了,但是我们还是想使用现在的.Net Cor ...