Docker 笔记(上篇)

Docker 概述

Docker 概念

Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的 Linux或Windows操作系统的机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。

Docker 笔记(上篇)_第1张图片

Docker的历史

在2010年,几个大胡子年轻人从美国知名创业孵化器Y Combinator毕业后,在旧金山成立了一家做PaaS 平台的公司,名叫「dotCloud」,其最主要的创始人是「Solomon Hykes」
dotCloud在当时的商业模式为:以多语言PaaS为卖点,使得用户可以选择不同的开发组件和语言来运行程序。而随着微软、谷歌、亚马逊、IBM等大厂纷纷加入PaaS平台,竞争更是异常激烈,dotCloud的成长变得非常缓慢,可谓是举步维艰,期投资人Peter Fenton说dotCloud在2012年的挣扎,就像温水煮青蛙。
面对那段艰困的时期,在2013年3月份,dotCloud创始人Hykes做了一个在现在看来无比正确的决定:将核心技术开源,开源也就是开放源代码,让全世界的开发者贡献自己的代码。开源后越来越多的工程师开始发现这项技术的优点,人气迅速攀升,速度之快,令人咋舌。这项技术,就是docker,使用Go语言。
3月开源,在3月底就发布了docker 0.1版本,此后几乎每个月都有一个新版本产生,2014年6月,docker第一个里程碑版本1.0发布,到2017年2月8日,docker更新到1.13.1(更新日志),此后又分为Docker CE(社区版)和 Docker EE(商业版)。

Docker安装与卸载

安装Docker

  • 安装Docker ,登录 Docker 官方网站 ,在Docker Engine 中有安装centOS 的教程


Docker 笔记(上篇)_第2张图片



 

  • 首先第一步,先卸载旧的Dokcer版本

sudo yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-engine

Docker 笔记(上篇)_第3张图片

  • 第二步,需要安装包 

yum install -y yum-utils

Docker 笔记(上篇)_第4张图片

  • 第三步,设置镜像仓库,不要使用官方提供的,因为速度太慢,最好使用阿里云国内安装源安装Docker。

yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

  • 第四步,安装Docker

yum install docker-ce docker-ce-cli containerd.io

      Docker 笔记(上篇)_第5张图片

  • 启动Docker,并检验是否安装成功

systemctl start docker
docker version

Docker 笔记(上篇)_第6张图片

  •  运行hello-world

 docker run hello-world

Docker 笔记(上篇)_第7张图片

  •  查看下载的hello-world 镜像

docker images

 卸载Docker

  •  卸载软件

yum remove docker-ce docker-ce-cli containerd.io

  •  删除目录(docker 的默认工作路径  /var/lib/containerd)

rm -rf /var/lib/docker 

Docker 常用命令

帮助命令

docker version            # 显示docker 的版本信息
docker info                  # 显示docker 的系统信息,包括镜像和容器的数量
docker 命令  --help     # 帮助命令       

或者查官方文档

Docker 笔记(上篇)_第8张图片

镜像命令

  • 查看所有镜像的信息

docker images
# 命令后面的可选项
-a ,--a                 列出所有镜像
-q, --quiet           只显示镜像的ID

 字段分析

REPOSITORY    TAG       IMAGE ID       CREATED        SIZE
hello-world        latest    9c7a54a9a43c   5 months ago   13.3kB
REPOSITORY    仓库的仓库源
TAG                     镜像的标签
IMAGE ID            镜像的ID
CREATED            镜像创建的时间
SIZE                     镜像的大小

  •  搜索镜像

 docker search 搜索镜像
# 可选项,通过搜藏数来过滤
--filter=STARS=3000        #通过搜索数来过来镜像

 Docker 笔记(上篇)_第9张图片

  • 下载镜像

 docker pull 镜像名[:tag]
# tag 是可选项,如果不选tag ,那么默认下载最新版本

 Docker 笔记(上篇)_第10张图片

  • 删除镜像

docker rmi -f  IMAGE/REPOSITORY         # 删除指定镜像
docker rmi -f  $(docker images -aq)           #  删除所有镜像,循环删除

 

容器命令

 有了镜像才可以创建容器,通过下载centOS 镜像来测试学习

  • 下载centOS 镜像

docker pull centos

  • 新建容器并启动

docker run [可选参数] 镜像
# 参数说明
--name="Name"       #容器名字 tomcat1  tomcat2,用来区分容器
-d                             #后台方式运行
-it                             #使用交互方式运行,进入容器查看内容
-p                             #指定容器的端口   -p  8080:8080
        -p 主机端口:容器端口(常用)

        -p 容器端口
        容器端口

-P                             #随机指定端口 

# 例子 docker run -it centos /bin/bash

Docker 笔记(上篇)_第11张图片

注意;当我们使用 docker run -d 镜像名,然后使用命令 docker ps 发现没有该容器在运行。

因为docker 容器使用后台运行,  就需要有一个前台进程, docker 发现没有应用,就会自动停止。

 

  • 列出所有运行的容器 

docker ps
# 可选项
-a          #列出当前正在运行的容器+带出历史运行过的容器
-n=?     #显示最近创建的容器         ?是指显示容器的数量
-q         #只显示容器的编号

  •  从容器中退回主机(直接停止容器并退出)

 exit

  •  从容器中退会主机(容器不停止并推出)

Ctrl + P + Q

 Docker 笔记(上篇)_第12张图片

  •  删除容器

docker rm 容器ID                                #删除指定的容器,不能删除正在运行的容器,如果要删除运行的容器  rm -f

docker rm -f $(docker ps -aq)             #删除所有的容器

  •  启动和停止容器的操作

docker start 容器ID                # 启动容器
docker restart 容器ID             # 重启容器
docker stop 容器ID                # 停止当前正在运行的容器
docker kill 容器ID                   # 强制停止当前容器

操作命令

  • 查看日志
     

docker logs -f -t --tail 容器
#参数
-tf                         # 显示日志,t 代表时间戳
--tail number        # 要显示日志条数

  • 查看容器中进程信息 ps
     

docker top 容器ID

 

  • 查看容器的元数据

docker inspect 容器ID

Docker 笔记(上篇)_第13张图片

  • 进入当前正在运行的容器 (我们通常容器都是使用后台方式运行的,需要进入容器,修改一些配置)

# 进入容器后开启一个新的终端,可以在里面操作(常用)
docker exec -it  容器ID /bin/bash

docker attch 容器ID  (进入容器正在执行的终端,不会启动新的进程)

  • 从容器中拷贝文件到主机上

docker cp 容器ID:容器内路径   目的的主机路径

 

你可能感兴趣的:(docker,学习,java)