演示系统:Centos 7
firewalld 开启,selinux 开启
一、安装存储库拓展包
yum install yum-utils -y
二、设定存储库
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
三、安装三个包
yum install docker-ce docker-ce-cli containerd.io -y
## docker-ce 程序包 , docker-ce-cli,工具包,containerd.io 主要做系统和Docker api守护进程
四、启动docker
systemctl start docker
五、验证
1、查看docker版本信息:
docker version
2、查询docker详细信息:
docker info
六、查看本地镜像
docker images
REPOSITORY | TAG | IMAGE ID | CREATED | SIZE |
仓库名 | 标签 | 镜像的ID(保证唯一的) | 创建时间 | 大小 |
七、查找镜像
docker search nginx
NAME DESCRIPTION STARS OFFICIAL AUTOMATED nginx Official build of Nginx. 15732 [OK] jwilder/nginx-proxy Automated Nginx reverse proxy for docker con… 2088 [OK] richarvey/nginx-php-fpm Container running Nginx + PHP-FPM capable of… 818 [OK]
## 这里的OFFICIAL 有ok的表示是官方提供的镜像
八、下载镜像
docker pull nginx
九、利用镜像直接创建容器
1、前台启动容器,窗口关闭,进程自动关闭
docker run +参数 【images:tag 】 启动命令
docker run --name nginx_1 nginx:latest
## nginx:latest ,latest 是标签
2、后台启动nginx
docker run -d --name nginx_2 nginx
## nginx_2 这里表示起个名字容器叫nginx_2 ,最后的nginx这里则表示使用的镜像
3、以交互式模式,并分配一个伪终端运行容器
docker run -itd --name nginx_5 nginx
docker run -itd -p 9527:80 --name nginx_4 nginx:latest
## 9527 是暴露给外部访问的端口,通过访问宿主机的9527端口,可以访问容器里的服务
## 宿主机9527 和 80 之间会生成一个内网,只不过是通过9527在访问到内网的80端口
## 访问容器: 浏览器输入本机IP:9527
十一、查看容器
docker ps
2、查看全部容器(包括没启动的容器)
docker ps -a
3、直接查看容器ID
docker ps -aq
十一、进入容器,以交互式方式分配一个伪终端
docker exec -t 80db5c362fb3 /bin/bash
## 80db5c362fb3 这个ID通过docker ps 获取,/bin/bash解释器 不加解释器无法进入容器
十二、启动和停止容器
docker start/stop [容器ID]
十三、删除容器
docker rm 83023b4bead2
## 启动的容器不能删除,必须停止启动才能删除
十四、删除所有已停止的容器
docker rm `docker ps -aq`
docker inspect 83023b4bead2
十六、给镜像添加一个软连接,并改名和标签:
docker tag nginx:latest centos_nginx:1
## image id 是相同的
十七、删除镜像
docker rmi nginx:latest
## 非必须最好不删除镜像。
十八、容器和宿主机之间的文件复制
1、宿主机到容器:
docker cp test,txt 80db5c362fb3:/root
## 复制当前目录下的test.txt 到80db5c362fb3这个镜像下的root下
2、容器到宿主机:
docker cp 80db5c362fb3:/root/f1 .
十九、不进入容器查看|新建|删除|容器里的文件
docker exec 80db5c362fb3 ls /root
## 加/bin/bash 进入容器,直接加命令不进入容器执行命令