文章目录

  • *Docker入门到精通(一)*
  • 一、Docker名词解释
  • 1:镜像(Image)
  • 2:容器(Container)
  • 3:仓库(Repository)
  • 二、安装Docker
  • 1:环境准备(CentOS 7)
  • 2:开始安装(参考官网的API文档)
  • 3:阿里云镜像加速
  • 4:回顾HelloWorld流程
  • 5:Docker底层原理
  • 6:卸载Docker(卸载软件,删除目录)
  • 三、Docker的常用命令
  • 1:命令参考文档
  • 2:帮助命令
  • 3:镜像命令
  • ①docker images(查看所有本地主机上的镜像)
  • ②docker search(搜索镜像)
  • ③docker pull 镜像名[:tag](下载镜像)
  • ④docker rmi 镜像名(删除镜像)
  • 4:容器命令
  • ①docker run [可选参数] image(新建容器并启动)
  • ②docker ps(列出当前正在运行的容器)
  • ③docker rm 容器ID(删除指定容器,不能删除正在运行的容器)
  • ④启动和停止容器的操作
  • 5:常用其它命令
  • ①docker run -d 镜像名(后台启动容器)
  • ②docker logs -tf --tail 10 容器ID (查看10条日志命令)
  • ③docker top 容器ID (查看容器进程信息)
  • ④docker inspect 容器ID (查看镜像的元数据)
  • ⑤docker exec -it 容器ID bashShell (进入当前正在运行的容器)
  • ⑥docker cp 容器ID:容器内路径 目的主机路径(从容器内拷贝文件到主机上,在主机上执行)
  • 总结


Docker入门到精通(一)

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

Hykes从Docker离职 Solomon docker 从入门到实践_linux

一、Docker名词解释

1:镜像(Image)

Docker镜像就好比是一个模板,可以通过这个模板来创建容器服务,Tomcat镜像——>run——>Tomcat01容器(提供服务器),通过这个镜像可以创建多个容器(最终服务运行或者项目运行就是在容器中的)。

2:容器(Container)

Docker利用容器技术,独立运行一个或者一个组应用,通过镜像来创建的。目前就可以把这个容器理解为就是一个简易的Linux系统。

3:仓库(Repository)

仓库就是存放镜像的地方,仓库分为公有仓库和私有仓库,需要配置镜像加速(类似于Maven)。

二、安装Docker

1:环境准备(CentOS 7)

①查看系统内核(保证内核版本在3.10以上)

Hykes从Docker离职 Solomon docker 从入门到实践_容器_02


②查看Linux环境

Hykes从Docker离职 Solomon docker 从入门到实践_Docker_03

2:开始安装(参考官网的API文档)

https://docs.docker.com/get-started/overview/

Hykes从Docker离职 Solomon docker 从入门到实践_可选参数_04


Hykes从Docker离职 Solomon docker 从入门到实践_Docker_05


Hykes从Docker离职 Solomon docker 从入门到实践_linux_06


Hykes从Docker离职 Solomon docker 从入门到实践_可选参数_07


①卸载旧版本的Docker

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

Hykes从Docker离职 Solomon docker 从入门到实践_Docker_08


Hykes从Docker离职 Solomon docker 从入门到实践_Docker_09


②下载需要的仓库(在线安装)

yum install -y yum-utils

Hykes从Docker离职 Solomon docker 从入门到实践_Docker_10


Hykes从Docker离职 Solomon docker 从入门到实践_Docker_11


③设置镜像仓库

默认是从国外下载,不要使用官网提供的,非常慢。

推荐使用阿里云提供的镜像地址。

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

Hykes从Docker离职 Solomon docker 从入门到实践_容器_12


Hykes从Docker离职 Solomon docker 从入门到实践_可选参数_13


④更新yum软件包索引

yum makecache fast

Hykes从Docker离职 Solomon docker 从入门到实践_docker_14


⑤安装Docker相关组件(docker-ce代表社区版本、docker-ee代表企业版本)

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

Hykes从Docker离职 Solomon docker 从入门到实践_linux_15


