docker的学习与安装

一、Docker 的安装

(一)、安装过程

官网:https://docs.docker.com/engine/install/centos/

1、准备工作

yum install -y yum-utils \
  device-mapper-persistent-data \
  lvm2
  //安装yum
yum-config-manager \
    --add-repo \
    http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
    //配置阿里云仓库
yum -y install gcc
yum -y install gcc-c++

yum install docker-ce docker-ce-cli containerd.io
//安装docker
3、systemctl daemon-reload
4、systemctl restart docker
docker --version  //查看docker是否安装成功
1、vim /etc/docker/daemon.json
2、{
"registry-mirrors":["https://ma62fx9r.mirror.aliyuncs.com"]
}
//虚拟机开机,后台启动docker
systemctl enable docker
//查看配置信息是否更改成功
docker info

(二)、基础指令

1、查看镜像

docker images 

docker images -p  //罗列镜像

docker images -pa  //查看所有id

2、镜像说明:images

docker images --digests  //显示摘要信息
docker images --no-trunc   //显示完整的镜像信息

3、搜索镜像:search

docker search 镜像名 -s    //列出收藏数。

4、下载镜像:pull

docker pull 镜像名   //默认最新版本
docker pull 镜像名:3.2  //指定版本号

5、删除镜像:rmi

docker rmi -f 镜像id  //删除指定在后面加版本号
docker rmi -f 镜像id 镜像id  //多个删除
docker rmi -f 镜像id  //删除指定在后面加版本号
docker rmi -f $(docker images -qa)  //删除所有

6、跑镜像容器:run

docker run it 镜像id   //把镜像加载到docker容器里面
docker ps //查看启动的容器进程
docker run -p 9400:9400 -d middleground/middleground-gateway   //后台运行暴露端口

可选参数:

--name :位容器指定一个名称

-d:后台运行容器
-v:表示把本地文件目录挂载到容器里面
-i:以交互模式运行容器,通常与-t同时使用
-t:为容器重新分配一个伪输入终端,
-p:随机端口映射
	格式:
	ip:hostPort:containerPort
	ip::containerPort
	hostPort:containerPort
	containerPort

例如:

docker run -it --name mycentos0115 centos

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5xRVlBvy-1633917489322)(C:\Users\211\AppData\Roaming\Typora\typora-user-images\image-20210727142343585.png)]

7、进程查询:ps

docker ps 
	参数:
	-a:列出当前所有正在运行的容器
	-l:显示最近创建的容器
	-n:显示最近n个创建的容器
	-q:静默模式,只显示容器编号
	--no-trunc:不截断输出

8、退出容器:exit

exit //退出当前容器,关闭容器
Ctrl+p+q  //退出当前容器,容器不关

9、重启容器:start

docker start 容器名  //注意不是镜像名称。
docker restart 容器名  //重启容器
9.1查看容器大小
du -sh *  //查看所有
du -sh <容器id>  //查看指定容器
docker system df -v //查看容器大小

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-bLQUgLLN-1633917489324)(C:\Users\211\AppData\Roaming\Typora\typora-user-images\image-20210727143335794.png)]

10、停止容器:stop

docker stop 容器id/容器名  //
docker kill 容器名/容器id  //强制关闭
docker stop $(docker ps -aq)  //停止所有容器

11、删除容器:rm

docker rm  //删除已关闭的
docker rmf  //强制删除未关闭
docker rm -f$(docker ps -a -q)  //删除多个
docker ps -a -q | xargs docker rm  //删除多个

12、日志:logs

docker logs -f -t --tail 容器id  //-t时间,-f跟随最新的日志打印,tail 数字显示最后多少条

1、top
docker top 容器名称  //查看容器内部的进程
2、inspect
docker inspect 容器名  //查看容器内部细节

13、进入容器:attach

1、docker exec -it 容器id    //bashShell   //直接进入容器启动命令红缎,不会启动新进程。
2、docker attach 容器id  //实在容器中打开新的终端,并且可以启动新的进程
3、docker cp 容器id:///文件名  /目标文件夹///

14、提交副本镜像:commit

docker commit  //提交容器副本使之成为一个新的镜像
例如:docker commit -a="zzyy" -m="del tomcat doc" 镜像id 新镜像名称:1.2
解释:
-a:作者
-m:标注信息
镜像id:正在运行的镜像容器
新镜像名:提交自己的镜像名字。版本号

(三)容器数据卷

1、数据卷:VOLUME

作用:宿主机与容器的数据共享,数据持久化,数据完全同步

docker run -it -v /宿主机绝对路径:/容器内目录  镜像名
例如:docker run -it -v /myDataVolume:/dataVolumeContainer centos

权限设置:

docker run -it -v /myDataVolume:/dataVolumeContainer:ro centos   //ro只允许容器读,不允许写操作。

2、DockerFile

a.关系解读:
JAVA EE hello.java------>java.class
Docker images--------->DockerFile(镜像模板的描述)
b.DockerFile与数据卷

步骤:编写dockerfile文件----->docker build------->run

FROM centos
VOLUME ["/dataVolumeContainer1","/dataVolumeContainer2"]
CMD echo "finished,-------success1"
CMD /bin/bash

build DckerFile

docker build -f /mydocker/dockerfile2 -t zzyy/centos .

-f:在当前目录下build可以不加。

当运行镜像的时候,会默认赋值给宿主机。

c.注意报错:

Docker 挂载主机目录Docker访问出现cannot open directory .:Permission denied

解决办法:在挂载目录后多加一个–privileged=true参数即可

docker run -it -v /myDateVolume:/dataVolumeContainer --privileged=true 镜像名
d.数据卷数据传递共享-容器

概念:容器与容器的数据交互。

命令:

