2021-07-10

Docker容器学习

一、Docker的概述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

1、Docker的三个文件

在这里插入图片描述

二、Docker的安装

查看系统环境
[root@localhost ~]# uname -r
3.10.0-1127.el7.x86_64
[root@localhost ~]# cat /etc/os-release
NAME=“CentOS Linux”
VERSION=“7 (Core)”
ID=“centos”
ID_LIKE=“rhel fedora”
VERSION_ID=“7”
PRETTY_NAME=“CentOS Linux 7 (Core)”
ANSI_COLOR=“0;31”
CPE_NAME=“cpe:/o:centos:centos:7”
HOME_URL=“https://www.centos.org/”
BUG_REPORT_URL=“https://bugs.centos.org/”

CENTOS_MANTISBT_PROJECT=“CentOS-7”
CENTOS_MANTISBT_PROJECT_VERSION=“7”
REDHAT_SUPPORT_PRODUCT=“centos”
REDHAT_SUPPORT_PRODUCT_VERSION=“7”

安装文档:
在这里插入图片描述

1、卸载旧版本

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

2、需要的安装包

yum install -y yum-utils

3、设置镜像仓库

不要安装国外的,
安装阿里云的镜像
在这里插入图片描述
yum-config-manager
–add-repo
http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

4、安装Docker相关的内容

更新一下yum
yum makecache fast
docker-ce是社区版 docker-ee是企业版的

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

5、启动Docker

systemctl start docker
[root@localhost ~]# systemctl start docker
[root@localhost ~]# docker version 查看版本
Client: Docker Engine - Community
Version: 20.10.7
API version: 1.41
Go version: go1.13.15
Git commit: f0df350
Built: Wed Jun 2 11:58:10 2021r
Experimental: true

6、启动Docker的Helloworld并添加阿里云加速器

