debian怎么配置静态ip地址
259
2022-10-21
D001.5 Docker入门(超级详细基础篇)
教程目录
0x00 教程内容0x01 Docker的安装
0. 安装前提1. 安装Docker2. 开启Docker服务并校验3. 配置自启动与国内镜像
0x02 Docker的简单操作
1. 查找镜像2. 拉取与查看镜像3. 运行镜像(会实例化出容器,并进入容器)4. 查看容器5. 退出容器6. 在原有镜像基础上创建新镜像7. 给镜像打标签
0x03 Docker数据卷与数据卷容器
1. 数据卷(了解即可,可不操作)2. 数据卷(简易操作版)3.数据卷容器
0x04 Docker网络配置
0. 开启Docker的端口转发1. 绑定centos端口与容器的端口2. 容器互联(子容器连接父容器)
0x05 Docker镜像的打包与载入
0. 查看镜像1. 打包2. 载入3. 打包单个镜像4. 删除镜像5. 导入容器快照6.导入镜像与导入容器快照的区别
0xFF 总结
0x00 教程内容
Docker的安装Docker的简单操作Docker数据卷与数据卷容器Docker网络配置Docker镜像的打包与载入
0x01 Docker的安装
0. 安装前提
a.kernel版本需大于3.10:
uname -r
b.能上外网
ping baidu.com
c.本文是基于Centos7(6或ubuntu需改代码)
1. 安装Docker
a.切换成root用户权限(执行后输入自己的root密码):
su root
b.安装软件包(目的是为了c.步):
yum install -y yum-utils device-mapper-persistent-data lvm2
c.设置yum源
yum-config-manager --add-repo install -y docker-ce-18.03.0.ce
2. 开启Docker服务并校验
a.开启服务
systemctl start docker.service
b.校验
docker version
3. 配置自启动与国内镜像
a.设置Docker开机自启
systemctl enable docker.service
b.配置国内镜像(使下载镜像更快)
vi /etc/docker/daemon.json
{ "registry-mirrors": ["daemon-reload
systemctl restart docker
0x02 Docker的简单操作
1. 查找镜像
docker search mysql --filter=stars=100
“–filter=stars=100”:显示STARS数不小于100的镜像
2. 拉取与查看镜像
docker pull mysql:5.5
(docker pull mysql为拉取最新版本,5.5为指定版本)
docker images
3. 运行镜像(会实例化出容器,并进入容器)
docker run -t -i mysql:5.5 /bin/bash
4. 查看容器
a.查看运行中容器(执行后,切换终端查看)
su root
docker ps
b.查看所有的容器
docker ps -a
5. 退出容器
exit
(ps:注意本实验多出省略此语句,请注意看截图判断是在容器内执行还是centos里执行)
6. 在原有镜像基础上创建新镜像
a.新拉取一个centos镜像,并添加新的内容
docker pull centos
docker run -t -i centos /bin/bash
touch shaonaiyi.txt
echo wechat:shaonaiyi888 >> shaonaiyi.txt
b.复制主机名be6d5355a518,退出镜像
exit
c.生成新的镜像
docker commit -m "add wechat" -a "New Container" be6d5355a518 shaonaiyi/centos:v1.0.0
d.查看镜像
docker images
7. 给镜像打标签
docker tag 75835a67d134 shaonaiyi/centos:v1.0.1
docker images
0x03 Docker数据卷与数据卷容器
Docker的数据卷与Centos的mount类似,也跟电脑主机插CD光盘一样。
1. 数据卷(了解即可,可不操作)
a.创建名为app1的并带有数据卷mount的容器(-d指后台执行)
docker run -d -P -it --name app1 -v /mount centos /bin/bash
b.进入app1容器并中查看数据卷为空
docker attach app1
c. 先退出容器,然后查看挂载情况(指定显示:Mounts)
exit
docker inspect -f {{.Mounts}} app1
d.进入app1容器
docker start app1
docker attach app1
e.然后切换终端2在默认的路径新建文件,切回终端1可查看到结果
touch /var/lib/docker/volumes/8b4354560f97f16b2b875499dde06fd8bb874687ee95d049ed2bdaec17a9dfd3/_data/hello
f.同样,在app1里面新建文件,在默认文件夹也可同步
g.查看并删除数据卷
docker volume ls
docker rm -v移除容器的同时也会移除数据卷
docker run --rm在容器退出时清除数据
ps:只能删除没有容器挂载的Volume。如果有容器正在挂载的数据卷则不会被删除。
h.删除容器(自行创几个来删除或者知道就可以了,-f为强行删除,无论是否在运行都删除)
docker rm -f be6d5355a518
docker volume prune删除无用的数据卷(强行删除了一些容器后执行的结果)
2. 数据卷(简易操作版)
a.创建指定文件夹(-p指创建多级文件夹,即/docker没有也会创建)
mkdir -p /docker/datas
touch /docker/datas/hello.txt
b.执行容器,挂载/docker/datas到docker容器的/datas(发现centos的hello.txt文件可在容器中查看到)
docker run -d -P -it --name web1 -v /docker/datas:/datas centos /bin/bash
c.设置容器中的/datas为只读模式(:ro)
docker run -d -P -it --name web1 -v /docker/datas:/datas:ro centos /bin/bash
d.亦可以挂载单个文件
docker run -d -P -it --name web2 -v ~/.bash_history:/.bash_history centos /bin/bash
docker attach web2
ll -a查看以“.”开头的隐藏文件
3.数据卷容器
a.创建一个专门用于挂载的容器(挂载目录为/database,echo database表示创建后执行后的命令行)
docker run -d -v /database --name db centos echo database
b.查看执行后的结果
docker logs db
c.创建一个挂载容器db的/database的容器db1
docker run -d -it --volumes-from db --name db1 centos /bin/bash
d.检验是否挂载成功
docker attach db1
ls
0x04 Docker网络配置
0. 开启Docker的端口转发
a.解决Ipv4警告而已,可不操作,直接执行下面1.先
echo net.ipv4.ip_forward=1 >> /usr/lib/sysctl.d/00-system.conf
more /usr/lib/sysctl.d/00-system.conf
b.执行完发现/usr/lib/sysctl.d/00-system.conf里面多了net.ipv4.ip_forward=1,然后重启网络:
systemctl restart network && systemctl restart docker
如不执行,在运行下面语句时会有警告:
1. 绑定centos端口与容器的端口
a.运行一个容器(-p 5000:5000 可替换成-P,则随机分配端口)
docker run -d -p 5000:5000 training/webapp python app.py
b.查看运行中容器的端口映射情况
docker ps
c.退出容器,然后在centos查看情况(说明绑定成功)
curl 127.0.0.1:5000
d.绑定指定ip端口则在前面加指定ip(127.0.0.1可换成其他ip地址)
docker run -d -p 127.0.0.1:5000:5000 training/webapp python app.py
e.绑定指定ip随机的端口(127.0.0.1可换成其他ip地址)
docker run -d -p 127.0.0.1::5000 training/webapp python app.py
f.绑定指定多端口映射(执行后会用c.方式访问发现都可以查看)
docker run -d -p 5010:5000 -p 5020:5000 training/webapp python app.py
g.还可以指定通信协议(/udp或/tcp)
docker run -d -p 5030:5000/udp training/webapp python app.py
h.查看端口映射(容器的端口或者NAMES都可以查看)
docker ps
docker port jolly_fermat
i.查看详情(看到很多信息,可以跟0x03的c.的语句做对比)
docker inspect jolly_fermat
2. 容器互联(子容器连接父容器)
a.创建一个db容器
docker run -it -d --name net0 centos
b.查看webapp1容器的环境变量(db:db<=>容器名:容器别名)
docker run -it --name webapp1 --link net0:net0 centos /bin/bash
c.执行查看/etc/hosts,发现也加上了映射
cat /etc/hosts
d.查看发现webapp1能ping通net0容器
ping net0
0x05 Docker镜像的打包与载入
0. 查看镜像
a.记住REPOSITORY
docker images
1. 打包
a.sny_centos.tar.gz为打包后的名字,shaonaiyi/centos为REPOSITORY
docker save -o sny_centos.tar.gz shaonaiyi/centos
2. 载入
a.执行ll,可查看到本地多了sny_centos.tar.gz文件
b.执行后,发现导入了两个镜像
docker load --input sny_centos.tar.gz
3. 打包单个镜像
a.添加上TAG即可
docker save -o sny_centos.tar.gz shaonaiyi/centos:v1.0.1
4. 删除镜像
a.-f指强制删除,后面接IMAGE_ID,此处为删除我的mysql
docker rmi -f d27424d4dcd4
5. 导入容器快照
a.下载或者拿到别人的镜像,此处使用自己的镜像,体现不出大小
cat sny_centos.tar.gz | docker import - sny_centos:v1.0.2
6.导入镜像与导入容器快照的区别
a.容器快照可以重新定义名称
b.容器快照不保存元数据和历史数据,所以体积更小
0xFF 总结
常用命令扩展Centos操作:yum list docker-ce --showduplicates | sort -r查看yum里docker的版本yum install -y docker-ce安装最新版本的docker
作者简介:邵奈一 大学大数据讲师、大学市场洞察者、专栏编辑
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~