docker学习笔记容器教程

文章目录

    • Docker概述
      • docker为什么出现
      • Docker历史
    • docker安装
      • 阿里云镜像加速
      • 底层原理
    • docker 常用命令
      • 帮助命令
      • 镜像命令
        • docker images
        • docker search
        • docker pull
        • docker rmi
        • docker tag
      • 容器命令
        • docker run
        • docker ps
        • exit
        • docker rm
        • docker启动/重启/停止/杀死
      • 常用其他命令
      • 部署真实环境
      • 可视化
      • 小结
    • docker 镜像详解
      • commit 镜像
    • 容器数据卷
      • 使用数据卷
      • 具名和匿名挂载
      • 初识dockerfile
      • 结论
    • dockerfile
      • docker构建过程
      • dockerfile的指令
      • 实战测试
      • 发布自己的镜像
      • 小结
    • docker 网络
      • 理解docker0
      • --link
      • 自定义网络
      • 网络连接
      • 部署redis集群
    • Springboot微服务打包docker镜像

Docker概述

docker为什么出现

docker学习笔记容器教程_第1张图片
docker学习笔记容器教程_第2张图片

Docker历史

2010年,几个搞IT的年轻人,就在美国成立了一家公司 dotCloud
做一些pass的云计算服务! LXC有关的容器技术!
他们将自己的技术(容器化技术)命名就是Docker !
Docker刚刚诞生的时候,没有引起行业的注意! dotCloud ,就活不下去!
开源
开发源代码!
2013年,Docker开源!
Docker越来越多的人发现了docker的优点!火了,Docker每个月都会更新一个版本!
2014年4月9曰,Docker1.0发布!
Docker为什么这么火?十分的轻巧!
在容器技术出来之前,我们都是使用虚拟机技术!
虚拟机:在window中装一个 Vmware ,通过这个软件我们可以虚拟出来一台或者多台电脑!笨重!
虛拟机也是属于虚拟化技术,Docker容器技术,也是一种虛拟化技术!

vm : linux centos原生镜像(一个电脑!) 隔离.雷要开启多个虚拟机!  几个G 几分钟
docker : 隔离,镜像(最核心的环境4m + jdk + mysql)十分的小巧,运行镜像就可以了!小巧几个M KB 秒级启动! 
到现在,所有开发人员都必须要会Docker !

docker学习笔记容器教程_第3张图片

docker安装

环境:centos8 内核3以上

[sherlock@localhost /]$ uname -r
4.18.0-193.14.2.el8_2.x86_64
[sherlock@localhost /]$ cat /etc/os-release
NAME="CentOS Linux"
VERSION="8 (Core)"
ID="centos"
ID_LIKE="rhel fedora"
VERSION_ID="8"
PLATFORM_ID="platform:el8"
PRETTY_NAME="CentOS Linux 8 (Core)"
ANSI_COLOR="0;31"
CPE_NAME="cpe:/o:centos:centos:8"
HOME_URL="https://www.centos.org/"
BUG_REPORT_URL="https://bugs.centos.org/"

CENTOS_MANTISBT_PROJECT="CentOS-8"
CENTOS_MANTISBT_PROJECT_VERSION="8"
REDHAT_SUPPORT_PRODUCT="centos"
REDHAT_SUPPORT_PRODUCT_VERSION="8"

远程连接:

ssh -l root 192.168.63.129

安装

#1、卸载旧版本
sudo yum remove docker \
                   docker-client \
                   docker-client-latest \
                   docker-common \
                   docker-latest \
                 	 docker-latest-logrotate \
                   docker-logrotate \
                   docker-engine
#2、需要的安装包
sudo yum install -y yum-utils

#3、设置镜像的仓库
sudo yum-config-manager \
    --add-repo \
    https://download.docker.com/linux/centos/docker-ce.repo #默认从国外
    
sudo yum-config-manager \
>     --add-repo \
>     http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
添加仓库自:http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

#4、安装docker docker-ce 社区版 docker-ee 企业版

#首先安装最新的阿里云containerd.io
sudo yum install -y https://mirrors.aliyun.com/docker-ce/linux/centos/7/x86_64/edge/Packages/containerd.io-1.2.13-3.1.el7.x86_64.rpm

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

5#、启动docker
sudo systemctl start docker

6#、查看docker 版本信息
sudo docker version

7#、运行docker hello-world
sudo docker run hello-world

8#、查看镜像文件
sudo docker images