docker run hello-world
如果出现问题,既是没有添加阿里云的加速器
在这里插入图片描述
1.Docker安装完成后测试docker run hello-world出现一下问题:
异常原因 “registry-mirrors”: [“https://registry.docker-cn.com”]

添加阿里云加速器
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-‘EOF’
{
“registry-mirrors”: [“https://8y3pmd9k.mirror.aliyuncs.com”]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

docker run hello-world
在这里插入图片描述

7、查看Helloworld镜像

docker images
在这里插入图片描述

8、卸载Docker

卸载依赖:
yum remove docker-ce docker-ce-cli containerd.io
删除资源:
rm -rf /var/lib/docker
rm -rf /var/lib/containerd

三、Run执行流程和Docker原理

1、docker run hellowold执行流程

docker查找本地是否有这个镜像,如果有直接运行,没有就在dockerHub上拉去下载这个镜像
在这里插入图片描述

2、Docker底层原理

在这里插入图片描述
在这里插入图片描述

四、Docker的常用命令

1、帮助命令

docker version 查docker版本信息
docker info 查看详细信息
docker --help

2、镜像命令

docker images 查看所有镜像
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3、容器命令

在这里插入图片描述
在这里插入图片描述
进入容器后退出
[root@c81786ecb415 /]# exit
exit
[root@localhost /]#

查看正在运行的容器
docker ps
查看历史运行容器
docker ps -a
在这里插入图片描述
docker ps -aq 显示所有的容器id
[root@localhost /]# docker ps -aq
c81786ecb415
6bd16897b073
2d358b085a38
[root@localhost /]#

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

[root@localhost /]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
[root@localhost /]# docker run -it centos /bin/bash
[root@b9943e7802b4 /]# exit
exit
[root@localhost /]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
b9943e7802b4 centos “/bin/bash” 43 seconds ago Exited (0) 34 seconds ago dreamy_agnesi
[root@localhost /]# docker start b9943e7802b4
b9943e7802b4
[root@localhost /]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
b9943e7802b4 centos “/bin/bash” About a minute ago Up 5 seconds dreamy_agnesi
[root@localhost /]# docker kill b9943e7802b4
b9943e7802b4
[root@localhost /]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
[root@localhost /]#

4、后台启动容器的其他命令

在这里插入图片描述
在这里插入图片描述

5、进入当前正在运行的容器

在这里插入图片描述

6、从容器内拷贝文件到主机上

在这里插入图片描述

7、命令小结

在这里插入图片描述

五、镜像部署

1、安装Nginx

1、搜索镜像
docker search nginx
2、下载镜像
docker pull nginx
3、查看镜像
docker images
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
外网访问: 192.168.3.200
在这里插入图片描述

2、安装tomcat

在这里插入图片描述
出现404报错页面,这是因为在webapps目录下没有相应的页面,需要将webapp.dist下的文件拷贝到webapps下

[root@localhost docker]# docker exec -it tomcat01 /bin/bash 进入容器
root@8ec2b416b6cc:/usr/local/tomcat# ls
BUILDING.txt LICENSE README.md RUNNING.txt conf logs temp webapps.dist
CONTRIBUTING.md NOTICE RELEASE-NOTES bin lib native-jni-lib webapps work
root@8ec2b416b6cc:/usr/local/tomcat# cd webapps.dist/ 进入到webapps.dist中
root@8ec2b416b6cc:/usr/local/tomcat/webapps.dist# ls
ROOT docs examples host-manager manager
root@8ec2b416b6cc:/usr/local/tomcat/webapps.dist# cp -r webapps.dist/* webapps 拷贝文件
cp: cannot stat 'webapps.dist/’: No such file or directory
root@8ec2b416b6cc:/usr/local/tomcat/webapps.dist# cd …
root@8ec2b416b6cc:/usr/local/tomcat# cp -r webapps.dist/
webapps
root@8ec2b416b6cc:/usr/local/tomcat# cd webapps
root@8ec2b416b6cc:/usr/local/tomcat/webapps# ls
ROOT docs examples host-manager manager
root@8ec2b416b6cc:/usr/local/tomcat/webapps#
在这里插入图片描述

3、安装ES+Kibana

在这里插入图片描述
在这里插入图片描述
docker run -d --name elasticsearch01 -p 9200:9200 -p 9300:9300 -e “discovery.type=single-node” -e ES_JAVA_OPTS="-Xms64m -Xmx512m" elasticsearch:7.6.2

安装Kibana:
在这里插入图片描述

4、安装可视化面板管理

在这里插入图片描述
docker volume create portainer_data
docker run -d -p 8088:9000 --name portainer01 --restart always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer
在这里插入图片描述
在这里插入图片描述

六、镜像原理之联合文件系统

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

七、镜像原理之分层原理

在这里插入图片描述
在这里插入图片描述

1、提交一个自己的镜像Commit镜像

在这里插入图片描述
docker commit -a=“wxs” -m=“add webapps app” 0a0759f6496c tomcat02 修改后的文件提交成一个新的镜像

八、容器的数据卷使用

在这里插入图片描述

1、数据的双向绑定

容器的持久化和同步数据,容器间也可以数据共享
在这里插入图片描述
将容器的数据同步到主机上
在这里插入图片描述
主机上的数据同步到容器中 (数据的双向绑定)
在这里插入图片描述

2、实战测试部署Mysql

在这里插入图片描述

docker run -d -p 3306:3306 -v /home/mysql/conf:/etc/mysql/conf.d -v /home/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 --name mysql01 mysql

[root@localhost home]# docker run -d -p 3306:3306 -v /home/mysql/conf:/etc/mysql/conf.d -v /home/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 --name mysql01 mysql 启动mysql并创建数据卷
f36b9e81e93d3d5cad787d32b26d31634f922c1e9219054aa96ec6b42aecd564
[root@localhost home]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
f36b9e81e93d mysql “docker-entrypoint.s…” 7 seconds ago Up 6 seconds 0.0.0.0:3306->3306/tcp, :::3306->3306/tcp, 33060/tcp mysql01
[root@localhost home]# ls
apache-tomcat-9.0.48 apache-tomcat-9.0.48.tar.gz jdk-8u151-linux-x64.rpm mysql wxs-springboot-1.0-SNAPSHOT.jar
[root@localhost home]# cd mysql
[root@localhost mysql]# ls
conf data
[root@localhost mysql]#

停止数据库的启动时,查看数据库的数据依然存在,数据卷数据没有丢失,体现了数据卷的持久化功能

3、具名挂载和匿名挂载

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

九、初识Dockerfile

1、搭建一个自己的镜像

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2、数据卷容器,容器间数据共享

在这里插入图片描述
容器间的数据共享
dcocker03去继承docker01,实现数据的同步,数据持久化,当父容器停止运行时,元数据依然存在
在这里插入图片描述
在这里插入图片描述
多个mysql实现数据同步
在这里插入图片描述
在这里插入图片描述

十、Dockerfile

1、Dockerfile的介绍

在这里插入图片描述
在这里插入图片描述

2、Dockerfile的构建

在这里插入图片描述
dockerfile是面向开发的,当我们发布项目时,就需要搭建一个自己的镜像来跑项目
在这里插入图片描述

3、Dockerfile的指令

在这里插入图片描述

4、实战一个centos镜像

在这里插入图片描述
1、编写Dockerfile的文件
FROM centos
MAINTAINER wxs2485394879@qq.com

ENV MYPATH /usr/local
WORKDIR $MYPATH

RUN yum -y install vim
Run yum -y install net-tools 原生的centos是没有命令的

EXPOSE 80

CMD echo $MYPATH
CMD echo “----end----”
CMD /bin/bash
2、构建Dockerfile镜像

docker build -f wxs-centos -t mycentos:1.0 .
在这里插入图片描述

3、测试运行
docker run -it 镜像id
在这里插入图片描述
docker history id 查看镜像的下载过程,是怎么制作的,Dockerfile文件的执行情况
在这里插入图片描述

5、CMD和ENTRYPOINT区别

在这里插入图片描述

6、实战一个tomcat镜像

1、准备镜像文件,tomcat的压缩包、jdk
在这里插入图片描述
2、创建一个Dockerfile文件
在这里插入图片描述
FROM centos

MAINTAINER wxs2485394879@qq.com

COPY readme.txt /usr/local/readme.txt

ADD apache-tomcat-9.0.48.tar.gz /usr/local/
ADD jdk-8u161-linux-x64.tar.gz /usr/local/

ENV MYPATH /usr/local
WORKDIR $MYPATH

ENV JAVA_HOME /usr/local/jdk1.8.0_161
ENV CLASSPATH J A V A H O M E / l i b / d t . j a r : JAVA_HOME/lib/dt.jar: JAVAHOME/lib/dt.jar:JAVA_HOME/lib/tools.jar

ENV CATALINA_HOME /usr/local/apache-tomcat-9.0.48
ENV CATALINA_BASH /usr/local/apache-tomcat-9.0.48
ENV PATH P A T H : PATH: PATH:JAVA_HOME/bin: C A T A L I N A H O M E / l i b : CATALINA_HOME/lib: CATALINAHOME/lib:CATALINA_HOME/bin

EXPOSE 8080

CMD /usr/local/apache-tomcat-9.0.48/bin/startup.sh && tail -F /usr/local/apache-tomcat-9.0.48/logs/catalina.out
3、构建镜像
docker build -t mytomcat .

4、启动mytomcat
[root@localhost home]# docker run -d -p 8080:8080 --name wxstomcat01 -v /home/test:/url/local/apache-tomcat-9.0.48/webapps/test -v /home/logs:/url/local/apache-tomcat-9.0.48/logs wxstomcat
da937d260a405afb0080d94e9cfead876d511391311c22d4b54923bd734076fb
[root@localhost home]#
5、将一个项目放在主机的test目录下发布项目
在这里插入图片描述

十一、发布镜像

1、发布到DockerHub上

注册账号,命令登录账号 docker login -u 用户名
在这里插入图片描述
在这里插入图片描述

2、发布到阿里云镜像服务上

在这里插入图片描述
在这里插入图片描述

十二、Docker网络

1、Docker0

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2、容器互联–link

在这里插入图片描述

3、自定义网络

在这里插入图片描述
[root@localhost /]# docker network create --driver bridge --subnet 192.168.0.0/16 --gateway 192.168.0.1 mynet 创建一个网络
b2aa77721dc57e32bf550a8d0940b38495a3bd6d65bc849a3ef0f15bd9b8b0ba
[root@localhost /]# docker network ls
NETWORK ID NAME DRIVER SCOPE
a2854f780218 bridge bridge local
109bdf514ffb host host local
b2aa77721dc5 mynet bridge local -------
c9c42a9d0af1 none null local
[root@localhost /]#

创建了一个自己的网络

[root@localhost /]# docker network inspect mynet 查看网络详细
[
{
“Name”: “mynet”,
“Id”: “b2aa77721dc57e32bf550a8d0940b38495a3bd6d65bc849a3ef0f15bd9b8b0ba”,
“Created”: “2021-07-13T19:47:36.802866719+08:00”,
“Scope”: “local”,
“Driver”: “bridge”,
“EnableIPv6”: false,
“IPAM”: {
“Driver”: “default”,
“Options”: {},
“Config”: [
{
“Subnet”: “192.168.0.0/16”,
“Gateway”: “192.168.0.1”
}
]
},
“Internal”: false,
“Attachable”: false,
“Ingress”: false,
“ConfigFrom”: {
“Network”: “”
},
“ConfigOnly”: false,
“Containers”: {},
“Options”: {},
“Labels”: {}
}
]
[root@localhost /]# docker run -d -P --name tomcat-net-01 --net mynet tomcat
2afc7967f92a74d16e69a3adc8b8a74b7c11a7109b077ab06e9154194b08a361
[root@localhost /]# docker run -d -P --name tomcat-net-02 --net mynet tomcat
07bc549e66c7bfa614662b2956172ad22e06d4da4f653a0ce8ec77bce103689c
[root@localhost /]# docker exec -it tomcat-net-01 ping tomcat-net-02
PING tomcat-net-02 (192.168.0.3) 56(84) bytes of data.
64 bytes from tomcat-net-02.mynet (192.168.0.3): icmp_seq=1 ttl=64 time=0.193 ms
64 bytes from tomcat-net-02.mynet (192.168.0.3): icmp_seq=2 ttl=64 time=0.076 ms

功能:
自定义的网络可以将容器互联,容器通信,Docker0网络无法进行容器间的通信

在这里插入图片描述

4、网络联通,不同集群的子网不同

在这里插入图片描述

在这里插入图片描述
将某个网段的容器连接到另一个网段
docker run -d -P --net mynet --name tomcat-net-01 tomcat 开启一个网段为mynet的容器
docker run -d -P --name tomcat01 tomcat 开启一个默认的docker0网段容器
docker network connect mynet tomcat01 将自定义网络连接到其他网络
docker network inspect mynet 查看网络信息配置
docker exec -it tomcat01 ping tomcat-net-01 查看不同的网段容器是否ping通 只有tomcat01容器能连通,其他容器不能连通

十三、Redis集群部署实战

在这里插入图片描述

1、创建一个redis的网段

docker network create redis --subnet 172.38.0.0/16
2、配置6个redis的配置文件
for port in KaTeX parse error: Undefined control sequence: \ at position 13: (seq 1 6); \̲ ̲do \ mkdir -p /…{port}/conf
touch /mydata/redis/node- p o r t / c o n f / r e d i s . c o n f p o r t 6379 b i n d 0.0.0.0 c l u s t e r − e n a b l e d y e s c l u s t e r − c o n f i g − f i l e n o d e s . c o n f c l u s t e r − n o d e − t i m e o u t 5000 c l u s t e r − a n n o u n c e i p 172.38.0.1 {port}/conf/redis.conf port 6379 bind 0.0.0.0 cluster-enabled yes cluster-config-file nodes.conf cluster-node-timeout 5000 cluster-announce ip 172.38.0.1 port/conf/redis.confport6379bind0.0.0.0clusterenabledyesclusterconfigfilenodes.confclusternodetimeout5000clusterannounceip172.38.0.1{port}
cluster-announce-port 6379
cluster-announce-bus-port 16379
appendonly yes
EOF
done

2、启动redis容器

指定数据卷路径,指定自定义网络,指定redis版本 ,携带redis的配置文件启动
在这里插入图片描述
依次在启动5个redis容器
在这里插入图片描述

3、创建集群

在这里插入图片描述

4、一主一从,三个redis组成集群

在这里插入图片描述

十四、SpringBoot微服务打包Docker镜像

1、构建springboot项目
在这里插入图片描述

2、打包应用
在这里插入图片描述
3、编写dockerfile
在这里插入图片描述

4、构建镜像
将jar包cp到镜像中打包
在这里插入图片描述

5、发布运行
在这里插入图片描述
在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值