Docker学习
Docker
文章目录
一、下载docker
参考网址:https://www.runoob.com/docker/docker-mirror-acceleration.html
尚硅谷教学视频:https://www.bilibili.com/video/BV1Zn4y1X7AZ/?spm_id_from=333.337.search-card.all.click
我是在虚拟机上练习的,尚硅谷视频在云服务器上演示,不影响。
二、配置镜像
Linux终端运行下面的命令
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{"registry-mirrors": ["https://dockerproxy.com","https://hub-mirror.c.163.com","https://mirror.baidubce.com","https://ccr.ccs.tencentyun.com"]
}
EOF
完成后,重启docker
sudo systemctl daemon-reload
systemctl restart docker
检查配置是否生效:
docker info
三、基本操作
3.1 查看官方库,下载,查看本地镜像
docker search nginx
docker pull nginx
docker images
3.2 启动容器
3.2.1 指令总览
运行 | docker run |
---|---|
查看 | docker ps |
停止 | docker stop |
启动 | docker start |
重启 | docker restart |
状态 | docker stats |
日志 | docker logs |
进入 | docker exec |
删除容器(镜像) | docker rm(rmi) |
查看日志 | docker logs images/id |
退出 | exit |
3.2.2 端口映射
(1)
docker run -d --name mynginx nginx
-d: 后台启动
–name:自命名
docker run -d --name mynginx -p 80:80 nginx
-p:端口映射 本机:容器
注意:
如果要访问nginx界面,用http协议而不是https
3.2.3 exec详解
(1)
docker exec -it mynginx /bin/bash
-it:交互模式
/bin/bash:bash控制台交互
(2)echo语句修改文件
3.2.4 挂载目录
docker run -d -p 80:80 -v /app/nghtml:/usr/share/nginx/html --name app01 nginx
缺点:不能挂载配置文件目录,因为刚挂载是目录为空,导致容器配置文件缺失停止。
解决办法:卷映射
3.2.5 卷映射
-v 卷名:/目录
-v ngconf:/etc/nginx
完整命令:
docker run -d -p 80:80 -v /app/nghtml:/usr/share/nginx/html -v ngconf:/etc/nginx --name app01 nginx
卷的位置是docker默认的
/var/lib/docker/volume/ngconf(卷名)
四、保存镜像文件
4.1 提交
docker commit -m "提交信息" mynginx mynginx:v1.0
前一个mynginx是提交的对象,最后一个mynginx是镜像名字:标签
4.2 保存
将镜像保存为一个文件
docker save -o mynginx.tar mynginx:v1.0
-o:镜像写出成一个文件
4.3 加载
docker load -i mynginx.tar
五、分享社区
5.1 登录
进入dockerhub官网:https://hub.docker.com/
docker login
5.2 命令
(1)改名,原来的镜像名字没有用户名
docker tag mynginx:v1.0 zpyai/mynginx:v1.0
5.3 推送
docker push zpyai/mynginx:v1.0
六、docker网络
6.1 查看ip
使用容器ip+容器端口互相访问
(1)ifconfig查看网卡
(2)查看细节
docker container inspect app01
6.2 创建自定义网络
加入自定义网络的容器,其名字就相当于域名
docker network create mynet
参数:
运行结果:
6.3 容器加入自定义网络
docker run -d -p 80:80 --name app1 --network mynet nginx
docker run -d -p 99:80 --name app2 --network mynet nginx
此时,可以进入容器app1访问app2的域名
docker exec -it app1 bash
curl http://app2:99
]
6.3 容器加入自定义网络
docker run -d -p 80:80 --name app1 --network mynet nginx
docker run -d -p 99:80 --name app2 --network mynet nginx
此时,可以进入容器app1访问app2的域名
docker exec -it app1 bash
curl http://app2:99