docker

docker

安装docker
#1:卸载旧的docker
	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
  
  yum-config-manager \
    --add-repo \
    https://download.docker.com/linux/centos/docker-ce.repo    //国外得
    修改为阿里云镜像仓库
    yum-config-manager \
    --add-repo \
    https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo //阿里云
#3:更新yum索引
   yum makecache fast
#4:安装docker引擎
   yum install docker-ce docker-ce-cli containerd.io docker-compose-plugin
#5:启动 Docker
	systemctl start docker
#6:hello-world 通过运行映像来验证 Docker 引擎是否已正确安装
	docker run hello-world
#7 查看docker版本信息
	docker version	
#8 查看docker系统信息
	docker info
#9 卸载 Docker Engine、CLI、Containerd 和 Docker Compose 软件包:
	yum remove docker-ce docker-ce-cli containerd.io docker-compose-plugin
	主机上的映像、容器、卷或自定义配置文件不会自动删除。要删除所有映像、容器和卷:
	sudo rm -rf /var/lib/docker
 	sudo rm -rf /var/lib/containerd	              

基本命令

镜像基本命令
#查看安装得镜像
	docker images
#搜索镜像
	docker search 镜像名
#安装镜像
	docker pull mysql [版本] //不带版本号默认最新
#卸载镜像
	docker rmi mysql
#查看镜像的构造过程
	docker history					
容器基本命令
#运行并启动容器
	docker run [可选参数] image
	#参数说明
	--name="名字"           指定容器名字
	-d                     后台方式运行 //#docker容器后台运行,必须要有一个前台的进程,否则会自动停止#编写shell脚本循环行得centos容器保持运行状态 docker run -d centos /bin/sh -c "while true;do echo hi;sleep 5;done"
	-it                    使用交互方式运行,进入容器查看内容
	-p                     指定容器的端口
	(
	-p ip:主机端口:容器端口  配置主机端口映射到容器端口
	-p 主机端口:容器端口 //docker run -p8080:3306
	-p 容器端口
	)
	-e 环境配置
	-P                     随机指定端口(大写的P)
#退出容器
	exit //停止并退出
	ctrl+p+q //后台运行
#查看运行容器
	docker ps [可选参数]
	#参数说明
	-a    	    全部-n=? # 显示最近创建的n个容器
	-q   # 只显示容器的编号
#删除容器
	docker rm 容器ID //删除容器
	docker rm -f $(docker ps -aq) //删除所有容器
#启动、停止容器
	docker start 容器ID     //启动容器
	docker stop  容器ID	   //停止容器
	docker restart 容器ID  //重启容器
	docker kill 容器ID	  //强制关闭容器
容器其他命令
#查看日志
dockder logs [可选参数] 容器ID 
#查看进程
docker top 容器ID
#查看元数据
docker inspect 容器ID
#进入正在运行的容器
docker exec -it 容器ID /bin/bash 
docker attach  容器ID
//docker exec 重新开一个终端 可以在里面操作; docker attach 打开正在运行的终端 不会开启新的进程
#复制容器的内容到主机
docker cp 容器ID:路径 主机路径
提交镜像(容器->镜像)
docker commit -a="制作人" -m="内容"  容器ID 自定义镜像名:版本号 
容器数据卷
挂载
docker run -it -v 宿主机目录:容器目录 
//俩者为双向绑定,一方改变另一个也改变

#实战:mysql同步数据
docker run -d --name mysqls -v /www/wwwroot/mysql/conf:/etc/mysql/conf.d -v /www/wwwroot/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD='密码' mysql
//参数说明
-v (卷挂载)宿主目录:容器目录
-e 环境配置
-name 容器名
-d 后台运行
匿名挂载,居名挂载
docker run -v 容器路径  //匿名挂载
docker run -v 自定义名称:容器路径  //居名挂载
docker run -v 自定义名称:容器路径:rw  //居名挂载(读写)
docker run -v 自定义名称:容器路径:ro  //居名挂载(只读)

docker volume ls //查看所有卷
数据卷容器
--volumes-form 主容器
//数据为双向复制,没有容器存在后数据才会消失
//示例mysql
docker run -d -p7001:3306 --name mysql01 -v /var/lib/mysql/-v /etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=111111111 mysql

docker run -d -p7002:3306 --name mysql02  -e MYSQL_ROOT_PASSWORD=111111111 --volumes-from mysql01 mysql

