docker|Docker安装部署及镜像制作--从入门到实战(持续更新......)

1,部署方式 1.1,centos安装docker

## 更新yum源 yum update ##安装最新软件包,yum-utils 提供yum-config-manager功能, yum install -y yum-utils device-mapper-persistent-data lvm2 ##设置yum源 yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.reposed -i 's/download.docker.com/mirrors.aliyun.com\/docker-ce/g' /etc/yum.repos.d/docker-ce.repo ##安装 Docker yum install docker-ce docker-ce-cli containerd.io ##查看docker版本,验证是否部署成功 docker -v ##启动docker systemctl enable docker systemctl start docker

1.2,window10安装docker
安装部署参考如下官网:Docker–从入门到实战官网
https://yeasy.gitbook.io/docker_practice/image/pull
若安装过程中出现报错,从此网站中下载 wsl.msi 文件
https://czf-net.xyz/res/
2,docker基本概念 2.1,Docker 包括三个基本概念
  • 镜像(Image),就相当于是一个 root 文件系统,构建就不会被改变,分层构建。
  • 容器(Container),镜像(Image)和容器(Container)的关系,就像是面向对象程序设计中的 类 和 实例 一样,镜像是静态的定义,容器是镜像运行时的实体。容器可以被创建、启动、停止、删除、暂停等。实质就是进程,运行于属于自己的独立命名空间,自身就是一套独立的环境。容器运行以镜像为基础层,在其上创建一个当前容器的存储层用来存储容器运行读写的数据,容器存储层的生命周期和容器一样,随容器消亡而亡。容器不应该向其存储层内写入任何数据,容器存储层要保持无状态化。所有的文件写入操作,都应该使用 数据卷(Volume)、或者 绑定宿主目录,在这些位置的读写会跳过容器存储层,直接对宿主(或网络存储)发生读写,其性能和稳定性更高。
  • 仓库(Repository),集中的存储、分发镜像的服务。一个 Docker Registry 中可以包含多个 仓库(Repository);每个仓库可以包含多个 标签(Tag);每个标签对应一个镜像。<仓库名>:<标签> 的格式来指定具体是这个软件哪个版本的镜像。如果不给出标签,将以 latest 作为默认标签。
3,Docker服务相关命令
## 开机启动docker systemctl enable docker ## 启动docker systemctl start docker #重启docker服务 service docker restart systemctl restart network ## 查看docker状态 systemctl status docker ## 停止docker systemctl stop docker

4,Docker镜像相关命令 官方镜像仓库https://hub.docker.com/
## 查看docker镜像 docker images ## 查看docker所有镜像id docker images -q ## 搜索docker hub是否存在镜像 eg: redis docker search redis ## 拉取镜像 docker pull redis ## 后面不接tag版本号,则默认下载最新的latest版本 docker pull redis:5.0 ## 后面接tag版本号,则拉取指定版本 ## 删除镜像 docker rmi docker rmi ## 删除所有镜像,不要轻易使用 docker rmi `docker images -q`

5,Docker容器相关命令 5.1,创建容器一
## 查看镜像 [root@localhost local] docker images REPOSITORYTAGIMAGE IDCREATEDSIZE mysql5.79f35042c6a98About an hour ago448MB centos7eeb6ee3f44bd12 days ago204MB redislatest02c7f20544053 weeks ago105MB ## 创建容器一, ## 参数说明 # i-容器保持一直运行 # t-给容器分配终端,输入命令 # d-后台运行容器 # -it 创建交互式容器,自动进入容器,退出容器,关闭容器 # -id 创建守护式容器,需使用docker exec 进入容器,退出不会关闭容器 # name-给容器起名字 # /bin/bash相当于打开shell窗口脚本 [root@localhost local] docker run -it --name=csd centos:7 /bin/bash [root@7589d20a533a /] ls ## 退出容器 [root@7589d20a533a /] exit exit ## 查看运行的容器 [root@localhost local] docker ps CONTAINER IDIMAGECOMMANDCREATEDSTATUSPORTSNAMES ## 查看所有容器 [root@localhost local] docker ps -a CONTAINER IDIMAGECOMMANDCREATEDSTATUSPORTSNAMES 7589d20a533acentos:7"/bin/bash"11 minutes agoExited (0) 10 minutes agocsd ##

5.2,创建容器二
## 创建容器 后台运行 [root@localhost local] docker run -id --name=c2 centos:7 c1e408d83b5146210a175618feac91cde45ccbad2f01a9d5e6e7f7307169074c ## 进入容器一 [root@localhost local] docker exec -it c2 /bin/bash [root@c1e408d83b51 /] ll ## 进入容器二 docker attach 容器名称