9#、卸载docker		
#1、卸载依赖
sudo yum remove docker-ce docker-ce-cli containerd.io
#2、删除资源
sudo rm -rf /var/lib/docker 
#/var/lib/docker  默认的docker工作目录

阿里云镜像加速

sudo mkdir -p /etc/docker

sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://bcd47570.mirror.aliyuncs.com"] #阿里云镜像加速器
}
EOF

sudo systemctl daemon-reload

sudo systemctl restart docker

底层原理

docker 常用命令

帮助命令

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

帮助文档地址https://docs.docker.com/reference/

镜像命令

docker images

docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
#仓库源名称          #标签                #id                 #创建时间           #镜像大小
Name, shorthand Default Description
--all , -a Show all images (default hides intermediate images) 列出所有镜像
--digests Show digests
--filter , -f Filter output based on conditions provided
--format Pretty-print images using a Go template
--no-trunc Don’t truncate output
--quiet , -q Only show numeric IDs. 只显示出id

docker search

docker search mysql --filter=STARS=3000  #搜索出来的镜像就是STARS=3000
Name, shorthand Default Description
--automated deprecated Only show automated builds
--filter , -f Filter output based on conditions provided
--format Pretty-print search using a Go template
--limit 25 Max number of search results
--no-trunc Don’t truncate output
--stars , -s deprecated Only displays with at least x stars

docker pull

docker pull 镜像名[:tag]

[root@localhost /]# docker pull centos:centos8
centos8: Pulling from library/centos
3c72a8ed6814: Pull complete 
Digest: sha256:76d24f3ba3317fa945743bb3746fbaf3a0b752f10b10376960de01da70685fbd #签名
Status: Downloaded newer image for centos:centos8
docker.io/library/centos:centos8 #真实地址
Name, shorthand Default Description
--all-tags , -a Download all tagged images in the repository
--disable-content-trust true Skip image verification
--platform experimental (daemon)API 1.32+ Set platform if server is multi-platform capable
--quiet , -q Suppress verbose output

docker rmi

docker rmi -f 镜像id               #删除指定镜像
docker rmi -f 镜像id 镜像id 镜像id  #删除多个镜像
docker rmi -f $(docker image -aq) #删除全部镜像
Name, shorthand Default Description
--force , -f Force removal of the image
--no-prune Do not delete untagged parents

docker tag

#docker tag SOURCE_IMAGE[:TAG] TARGET_IMAGE[:TAG]

#docker tag 0e5574283393 fedora/httpd:version1.0

容器命令

docker run

有了镜像才能创建容器

docker run [可选参数] image

#参数说明
-it                使用交互式方式运行,进入容器查看内容
-d 					       后台方式运行
--name="NAME"      容器名字,用来区分容器
-p 								 指定容器的端口 -p 8080:8080   
		  -p [ip]:主机端口:容器端口(常用)
		  -p 容器端口

#测试并进入容器
[root@localhost /]# docker run -it centos /bin/bash
[root@38203e6ca97b /]# ls
bin  etc   lib	  lost+found  mnt  proc  run   srv  tmp  var
dev  home  lib64  media       opt  root  sbin  sys  usr
#exit 从容器中退回主机
[root@38203e6ca97b /]# exit
exit
[root@localhost /]# 

docker ps

列出所有运行的容器

# docker ps 命令
		 #列出当前正在创建的容器
-a   #列出当前正在运行的容器+历史运行过的容器
-n=#显示最近创建的几个容器
-q   #显示容器的编号

exit

eixt  				 #直接退出并关闭容器
Ctrl + P + Q   #不停止退出

docker rm

docker rm -f 容器id #正在运行的容器也能删除

docker启动/重启/停止/杀死

#docker start

#docker restart

#docker stop

#docker kill

常用其他命令

后台启动容器

docker学习笔记容器教程_第4张图片

查看日志

docker学习笔记容器教程_第5张图片

查看容器中进程信息

image-20200816140446324

查看镜像的元数据

docker学习笔记容器教程_第6张图片

进入当前正在运行的容器

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

#docker exec -it 容器id bashShell  #进入容器后开启一个新的终端,可以在里面操作 常用

#docker attach 容器id              #进入容器当前正在执行的终端,不会启动新的进程

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

# docker cp 容器id:容器内的文件目录 主机的目录


docker学习笔记容器教程_第7张图片

部署真实环境

安装Nginx

docker学习笔记容器教程_第8张图片

安装Tomcat

docker学习笔记容器教程_第9张图片

安装es + kebabna

docker学习笔记容器教程_第10张图片