DockerFile

初识dockerfile

//1,新建命令文件dockerfile1
	//命令大写
FROM Centos

VOLUMES ["volume01","volume02"]

CMD ".....end....."

CMD /bin/bash
//2,制作镜像
	//-f 命令文件
	//-r 镜像名称
docker build -f 宿主路径/dockerfile1 -t 自定义镜像名称 .
//3.生成自定义镜像
基本命令
FORM  //基础镜像
MAINTAINER //作者
RUN //运行命令
ADD //添加文件,自动解压压缩包
WORKDIR //工作目录
VOLUME //目录挂载
EXPOSE //开放端口
CMD //指定容器启动时运行的命令,可被替代,最后一个生效
ENTRYPOINT //指定容器启动时运行的命令,追加命令
ONBUILD //当构建一个被继承的DockerFile 会运行
COPY // 类似于ADD
ENV //构建的时候设置环境变量
示例
#centos示例
FROM centos:7 //基础镜像
  
MAINTAINER duzhili<85096033@qq.com> //作者

ENV MYPATH /usr/local //配置目录
WORKDIR $MYPATH //配置工作目录

RUN yum -y install vim //执行安装vim命令
EXPOSE 80  //端口
CMD echo ".....end...... "

CMD /bin/bash //默认进入的命令行

#php项目示例
1)新建Dockerfile
FROM php

MAINTAINER duzhili<85096033@qq.com>

ADD index.php /var/www

EXPOSE 8080

WORKDIR /var/www

ENTRYPOINT ["php","-S","0.0.0.0:8080"]
2)构建镜像
docker build -t myphp .
3)生成容器
docker run -d -p 8080:8080 --name php1 myphp
4) 访问
curl localhost:7002 
//输出hello wold

发布镜像

dockerHub
1,dockerhub注册账号
2,docker login //登录
3,docker push //发布镜像
阿里云镜像服务

在这里插入图片描述

在这里插入图片描述

Docker 网络

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 00:16:3e:36:c2:51 brd ff:ff:ff:ff:ff:ff
    inet 172.16.141.197/20 brd 172.16.143.255 scope global dynamic noprefixroute eth0
       valid_lft 305779831sec preferred_lft 305779831sec
    inet6 fe80::216:3eff:fe36:c251/64 scope link 
       valid_lft forever preferred_lft forever
3: docker0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default 
    link/ether 02:42:48:24:85:2e brd ff:ff:ff:ff:ff:ff
    inet 172.17.0.1/16 brd 172.17.255.255 scope global docker0
       valid_lft forever preferred_lft forever
    inet6 fe80::42:48ff:fe24:852e/64 scope link 
       valid_lft forever preferred_lft forever
268: veth4f25563@if267: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master docker0 state UP group default 
    link/ether fe:fd:a1:b6:f8:8e brd ff:ff:ff:ff:ff:ff link-netnsid 1
    inet6 fe80::fcfd:a1ff:feb6:f88e/64 scope link 
       valid_lft forever preferred_lft forever       
[root@iZ2zeh3bjq6rgnw0phucy7Z ~]# docker exec -it  mycentos ip addr //容器得IP地址
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
267: eth0@if268: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default 
    link/ether 02:42:ac:11:00:03 brd ff:ff:ff:ff:ff:ff link-netnsid 0
    inet 172.17.0.3/16 brd 172.17.255.255 scope global eth0
       valid_lft forever preferred_lft forever

267: eth0@if268: 268(容器端): veth4f25563@if267(docker0)是对应得,通过veth 进行交互

网络示意图

在这里插入图片描述

容器互联–link (不建议使用)
docker run -it  --link 链接得容器命  容器名
自定义网络
docker network  //查看网卡命令

docker network ls  // 查看所有网卡

docker network inspect  网络ID  //查看网卡详细信息

docker network create --driver bridge --subnet 192.168.0.0/16 --gateway 192.168.0.1 网卡名称 //新建网卡
//--driver 管理网络的驱动程序(默认为bridge)
//--subnet 网段
//--gateway 子网
示例
1,新建容器
//docker run -d --net 网卡名称 --name  容器名 镜像名
docker run -d --net mynet --name  to1 to
docker run -d --net mynet --name  to2 to
2,to1可以直接链接通过容器ping to2 无需--link
docker exec -it to1 ping to2

docker network connect  网卡名称 容器名//容器链接网络


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值