5.3,启动,停止,删除容器
## 查看所有容器 [root@localhost local] docker ps -a CONTAINER IDIMAGECOMMANDCREATEDSTATUSPORTSNAMES c1e408d83b51centos:7"/bin/bash"21 minutes agoUp 21 minutesc2 7589d20a533acentos:7"/bin/bash"40 minutes agoExited (0) 39 minutes agocsd ## 停止容器 [root@localhost local] docker stop c2 c2 ## 启动容器 [root@localhost local] docker start c2 c2 ## 删除容器 [root@localhost local] docker rm csd csd ## 查看所有容器id [root@localhost local] docker ps -q c1e408d83b51 ## 删除所有容器 [root@localhost local] docker rm `docker ps -qa` ## 查看容器信息 [root@localhost local] docker inspect c2

6,Docker容器数据卷 数据卷 是一个可供一个或多个容器使用的特殊目录,它绕过 UFS,可以提供很多有用的特性:
  • 数据卷 可以在容器之间共享和重用
  • 对 数据卷 的修改会立马生效
  • 对 数据卷 的更新,不会影响镜像
  • 数据卷 默认会一直存在,即使容器被删除
数据卷是宿主机中的一个目录或文件。当容器目录和数据卷目录绑定之后,对方的修改会立即同步。
数据卷 是被设计用来持久化数据的,它的生命周期独立于容器,Docker 不会在容器被删除后自动删除 数据卷,并且也不存在垃圾回收这样的机制来处理没有任何容器引用的 数据卷。如果需要在删除容器的同时移除数据卷。可以在删除容器的时候使用 docker rm -v 这个命令。
挂载数据卷命令
注意事项:
1,目录必须是绝对路径
2,如果目录不存在,则会创建
3,一个容器可以挂载多个数据卷
4,多个容器可以挂载同一个数据卷,实现数据共享
方式一:
## -v 指定数据卷绝对路径所在目录,格式如<宿主机绝对路径:容器绝对路径> ## 若无当前目录,会自动创建 docker run -it --name=c1 -v /root/data:/root/data_container centos:7 /bin/bash## 容器目录 [root@26db58674ca4 ~] ll -rw-------. 1 root root 3416 Nov 132020 anaconda-ks.cfg drwxr-xr-x. 2 root root6 Sep 30 06:25 data_container ## 宿主机数据卷目录 [root@localhost ~] ll -rw-------. 1 root root 2763 Aug 18 19:55 anaconda-ks.cfg drwxr-xr-x. 2 root root6 Sep 29 23:25 data

方式二:
## 一个容器可以挂载多个数据卷, \ 可以换行 [root@localhost ~] docker run -it --name=c2 \ > -v ~/data2:/root/data2 \ > -v ~/data3:/root/data3 \ > centos:7 [root@931d6c0d19a3 /] ll [root@931d6c0d19a3 /] cd ~ [root@931d6c0d19a3 ~] ll total 4 -rw-------. 1 root root 3416 Nov 132020 anaconda-ks.cfg drwxr-xr-x. 2 root root6 Sep 30 07:14 data2 drwxr-xr-x. 2 root root6 Sep 30 07:14 data3

7,启动容器报错
docker容器启动报:WARNING: IPv4 forwarding is disabled. Networking will not work.
[root@localhost ~]# docker run -it --name=c1 -v /root/data:/root/data_container centos:7 /bin/bash WARNING: IPv4 forwarding is disabled. Networking will not work.

启动镜像,发现没有网络,而且不能ifconfig,因为没有开启转发,网桥配置完后,需要开启转发,不然容器启动后,就会没有网络,配置/etc/sysctl.conf,添加net.ipv4.ip_forward=1
配置转发
vim /etc/sysctl.conf#配置转发 net.ipv4.ip_forward=1#重启服务,让配置生效 systemctl restart network#查看是否成功,如果返回为“net.ipv4.ip_forward = 1”则表示成功sysctl net.ipv4.ip_forward

检查容器是否正常访问网络
#重启docker服务 service docker restart #查看运行过的容器 docker ps -a#启动容器 docker start c1#进入容器 docker attach c1#获取百度信息 curl www.baidu.com

8,Docker数据卷容器 docker|Docker安装部署及镜像制作--从入门到实战(持续更新......)
文章图片

8.1,配置数据卷容器
1,创建启动c3数据卷容器,使用 -v 参数设置数据卷**
docker run -it --name=c3 -v /volume centos:7 /bin/bash

【docker|Docker安装部署及镜像制作--从入门到实战(持续更新......)】2,创建启动c1,c2容器,使用 --volumes-from 参数<容器名称> 设置数据卷
docker run -it --name=c1 --volumes-from c3 centos:7 /bin/bash docker run -it --name=c2 --volumes-from c3 centos:7 /bin/bash

    推荐阅读