docker的安装(Centos7)
wget -O /etc/yum.repos.d/docker-ce.repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
#查看可安装docker版本
yum list docker-ce --showduplicates | sort -r
#安装
yum -y install docker-ce-20.10.0
#添加加速源
mkdir -p /etc/docker
vi /etc/docker/daemon.json
{"registry-mirrors":
["https://5f2jam6c.mirror.aliyuncs.com",
"http://hub-mirror.c.163.com"]
}
#重启docker
systemctl restart docker
#开机自启
systemctl enable docker
两个重要的概念:
1. docker与宿主机公用一套linux内核,不同的linux发行版。
2.docker镜像采用联合文件系统,写时复制,镜像分层,即每个镜像都在一个只读的基础镜像基础上添加属于自己的可写层。下载镜像时基础镜像下载一次,再下载其他镜像时只需要下载其可写层就够了,大大节约了空间。
基础命令:
docker镜像命令
#搜索镜像 可以选择下载不同的镜像版本
docker search nginx
#下载镜像
docker pull nginx
#查看本地镜像
ocker image ls = docker images
#查看具体的某个镜像
docker image +镜像名
#删除本地镜像
docker rmi +镜像ID
#镜像的导入与导出
docker image save 镜像ID > /opt/名字.tgz
docker load -i 文件名
docker容器命令
docker run 镜像名/ID
#如果镜像不存在本地,册会在线去下载该镜像
#注意: 如果用容器去跑一台centos或其他linux,容器内的进程必须处于前台运行状态,否则容器就会直接退出,如果容器内,什么事也没做,容器也会挂掉,容器内,必须有一个进程在前台运行。
#启动一个容器并执行某个命令,执行命令会卡住一个终端
docker run 镜像名/ID ping www.baidu.com
docker run -d --rm --name 自定义容器名 镜像ID/名字
# -d 后台启动
#--rm 容器挂掉后,自动删除不保留记录
#--name 自定义容器名
#-v 文件夹映射 -v 宿主机文件夹:容器内文件夹
#-p 端口映射 -p 宿主机端口:容器端口
#--network 指定虚拟网卡
#查看容器日志
docker log 容器ID/名字 #查看全部
docker log -f 容器ID/名字 #查看当前,实时刷新
#进如正在运行的容器,-it交互式
docker exec -it 容器ID/名字 /bin/bash
#查看容器的详细信息,用于高级调试
docker inspect 容器ID/名字
#例如: 启动一个nginx容器,自定义容器名为nginx01 宿主机端口81映射到容器服务端口80 把宿主机本地文件夹/data映射到容器的/var/www/html文件夹
[root@node-1 data]# echo "hello word" > index.html
[root@node-1 data]# ls
index.html
[root@node-1 data]# docker run -d --name nginx01 -p 81:80 -v /data:/usr/share/nginx/html nginx
d3dfbe082751ac47c3f7811464c39775336b96f22a4f9a18373c739fa5491350
[root@node-1 data]# curl 127.0.0.1:81
hello word
#查看正在运行的容器
docker ps
#查看所有容器,包括历史运行和目前运行的
docker ps -a
#停止正在运行的容器
docker stop 容器名或者容器id
#批量停止所有容器
docker stop $(docker ps -a)
#删除容器
docker rm 容器名或者容器id
#查看容器/镜像的详细信息
docker inspect 容器id\镜像id
docker的网络管理
docker提供了三种网络模式
- bridge (常用的也是默认类型) 桥接模式 虚拟网络桥接在物理网卡上,通过物理网卡上网,会生成一个叫docker0的虚拟交换机可通过ip a查看。
- host 仅主机模式,这种方式用于一组容器间的通信,没有连通外网的需
- none 不提供网络
--------------------------------------------------------------------------------------------------------------------------------
#查看当前所有虚拟网卡
docker network ls
#创建虚拟网卡(默认为bridge)
docker network create my_network
[root@node-1 data]# docker network create my_network
4162e5b0794707b3dc4c7b80fc34f22a5410d890afb1ce3836cf6d70575f099c
[root@node-1 data]# docker network ls
NETWORK ID NAME DRIVER SCOPE
122a9b10d524 bridge bridge local
ef640a3a47b5 host host local
4162e5b07947 my_network bridge local
ded06855d663 none null local
[root@node-1 data]#
#删除虚拟网卡,删除前必须删除此网卡上的容器
docker network rm 虚拟网卡名或者虚拟网卡ID
#查看网卡的详细信息: 虚拟网卡内连了多少容器,或者容器的网段
docker inspect 网卡id或者网卡名