docker学习笔记容器教程_第11张图片

可视化

Portainer

[root@localhost ~]# docker run -d -p 8088:9000 \ --restart=always -v /var/run/docker.sock:/var/run/docker.sock --privileged=true portainer/portainer

小结

docker学习笔记容器教程_第12张图片

docker 镜像详解

docker学习笔记容器教程_第13张图片

docker学习笔记容器教程_第14张图片

docker学习笔记容器教程_第15张图片

docker学习笔记容器教程_第16张图片

docker学习笔记容器教程_第17张图片

docker学习笔记容器教程_第18张图片

docker学习笔记容器教程_第19张图片

commit 镜像

docker commit 提交容器成为一个新的镜像

docker commit -m="提交的描述信息" -a="作者" 容器id 目标镜像名:[TAG]

容器数据卷

什么是容器数据卷

docker学习笔记容器教程_第20张图片

使用数据卷

方式一:直接使用命令来挂载 -v

[root@localhost home]# docker run -it -v /home/ceshi:/home centos /bin/bash

安装MySql

#docker pull mysql

[root@localhost ~]# 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 mysql
db875d3c0dadf1dcbae22943f36843b3d99bb0e9218db7557b782e2cde33b153

-d 后台运行
-p 端口映射
-v 卷挂载
-e 环境配置
--name 容器名字

具名和匿名挂载

docker学习笔记容器教程_第21张图片

初识dockerfile

docker学习笔记容器教程_第22张图片

数据卷容器

# --volumes-from 父容器 

docker学习笔记容器教程_第23张图片

结论

容器之间配置信息的连接,数据卷容器的生命周期一直持续到没有容器用为止

但是一旦你持久化了到本地,这个时候,本地的数据是不会删除的

dockerfile

docker构建过程

docker学习笔记容器教程_第24张图片

dockerfile的指令

docker学习笔记容器教程_第25张图片
docker学习笔记容器教程_第26张图片

实战测试

创建一个自己的centos

FROM centos
MAINTAINER sherlock<[email protected]>

ENV MYPATH /usr/local
WORKDIR $MYPATH

RUN yum -y install vim
RUN yum -y install net-tools

EXPOSE 80

CMD echo $MYPATH
CMD echo "------end------"
CMD /bin/bash

CMD 和 ENTRYPOINT 区别

CMD 后不能追加参数命令
#dokcer run mydockerfile -l #会报错 因为用-l 替换了原先 CMD后的 ls -a
ENTRYPOINT 后能追加参数命令
#docker run mydockerfile -l #不会报错  实则会执行这条命令 ls -al

Tomcat 镜像

docker学习笔记容器教程_第27张图片

docker学习笔记容器教程_第28张图片

发布自己的镜像

DockerHub

docker学习笔记容器教程_第29张图片

docker学习笔记容器教程_第30张图片

阿里云镜像服务

docker学习笔记容器教程_第31张图片

docker学习笔记容器教程_第32张图片

小结

docker 网络

理解docker0

docker学习笔记容器教程_第33张图片

docker学习笔记容器教程_第34张图片

docker学习笔记容器教程_第35张图片

docker学习笔记容器教程_第36张图片

#docker exec -it tomcat02 ping 172.18.0.2

docker学习笔记容器教程_第37张图片

docker学习笔记容器教程_第38张图片

–link

docker学习笔记容器教程_第39张图片

docker学习笔记容器教程_第40张图片

docker学习笔记容器教程_第41张图片

自定义网络

查看所有的docker网络

[root@localhost dockerfile]# docker network ls
NETWORK ID          NAME                DRIVER              SCOPE
332c25118f3a        bridge              bridge              local
ed0216987ae9        host                host                local
088826afc5fa        none                null                local

测试

docker学习笔记容器教程_第42张图片

docker学习笔记容器教程_第43张图片

docker学习笔记容器教程_第44张图片

网络连接

docker学习笔记容器教程_第45张图片

docker学习笔记容器教程_第46张图片

docker学习笔记容器教程_第47张图片

结论:假设要跨网络操作别人,就需要使用docker network connect 连通!

部署redis集群

image-20200817140233757

docker学习笔记容器教程_第48张图片

docker学习笔记容器教程_第49张图片

Springboot微服务打包docker镜像

1、构建springboot项目

2、打包应用

3、编写dockerfile
docker学习笔记容器教程_第50张图片

4、构建镜像

5、发布运行

你可能感兴趣的:(Docker,docker,linux,java,大数据,centos)