Hykes从Docker离职 Solomon docker 从入门到实践_容器_16


Hykes从Docker离职 Solomon docker 从入门到实践_Docker_17


⑥启动Docker

systemctl start docker

Hykes从Docker离职 Solomon docker 从入门到实践_linux_18


⑦查看Docker版本

docker version

Hykes从Docker离职 Solomon docker 从入门到实践_Docker_19


⑧测试运行Hello World

docker run hello-world

Hykes从Docker离职 Solomon docker 从入门到实践_可选参数_20


⑨查看一下下载的hello-world镜像

docker images

Hykes从Docker离职 Solomon docker 从入门到实践_linux_21

3:阿里云镜像加速

Hykes从Docker离职 Solomon docker 从入门到实践_Docker_22


Hykes从Docker离职 Solomon docker 从入门到实践_可选参数_23


①开始配置

Hykes从Docker离职 Solomon docker 从入门到实践_linux_24


②运行四个命令

Hykes从Docker离职 Solomon docker 从入门到实践_linux_25

4:回顾HelloWorld流程

Hykes从Docker离职 Solomon docker 从入门到实践_linux_26


Hykes从Docker离职 Solomon docker 从入门到实践_可选参数_27

5:Docker底层原理

Docker是一个C/S结构的系统,Docker的守护进程运行在主机上,通过Socket从客户端访问。DockerServer接收到Docker-Client的指令,就会执行这个命令。

Hykes从Docker离职 Solomon docker 从入门到实践_可选参数_28

6:卸载Docker(卸载软件,删除目录)

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

rm -rf /var/lib/docker
rm -rf /var/lib/containerd

Hykes从Docker离职 Solomon docker 从入门到实践_docker_29

三、Docker的常用命令

1:命令参考文档

Hykes从Docker离职 Solomon docker 从入门到实践_linux_30

2:帮助命令

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

3:镜像命令

①docker images(查看所有本地主机上的镜像)

Hykes从Docker离职 Solomon docker 从入门到实践_docker_31


// 解释

★REPOSITORY:镜像的仓库源

★TAG:镜像的标签

★IMAGE ID:镜像的ID

★CREATED:镜像的创建时间

★SIZE:镜像的大小

// 可选参数

★docker images -a(列出所有镜像)

★docker images -q(只显示镜像的ID)

②docker search(搜索镜像)

Hykes从Docker离职 Solomon docker 从入门到实践_docker_32


// 可选参数

★docker search mysql --filter=STARS=3000(搜索收藏数不少于3000的Mysql镜像)

Hykes从Docker离职 Solomon docker 从入门到实践_docker_33

③docker pull 镜像名[:tag](下载镜像)

// 防止踩坑

Hykes从Docker离职 Solomon docker 从入门到实践_可选参数_34


原因:默认的DNS解析不了加速地址,先确定虚拟机能够连接外网,网络适配器选择NAT

Hykes从Docker离职 Solomon docker 从入门到实践_容器_35


Hykes从Docker离职 Solomon docker 从入门到实践_Docker_36


// 解释

★如果不写[:tag],默认下载最新版本(latest)

★从上到下分层下载(Pull complete),docker images的核心,联合文件系统

★Digest:签名信息,防伪标志

★docker.io:真实地址,即docker pull mysql等价于docker pull docker.io/library/mysql:latest

// 可选参数

★指定版本下载(Docker Hub中该版本一定是存在的):docker pull mysql:5.7

Hykes从Docker离职 Solomon docker 从入门到实践_可选参数_37


Hykes从Docker离职 Solomon docker 从入门到实践_docker_38


Hykes从Docker离职 Solomon docker 从入门到实践_linux_39

④docker rmi 镜像名(删除镜像)

// 可选参数

★docker rmi -f $(docker images -aq)(删掉全部镜像,递归删除)

★docker rmi -f 镜像ID1 镜像ID2(删除多个指定镜像:镜像ID,空格来分割)

★docker rmi -f c20987f18b13(删除指定镜像:镜像ID)

Hykes从Docker离职 Solomon docker 从入门到实践_Docker_40

4:容器命令

