一Docker概述
1. docker为什么出现
- 一款产品:开发和部署:两套环境(开发环境和部署环境不一致)导致配置麻烦,每一台机器都要配置相应的环境
- 打包时可以带上环境(即成为镜像),下载镜像直接运行。
- Docker 的思想来自集装箱
- 核心思想:隔离,每个箱子是相互隔离的
- Docker通过隔离机制,充分使用服务器的资源
2. Docker的历史
- 2010,成立dotcloud公司,做一些pass的云计算服务,LXC有关的容器技术,将容器化技术命名为docker
- 2013年,docker开源,docker开始流行,2014年,docker1.0发布
- 在容器技术前,都是使用虚拟机技术
- 虚拟机:在win中安装Vmware,可以虚拟出多台虚拟机
- docker:隔离,镜像(最核心的环境+应用程序),十分小巧,启动快。
- Docker是基于Go语言开发的
3. Docker能干嘛
1.虚拟机技术缺点
1. 资源占用多
2. 启动慢
3. 冗余步骤多
2.容器技术
容器技术不是模拟一个完整的操作系统
3.比较docker和虚拟机的不同
1. 传统虚拟机,虚拟出一个硬件,运行一个完整的操作系统,然后在这个系统上运行需要的软件
2. 容器内的应用软件直接运行在宿主机上,容器没有自己的内容,也没有虚拟硬件,所以轻便
3. 每个容器相互隔离,每个容器内都有自己的文件系统,互不影响
4.应用更快的交付和部署
1. 传统:一堆的帮助文档,来安装程序
2. docker:打包镜像发布测试,一键运行
3. 更便捷的升级和扩缩容
4. 更简单的系统运维
5. 更高效的计算资源利用
4. Docker 的安装
4.1 docker 的基本组成
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-MQbznEnb-1606219290030)(Docker学习.assets/image-20201124103346063.png)]
-
镜像(images):可以通过镜像来创建多个容器
-
容器(container):docker利用容器技术,独立的运行一个或一组应用,通过镜像来创建的。
有启动,停止,删除等基本命令
4.2 安装docker
#查看系统内核:
uname -r
#查看系统信息
cat /etc/os-release
(base) ljk@ljk-MS-7758:~/tlt-learn1/ssd/specs$ cat /etc/os-release
NAME="Ubuntu"
VERSION="16.04.3 LTS (Xenial Xerus)"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 16.04.3 LTS"
VERSION_ID="16.04"
HOME_URL="http://www.ubuntu.com/"
SUPPORT_URL="http://help.ubuntu.com/"
BUG_REPORT_URL="http://bugs.launchpad.net/ubuntu/"
VERSION_CODENAME=xenial
UBUNTU_CODENAME=xenial
安装:看官方文档
4.3 Docker运行原理图
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9LnLepEy-1606219290031)(Docker学习.assets/image-20201124104638569.png)]
4.4 docker 的底层原理
Docker是一个Client-Server结构的系统,Docker的守护进程运行在主机上,通过Socket从客户端访问,DockerServer接受到Docker-Client的指令,就会执行这个命令。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-E1JSckJJ-1606219290032)(Docker学习.assets/image-20201124104758283.png)]
二. Docker的命令
查看docker的版本:docker version
查看docker 的信息:docker info
1.镜像命令
1.1 查看本地主机上的镜像
sudo docker images
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-tEJYreza-1606219290033)(Docker学习.assets/image-20201124105455078.png)]
1.2 搜索镜像
sudo docker search +名称
eg:
sudo docker search mysql
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-XdWX1fjg-1606219290034)(Docker学习.assets/image-20201124105816255.png)]
1.3下载镜像
sudo docker pull +名称:tag(版本号),也可不指定版本号
eg:
sudo docker pull mysql=5.6
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Rsk1FC5j-1606219290035)(Docker学习.assets/image-20201124110246276.png)]
1.4删除镜像
sudo docker rmi -f +名称(可以是镜像的id也可以是名称)
sudo docker rmi -f
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-USmFmm0Q-1606219290035)(Docker学习.assets/image-20201124110747332.png)]
2.容器命令
说明:用镜像才可以创建容器,下载一个centos镜像来测试学习
#下载centos镜像
sudo docker pull centos
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9x3rNWZu-1606219290036)(Docker学习.assets/image-20201124111116746.png)]
2.1新建容器并启动
docker run+[可选参数] images
#参数说明:
--name="Name", 容器名字,eg:tomcat01,tomcat02,用来区分容器
-d 以后台方式运行
-it 使用交互式运行,并入容器查看内容
-p 指定容器的端口 eg:-p 8080:8080
#启动并进入容器
sudo docker run -it centos /bin/bash
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-b9hkG2Z1-1606219290036)(Docker学习.assets/image-20201124112223416.png)]
2.2退出容器
exit #直接退出容器,并停止容器
ctrl +p+q 退出容器,不停止容器
2.3删除容器
sudo docker rm + 容器id #删除指定的容器,不能删除正在运行的容器
sudo docker rm -f +容器id #删除指定的容器,能删除正在行的容器
2.4启动和停止容器的操作
sudo docker start +容器的id #启动容器
sudo docker restart +容器id #重启容器
sudo docker stop +容器id #停止容器
sudo docker kill 容器id #强制停止容器
2.5常用的其他命令:
进入正在运行的容器
方式1
sudo docker exec -it 容器id + /bin/bash
eg:进入正在运行的centos
sudo docker exec -it 0ae8e8d64f18 /bin/bash
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-peW4K9no-1606219290037)(Docker学习.assets/image-20201124122653760.png)]
方式2
sudo docker attach 容器id #进入容器正在执行的终端,不会启动新的进程
2.6从容器拷贝文件到主机上
docker cp 容器id:容器内路径 目的主机的路径
eg:
sudo docker cp 479ee9aea837:/workspace/README.md /home/ljk/data
方式2
sudo docker attach 容器id #进入容器正在执行的终端,不会启动新的进程
2.6从容器拷贝文件到主机上
docker cp 容器id:容器内路径 目的主机的路径
eg:
sudo docker cp 479ee9aea837:/workspace/README.md /home/ljk/data