当前位置: 首页 > news >正文

Docker 笔记(上篇)

Docker 概述

Docker 概念

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

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 的教程






 

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

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

  • 第二步,需要安装包 

yum install -y yum-utils

  • 第三步,设置镜像仓库,不要使用官方提供的,因为速度太慢,最好使用阿里云国内安装源安装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,并检验是否安装成功

systemctl start docker
docker version

  •  运行hello-world

 docker run hello-world

  •  查看下载的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 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 pull 镜像名[:tag]
# tag 是可选项,如果不选tag ,那么默认下载最新版本

 

  • 删除镜像

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 run -d 镜像名,然后使用命令 docker ps 发现没有该容器在运行。

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

 

  • 列出所有运行的容器 

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

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

 exit

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

Ctrl + P + Q

 

  •  删除容器

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 exec -it  容器ID /bin/bash

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

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

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

 

http://www.lryc.cn/news/211271.html

相关文章:

  • python自动化测试(六):唯品会商品搜索-练习
  • 深度强化学习用于博弈类游戏-基础测试与说明【1】
  • 通过requests库使用HTTP编写的爬虫程序
  • 550MW发电机变压器组继电保护的整定计算及仿真
  • Linux 命令|服务器相关
  • node 第十三天 express初见
  • Python selenium模块简介
  • DIY相机(一)libcamera库
  • PHP简单实现预定义钩子和自定义钩子
  • 笔记本电脑的摄像头找不到黑屏解决办法
  • 【Git】HEAD detached from xxx 问题及解决方案
  • Cannot connect to the Docker
  • 校园物业报修小程序开发笔记一
  • 用户登录前后端开发(一个简单完整的小项目)——SpringBoot与session验证(带前后端源码)全方位全流程超详细教程
  • FFmpeg5.1.3编译动态库踩坑之旅(基于Linux虚拟机)
  • 【语义分割】语义分割概念及算法介绍
  • 基于RK3568高性价比全国产EMS储能解决方案(一)概述
  • 3 Go的基础语法
  • Redis之Lua脚本讲解
  • redis archive github
  • 3台Centos7快速部署Kafka集群
  • 最小栈(C++解法)
  • Python 算法高级篇:堆排序的优化与应用
  • 视频下载软件 Downie4 mac中文介绍
  • 计算机操作系统重点概念整理-第一章 计算机系统概述【期末复习|考研复习】
  • 树莓派基金会近日发布了新版基于 Debian 的树莓派操作系统
  • Web项目如何做单元测试
  • MySQL主从复制(基于GTID--事务ID方式)
  • 3.72 Command Buffer及URP概述
  • 分布式理论和分布式锁知识点总结