前提:有了镜像才可以创建容器,下载一个CentOS镜像来测试学习一下!

Hykes从Docker离职 Solomon docker 从入门到实践_Docker_41


Hykes从Docker离职 Solomon docker 从入门到实践_容器_42

①docker run [可选参数] image(新建容器并启动)

// 参数说明

--name=“Name”(容器名字,tomcat01、tomcat02用来区分容器)
-d(后台方式运行,例如Jar包)
-it(使用交互方式运行,进入容器查看内容)

-p(小写,指定容器的端口,8080:8080跟主机映射起来)
-p 主机端口:容器端口(推荐)
-p ip:主机端口:容器端口(不推荐)
-p 容器端口(不推荐)
容器端口(不推荐)

-P(大写,随机指定端口)

// 测试

★docker run -it centos /bin/bash(启动并进入容器,基础版本,很多命令都是不完善的)

Hykes从Docker离职 Solomon docker 从入门到实践_linux_43


★Ctrl+P+Q(快捷键,从容器中退回主机,容器不停止退出)

★exit(从容器中退回主机,容器停止并退出)

Hykes从Docker离职 Solomon docker 从入门到实践_docker_44

②docker ps(列出当前正在运行的容器)

Hykes从Docker离职 Solomon docker 从入门到实践_容器_45


// 参数说明

★docker ps -a(列出当前正在运行的容器,顺便带出历史运行过的容器)

Hykes从Docker离职 Solomon docker 从入门到实践_容器_46


★docker ps -n=?(显示最近创建的容器,指定个数)

Hykes从Docker离职 Solomon docker 从入门到实践_可选参数_47


★docker ps -q(只显示容器的编号)

Hykes从Docker离职 Solomon docker 从入门到实践_Docker_48

③docker rm 容器ID(删除指定容器,不能删除正在运行的容器)

// 可选参数

★docker rm -f 容器ID(可以删除正在运行的容器)

★docker rm -f $(docker ps -aq)(删掉全部容器,递归删除)

Hykes从Docker离职 Solomon docker 从入门到实践_Docker_49


★docker ps -a -q|xargs docker rm(删掉全部容器,递归删除)

④启动和停止容器的操作

// 相关命令
★docker start 容器ID(启动容器)
★docker restart 容器ID(重启容器)
★docker stop 容器ID(停止当前正在运行的容器)
★docker kill 容器ID(强制停止当前容器)

5:常用其它命令

①docker run -d 镜像名(后台启动容器)

// 常见的坑:docker ps 看不到后台启动的容器(发现centos停止了)
原因:容器使用后台运行,就必须要有一个前台进程,docker发现没有应用,就会自动停止。例如,启动Nginx,容器启动后,发现自己没有提供服务,就会立刻停止,就是没有程序了。

②docker logs -tf --tail 10 容器ID (查看10条日志命令)

★docker logs -tf 容器ID (查看全部日志命令)

Hykes从Docker离职 Solomon docker 从入门到实践_docker_50

③docker top 容器ID (查看容器进程信息)

Hykes从Docker离职 Solomon docker 从入门到实践_可选参数_51

④docker inspect 容器ID (查看镜像的元数据)

Hykes从Docker离职 Solomon docker 从入门到实践_容器_52

⑤docker exec -it 容器ID bashShell (进入当前正在运行的容器)

// 我们通常容器都是使用后台方式运行的,需要进入容器,修改一些配置

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

Hykes从Docker离职 Solomon docker 从入门到实践_Docker_53


★方式二:docker attach 容器ID(进入容器正在执行的终端,不会启动新的进程)

⑥docker cp 容器ID:容器内路径 目的主机路径(从容器内拷贝文件到主机上,在主机上执行)

// 拷贝是一个手动的过程,未来使用 -v 卷的技术,可以实现,自动同步

// 容器内创建文件

Hykes从Docker离职 Solomon docker 从入门到实践_Docker_54


// 从容器内拷贝文件到主机上(在主机上执行)

Hykes从Docker离职 Solomon docker 从入门到实践_docker_55


总结

每天一个提升小技巧!!!