docker run -it --name dc01 zzyy/centos   //--name指定名称
touch de01_add.txt  //添加一个文件
docker run -it --name dc02 --volumes-from dc01 zzyy/centos 
touch de02_add.txt
docker run -it --name dc03 --volumes-from dc01 zzyy/centos 
touch de03_add.txt

作用:子夫都会同时共享。删除dec01后也会共享。

(四)保留关键字

FROM
FROM		  //基于那个镜像
MAINTAINER
MAINTAINER		//镜像的维护者姓名邮箱地址
RUN
RUN				//容器构件时需要运行的命令,构建镜像的过程中进行额外命令
EXPOSE
EXPOSE				//暴露出服务端口号,最外层。
WORKDIR
WORKDIR		//指定容器创建后,终端默认登录的进来工作目录,一个落脚点.
WORKDIR $my-path
ENV
ENV				//用来在构建镜像过程中设置环境变量
ADD
ADD				//拷贝加解压
COPY
COPY				//直接拷贝
例如:
	copy["src","dest"]
	copy src dest    //src源,dest目的

VOLUME
VOLUME				//数据容器卷,保存数据和持久化
CMD
CMD				//指定容器启动时,需要执行的命令
	dockerfile中可以有多个CMD指令,但只有最后一个生效,CMD会被docker run 之后的参	数替换或者覆盖。
	shell
	exec
ENTRYPOINT
ENTRYPOINT				//指定一个容器启动时要运行的命令
	ENTRYPOINT的目的和CMD一样,都是在指定容器启动程序及参数,追加
ONBUID
ONBUID				//当构建一个被继承的Dockerfile时运行命令,父镜像在被子镜像继承						后父镜像的onbuild被触发。

其他

docker rm -f $(docker ps -q)	//级联删除
							docker ps:查询当前正在运行的容器
							-q:查询容器id

(五)实例

1、步骤
(1)编写DockerFile
FROM centos						//构建镜像的基础镜像
ENV mypath /tem					//定义一个变量
WORKDIR $mypath					//指定默认进入系统后的落脚点

RUN yum -y install vim			//安装vim的功能
RUN yum -y install net-tools	//安装功能
EXPOSE 80						//暴露端口
CMD /bin/bash					//命令行执行
(2)构建:build
docker build -t 新镜像名称:TAG.
				-t:标识为客户端
				:TAG:表示标签
				.:表示当前路径
docker build -f /mydocker/DockerFile2 -t mycentos:1.3 .
(3)运行:run
docker run -it mycentos:1.3
(4)列出镜像变更历史:history
docker images mycentos:1.3
docker history fa24446daa76

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-eAIFneZ9-1633917489326)(C:\Users\211\AppData\Roaming\Typora\typora-user-images\image-20210728134325924.png)]

实现ip的查询

(1)编写DockerFile

FROM centos
RUN yum install -y curl
CMD ["curl","-s","http://ip.cn"]

(2)构建

docker build -f /mydocker/dockerfile3 -t myip .   //-f:加路径

(3)运行

docker run 镜像ip

二、tomcat集成示例

步骤

1、创建文件夹

mkdir -p /zzyyuse/mydockerfile/tomcat9

(1)编写DockerFile

FROM centos
MAINTAINER tz<1004793718@qq.com>
#把宿主机当前上下文的c.txt拷贝到容器/usr/local/路径下
COPY c.txt /usr/local/cincontainer.txt
#把JAVA与tomcat添加到容器当中去
ADD jdk-8u172-linux-x64.tar.gz /usr/local/
ADD apache-tomcat-9.0.50.tar.gz /usr/local/

#安装vim编辑器
RUN yum -y install vim
#设置工作访问时候的WORKDIR路径,登录落脚点
ENV MYPATH /usr/local
WORKDIR $MYPATH

#配置java与tomcat环境
ENV JAVA_HOME /usr/local/jdk1.8.0_172
ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
ENV CATALINA_HOME /usr/local/apche-tomcat-9.0.50
ENV CARALANA_BASE /usr/local/apache-tomcat-9.0.50
ENV PATH $PATH:$JAVA_HOME/bin:$CATALINA_HOME/lib:$CATALINA/bin

#容器监听的端口
EXPOSE 8080
#ENTRYPOINT ["/usr/local/apache-tomcat-9.0.50/bin/startup.sh"]
#CMD["/usr/local/apache-tomcat-9.0.50/bin/catalina.sh","run"]
#启动时运行tomcat
CMD /usr/local/apache-tomcat-9.0.50/bin/startup.sh && tail -F /usr/local/apache-tomcat-9.0.50/bin/logs/catalina.out

(2)构建镜像

docker build -f /tz/mydockerfile/tomcat9/DockerFile -t tztomcat9 . //不在当前目录,需要加路径。
docker build -t tztomcat9 .  //当前目录能识别的情况下。

(3)运行:

docker run -d -p 9080:8080 --name myt9 -v /tz/mydockerfile/tomcat9/test/:/usr/local/apache-tomcat-9.0.5/webapps/test -v /tz/mydockerfile/tomcat9/tomcatlogs/:/usr/local/apache-tomcat-9.0.5/logs --privileged=true zzyytomcat9
docker run -d -p 9080:8080 --name centos_tomcat -v /opt/centos_tomcat/test/:/opt/apache-tomcat-9.0.50/webapps/test -v /centos_tomcat/tomcatlogs/:/opt/apache-tomcat-9.0.50/logs --privileged=true centos_tomcat

2、本机实例:

(1)环境准备

a.安装docker

b.安装centos

(2)docker

a.导入包

b.编写Dockerfile文件

c.build镜像

d.运行镜像成为一个容器

三、其他命令

1、加载下载的镜像

docker  load -i busybox.tar.gz
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值