Docker
说明
Docker是一个开源的应用容器引擎,基于Go语言并遵从Apache2.0协议开源。
Docker可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化。
容器化技术:
内核->环境->程序
内核->容器(环境->程序)
优点:
小
容器相互独立,与操作系统独立
虚拟机与Docker异同:
Docker有环境,应用,文件,但无内核。
虚拟机有内核,是一个完整的操作系统
用法
独立环境:
创建独立与操作系统的环境与文件体系
连同环境打包应用,项目:
DevOps(开发运维):
快速交付部署:不用帮助文档,打包镜像发布测试一键运行
升级,扩容:扩展服务器a,复制镜像到服务器b运行
运行维护系统:开发,测试环境高度一致
高效运行计算资源:
命令:
使用官方安装脚本自动安装:
$curl-fsSLhttps://get.docker.com|bash-sdocker--mirrorAliyun
报错:需手动配置权限:
$sudogroupadddocker
$sudogpasswd-a$USERdocker
$newgrpdocker
显示信息
$dockerversion
$dockerinfo
帮助:
$dockerhelp
镜像命令:
查看:
$dockerimages
载入ubuntu镜像:
$dockerpullubuntu
$dockerpullubuntu:latest
删除:
$dockerrmi-f$(dockerimages-aq)
获取:
$dockerpullubuntu:13.10
查找:
从DockerHub网站来搜索镜像,DockerHub网址为:
https://hub.docker.com/
本地创建:
dockercommit-m="hasupdate"-a="runoob"e218edb10161runoob/ubuntu:v2
容器命令:
运行:
$dockerrun-itubuntu/bin/bash
$dockerrunubuntu:15.10/bin/echo"Helloworld"
$dockerrun-itd--nameubuntu-testubuntu/bin/bash(后台运行)
退出:
$exit
查看:
$dockerps-a
停止:
$dockerstop<容器ID>
重启:
$dockerrestart<容器ID>
删除:
$dockerrm-f1e560fca3906
$dockercontainerprune
进入:
$dockerattach<容器ID>
$dockerexec-it243c32535da7/bin/bash
导入容器:
$dockerexport1e560fca3906>ubuntu.tar
导入容器快照:
$catdocker/ubuntu.tar|dockerimport-test/ubuntu:v1
$dockerimporthttp://example.com/exampleimage.tgzexample/imagerepo
web应用:
$runoob@runoob:~#dockerpulltraining/webapp#载入镜像
$runoob@runoob:~#dockerrun-d-Ptraining/webapppythonapp.py
容器连接:容器中可以运行一些网络应用,要让外部也可以访问这些应用,可以通过-P或-p参数来指定端口映射。
网络端口映射:
$dockerrun-d-Ptraining/webapppythonapp.py
$dockerrun-d-p32768:5000training/webapppythonapp.py容器端口5000绑定主机端口32768。
$dockerrun-d-p127.0.0.1:5001:5000training/webapppythonapp.py绑定的网络地址127.0.0.1。
查看端口的绑定情况:
$dockerportadoring_stonebraker5000
容器互联:端口映射并不是唯一把docker连接到另一个容器的方法。docker有一个连接系统允许将多个容器连接在一起,共享连接信息。
新建网络:
$dockernetworkcreate-dbridgetest-net
连接容器:
$dockerrun-itd--nametest1--networktest-netubuntu/bin/bash
$dockerrun-itd--nametest2--networktest-netubuntu/bin/bash
仓库管理:DockerHub
登录:
$dockerlogin
退出:
$dockerlogout
查找:
$dockersearchubuntu
下载:
$dockerpullubuntu
推送:
$dockertagubuntu:18.04username/ubuntu:18.04
$dockerimagels
返回:
REPOSITORYTAGIMAGEIDCREATED...
ubuntu18.04275d79972a866daysago...
username/ubuntu18.04275d79972a866daysago...
$dockerpushusername/ubuntu:18.04
$dockersearchusername/ubuntu
返回:
NAMEDESCRIPTIONSTARSOFFICIALAUTOMATED
username/ubuntu
Dockerfile定制镜像:
Dockerfile是一个用来构建镜像的文本文件,文本内容包含了一条条构建镜像所需的指令和说明。
在一个空目录下,新建一个名为Dockerfile文件,并在文件内添加以下内容:
FROMnginx
RUNecho'这是一个本地构建的nginx镜像'>/usr/share/nginx/html/index.html
开始构建镜像:
$dockerbuild-tnginx:v3.
DockerCompose:
安装:
$sudocurl-L"https://github.com/docker/compose/releases/download/1.24.1/docker-compose-$(uname-s)-$(uname-m)"-o/usr/local/bin/docker-compose
创建软链:
$sudoln-s/usr/local/bin/docker-compose/usr/bin/docker-compose
测试是否安装成功:
$docker-compose--versioncker-composeversion1.24.1,build4667896b
创建一个测试目录:
$mkdircomposetest
$cdcomposetest
可视化:
安装:
$dockerrun-d-p8088:9000portainer/portainer
#GPU
与虚拟机不同,docker可以使用GPU进行计算
安装docker-ce:
安装nvidia-container-toolkit:
$distribution=$(./etc/os-release;echo$ID$VERSION_ID)
curl-s-Lhttps://nvidia.github.io/nvidia-docker/gpgkey|sudoapt-keyadd-
curl-s-Lhttps://nvidia.github.io/nvidia-docker/$distribution/nvidia- docker.list|sudotee/etc/apt/sources.list.d/nvidia-docker.list
sudoapt-getupdate&&sudoapt-getinstall-ynvidia-container-toolkit
sudosystemctlrestartdocker