Docker入门和实战

Docker入门和实战

一、     docker概述

1、docker是go语言开发的;

2、docker的思想就如同它的logo一样,docker就是大鲸鱼,而每个镜像container就是对应的集装箱。Docker的核心思想就是隔离。通过隔离机制,既可以保障每个集装箱的东西是互不影响的,也可以将服务器的资源压榨到最大程度。

3、docker的官方文档

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

docker hub:

https://hub.docker.com/

4、docker的出现改变了什么?

最主要的是镜像

5、docker与VM的区别

Docker没有了VM OS,VM OS 去哪里了?没有操作系统怎么运行,它借用的是主机的操作系统。Docker有了小巧的能力。

①   VM虚拟机出完整的操作系统,而docker直接运行在宿主机的内存上,没有自己的内核和虚拟硬件,所以更加小巧。

②  VM是操作系统级别的虚拟化,docker是内核级别的虚拟化

③  VM比docker更重,更消耗资源,启动速度远慢于docker

④  Docker可实现快速的运维部署

⑤  Docker 更便捷的升级、扩容和缩容

⑥  Docker 可以高效的利用物理机的硬件资源

二、Docker安装

1、 卸载已经安装的docker

$sudo yum remove docker \

                  docker-client \

                  docker-client-latest \

                  docker-common \

                  docker-latest \

                  docker-latest-logrotate \

                  docker-logrotate \

                  docker-engine

2、安装DockerEngines

Set up the repository:

$ sudo yum install -y yum-utils
$ sudo yum-config-manager \
    --add-repo \
https://download.docker.com/linux/centos/docker-ce.repo

Install Docker Engine:

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

3、 开启docker

sudo –systemctl start docker

4、验证docker是否安装成功

sudo docker run hello-word

三、docker 命令

1、docker启动相关指令

1) docker images 查看所有的镜像

2) 配置国内的镜像,加快下载速度。

sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{"registry-mirrors":
["https://aa25jngun.mirror.aliyuncs.com"]
}EOF

sudo systemctl daemon-reload(重新加载docker)

sudo systemctl restart docker(重启docker)

3)看一下ctl

cd etc/docker

cat daemon.json

2、docker 基础命令

1)查看docker 的版本docker version

 

2)查看docker的信息

3)docker 帮助命令 docker +命令+--help

docker images –help

docker images –aq 只显示image ids 如果批量删除镜像可以用到这个命令。

4)查看运行中的容器

docker ps

5)查看容器的top信息

docker top + 容器id 容器id可以通过docker ps 查询运行中的container id

6)查询元数据信息

docker inspect + 容器id

7) 进入容器

有两种方法进入容器,但是他们的进入方式是不一样的。

docker run –it centos bin/bash 已经进入镜像的container的镜像里了。按住 ctrl+qp退出

第一种方式:attach (最常用)

docker attach +容器id

第二种方式:exec

docker exec -it e22af675bae3 /bin/bash

attach进入后,退出,再次进入能保持我之前的状态。而exec不能保持之前的状态。

8)文件copy

① 从宿主机copy到容器docker cp SRC_PATH [容器id]:DEST_PATH

② 从容器copy到宿主机 docker cp[容器id] SRC_PATH DEST_PATH

创建一个文件 touch a.text

利用命令将a.text copy到容器

docker cp cd home/muse/a.text e22af675bae3:home

查看一下有没有copy 成功。docker attatch e22af675bae3进入容器 ls 看到已经有了文件

在容器里建立b.text 跳出容器

docker cp e22af675bae3:home  cd home/muse/b.text

9)查看容器状态

docker stats

启动ES

docker run –d –name es –p 9200:9200  –p 9300:9300

 

具体看docker hub

-d表示后台执行 –name 是指定名称 第一个–p是内部端口,第二个–p是外部端口。

查看docker的运行状态

3、镜像命令

1)列出本机所有的镜像

docker images

2)搜索镜像(可以在docker hub上搜索)

docker search rabbitMQ

docker search rabbitMq –f=stars=20

star>20的

3)下载最新镜像

docker pull rabbitMQ

4) 下载最新镜像

docker pull rabbitMQ3.8.11

5)删除镜像

docker rmi –f [image id]

docker rmi –f [image id] [image id] [image id] [image id]

docker rmi –f $(docker images aq)

加上-f表示强制删除

4、容器命令

1)运行容器

docker run –it centos bin bash

以交互的方式进入

docker run -d --name nginx3 -p 1113:80 nginx

docker ps –a 显示所有容器,不加 -a 默认是运行中的容器。

2)退出容器

CTRL+P+Q 退出容器,但并不关闭容器

exit CTRL+D 退出容器,关闭容器

3) 删除容器

① 删除1个容器

docker rm –f 容器id 强制删除一个up状态的容器

docker rm 容器id   删除一个非up的容器

② 删除多个状态的容器

docker rm 容器id 容器id

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

4)停止、启动和重启容器

①启动 docker start 容器id

②重启 docker restart 容器id

③停止 docker stop 容器id

5、 Kill掉容器

docker kill 容器id

四、 docker镜像原理

1、什么是镜像

镜像是一种轻量级、可执行的软件包,包含代码、运行时、环境变量和配置文件。所有应用直接打包docker镜像就可以直接跑起来。

获取镜像的方式:

①  从远程下载

②通过传输copy方式获得

③自己通过dockerfile获得

2、镜像的拉取

我们下载的时候看着一层层下载,这就是联合文件系统—unionFS。

比如下载mysql,之前下载过其它版本的mysql,某些layer已经下载就可以复用,不用再次下载。

联合文件系统是一种分层、轻量级、高性能的文件系统。它支持对文件系统的修改作为一次提交来一层层的叠加。

联合文件系统是docker的基础。

 

3、提交镜像

提交容器成为一个新的副本。

五、 容器数据卷

1、什么是容器数据卷

Docker 是将应用和环境进行了打包,那么如果删掉容器的话,数据也同步被删除,如果我们有数据持久化的需求,或者数据之间共享的需求,那么就用到了容器数据卷。

2、执行挂载:(把本机路径home/muse/text,挂在centes容器的bin/bash目录下)

具体命令:docker run it –v home/muse/text: /home centos /bin/bash

#查看挂载内容:

docker inspect 容器id

  

3、具名挂载和匿名挂载

1)匿名挂载

通过 –v指定容器内路径

docker run –d –p  --name nginx1 –v:/etc/nginx nginx

2)具名挂载

通过 –v 卷名:容器内路径,指定具名挂载

docker run –d –p --name nginx1 –v nginx2:/etc/nginx nginx

4、挂载常用的相关命令

1)查看挂载列表

docker volume ls

2)查看挂载信息

docker volume inspect [volume]

5、数据卷容器

我们发现,删除了museCentOS03之后,museCentOS01的目录下任然有a.txt文件,这表明了museCentOS01- museCentOS03这三个容器的文件a.txt是相互同步复制备份的。并不是共享的某个目录。

6、编写一个简单的dockerFile

1)在home/muse下构造dockerFiles文件和dockerFile01文件

2)编写dockerFile(命令大写)

FROM centos

Volume[“muse01”,”muse02”]

cmd echo “…finish…..”

cmd /bin/bash

3)构造镜像

docker bulid –f /home/muse/dockerfiles/dockerfile01 -t muse/centos:1.0 .

4)启动镜像

docker run -it eb78333356a6 /bin/bash

posted @ 2021-06-01 10:28  majingyun  阅读(137)  评论(0编辑  收藏  举报