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 作为默认标签。
## 开机启动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数据卷容器
文章图片
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
推荐阅读
- Docker应用:容器间通信与Mariadb数据库主从复制
- Mac安装Chromedriver
- MongoDB,Wondows下免安装版|MongoDB,Wondows下免安装版 (简化版操作)
- MAC安装Mongo
- 【Hadoop踩雷】Mac下安装Hadoop3以及Java版本问题
- react|react 安装
- VueX--VUE核心插件
- python-安装sublime遇到异常
- typeScript入门基础介绍
- docker镜像探索----dive工具