signed

QiShunwang

“诚信为本、客户至上”

docker初级入门

2020/8/20 12:01:11   来源:

1,Docker简介

Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从 Apache2.0 协议开源。

Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。

容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app),更重要的是容器性能开销极低

2,Docker的安装

1,首先使用yum把它的包更新到最新

yum update

2,直接跟官方文档步骤来安装

https://docs.docker.com/engine/install/centos/

3,最后查看docker版本,验证是否验证成功

docker -v

3,配置阿里云的镜像加速器

配置国内镜像加速器提高下载速度
推荐使用阿里云
进入阿里云官网登录以后搜索容器镜像服务
找到最下面的那个镜像加速器
然后就选择你的操作系统
下面的一些命令就是让你创建它的文件夹和配置它的加速器地址就行了

4,docker基本命令

启动:systemctl start docker(因为是centOS7所以用systemctl)
状态:systemctl status docker
停止:systemctl stop docker
重启:systemctl restart docker
开机启动:systemctl enable dockers

帮助命令

docker (关键字) --help #(帮助命令)

https://docs.docker.com/engine/reference/commandline/cli/

5,本地镜像

查看镜像

docker images

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-GGVLI2b8-1597895923746)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20200730153612492.png)]REPOSITORY 仓库名称(镜像的仓库源)

TAG 版本号(镜像的标签)

IMAGE ID 你的唯一ID (镜像的id)

CREATED 创建时间 (镜像的创建时间)

SIZE 大小(镜像的大小)

docker images (-a可以查看所有的详细信息)(-q只显示id)(-aq就是显示所有的镜像)

搜索镜像

搜索某一个软件 比如mysql
docker search mysql
DESCRIPTION就是描述这个软件 OFFICIAL那一栏显示OK的话就是代表是官方的

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ZlTGLZhg-1597895923749)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20200730164241298.png)]

docker search mysql --filter=STARS=3000 (这条命令意思就是搜索出来的镜像STARS是大于3000的)

6,下载删除镜像

下载镜像

docker pull redis 如果不写版本号就是latest(默认最新版)

如果要下载某一个版本的话就是docker pull redis:x.x(要下载某一个指定版本的话先去docker hub里面看有没有)

删除镜像

docker rmi(remove images删除镜像的意思) IMAGE ID 也可以ID改成redis:latest(版本号也可以)

docker rmi -f 容器id # 删除指定的容器 -f是强制删除

docker rmi -f 容器id 容器id 容器id # 通过空格删除多个容器

docker rmi -f $(docker images -aq) # 删除全部的容器

7,启动关闭容器

启动容器

docker run -d(-d后台运行) --name nginx01(这个是取一个容器名字) -p(暴露端口映射) 68:80 nginx(容器名)
docker run -it -p 8081:8080 tomcat
docker start 容器ID(这种方式是之前启动过容器然后又关闭了)

docker执行run的时候执行了哪些操作?

首先开始执行,然后docker会在本地寻找镜像,判断本地是否有这个镜像,有的话就是直接运行这个镜像,没有的话就回去docker hub上下载。再看docker hub上是否可以找到,如果找不到,就会返回错误,找不到镜像。找到的话就直接下载这个镜像到本地运行!

以上就是docker run的运行流程图!

查看容器

docker ps 查看启动的容器

docker inspect 容器ID 查看容器的详细信息

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-10IZIYad-1597895923751)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20200527114652998.png)]

停止容器

docker stop (容器名字) or 容器ID
docker kill (容器名字) or 容器ID #(强制关闭容器)

docker run 镜像id 新建容器并启动

docker ps 列出所有运行的容器 docker container list

docker rm 容器id 删除指定容器

docker start 容器id #启动容器
docker restart 容器id #重启容器
docker stop 容器id #停止当前正在运行的容器

8,进入容器

docker exec -it (容器名字or ID) /bin/bash 以命令的方式
docker attach 容器ID 进入正在运行的容器ID

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-TEMf5TxV-1597895923753)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20200527114920049.png)]

9,镜像

镜像是一种轻量级,可执行的独立软件包,用来打包软件运行环境和基于运行环境开发的软件,它包含运行某个软件所需的所有内容,包括代码,运行时,库,环境变量和配置文件!

得到镜像的方式:
  • 从远程仓库下载
  • 朋友拷贝给你
  • 自己制作一个镜像DockerFile

分层理解:

对于一个精简的OS没有那么多内核,只需要包含最基本的命令,工具和程序就可以了,bootfs相当于装系统中的引导,每次启动都需要这个东西,底层还是使用主机的内核。

所以虚拟机是分钟级别,容器是秒级!

docker pull 文件 的时候是分层下载的,好处就是有些应用的层是相同的,就可以直接拿来复用!

10,发布,提交镜像

docker commit -a="(名字)" -m="(描述信息)" 容器ID tomcat:(版本号)
docker commit -a=“wentao”(-a表示是谁提交的) -m=“add tomcat webapps application”(-m提交一些描述信息) fbec3eedac7e tomcat1:1.0

11,容器卷

容器卷挂载就是可以将数据持久化保存到硬盘或者虚拟机里面

docker run -it -v /home(“虚拟机随意目录”)😕(“容器目录名字”) centos(“容器名字”) /bin/bash(命令行的方式)

MySQL容器卷数据持久化

docker run -d -p 3333:3306 (-d后台运行 -p端口映射 -P(大P随机暴露端口) 暴露3333端口来访问)
-v /home/mysql/conf:/etc/mysql/conf.d (卷挂载需要的关键字)
-v /home/mysql/data:/var/lib/mysql
-e MYSQL_ROOT_PASSWORD=123456 (-e 环境配置 然后给数据库设置一个密码)
–name mysql01 mysql (–name 容器的名字)

将容器删除,挂载到本地的数据卷不会丢失,所以实现了容器数据持久化的功能

12,容器卷知识

所有的docker容器内的卷,没有指定目录的情况下都是在/var/lib/docker/volumes/xxx/_data
区分是具名挂载还是匿名挂载,一般是具名挂载用的多
-v 容器内路径 #匿名挂载
-v 卷名:容器内路径 #具名挂载
-v /宿主机路径:容器内路径 #指定路径挂载!
ro readonly #只读

12,容器卷知识

所有的docker容器内的卷,没有指定目录的情况下都是在/var/lib/docker/volumes/xxx/_data
区分是具名挂载还是匿名挂载,一般是具名挂载用的多
-v 容器内路径 #匿名挂载
-v 卷名:容器内路径 #具名挂载
-v /宿主机路径:容器内路径 #指定路径挂载!
ro readonly #只读
rw readwrite #可读可写