1.Docker版本介绍
Docker从17.03版本之后分为:
CE(Community Edition: 社区版) 功能有限,没有官方技术支持服务。
EE(Enterprise Edition: 企业版)功能全面,提供官方技术支持服务。
2.创建Docker存储库 官方安装文档:https://docs.docker.com/engine/installation/linux/centos/
环境规划
在新主机上首次安装Docker Engine-Community之前,需要设置Docker仓库。
之后,方便您可以从仓库安装和更新Docker:
[root@localhost ~]# yum install -y yum-utils
使用以下命令来设置稳定的仓库(阿里仓库):
[root@localhost ~]# yum-config-manager --add-repo \
> http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
3.安装docker软件包
[root@localhost ~]# yum install -y docker-ce docker-ce-cli
containerd.io docker-compose-plugin
#查看docker版本信息
[root@localhost ~]# docker --version
卸载Docker方式,删除安装包:
[root@localhost ~]# yum remove docker-ce
删除镜像、容器、配置文件等内容:
[root@localhost ~]# rm -rf /var/lib/docker
4.配置镜像加速器
默认情况下镜像从docker hub下载,由于docker hub服务器在国外,由于网络原因镜像下载速度较慢,一般会配置镜像加速器进行下载,国内镜像加速器有阿里云、网易云、腾讯云、中科大等,本实验配置阿里云镜像加速器,速度较快。
阿里云的加速器:https://help.aliyun.com/document_detail/60750.html
网易加速器:http://hub-mirror.c.163.com
官方中国加速器:https://registry.docker-cn.com
ustc(中科大) 的镜像:https://docker.mirrors.ustc.edu.cn
Daocloud(云平台):https://www.daocloud.io/mirror#accelerator-doc (注册后使用)
5.Docker命令介绍
查看docker可用命令:
[root@localhost ~]# docker
Docker命令根据Docker官方案例分为以下几种:
Docker环境信息: docker [info|version]
容器生命周期管理: docker [create|exec|run|start|stop|restart|kill|rm|pause|unpause] 容器操作命令: docker [ps|inspect|top|attach|wait|export|port|rename|stat]
容器rootfs命令: docker [commit|cp|diff]
镜像仓库命令: docker [login|pull|push|search]
本地镜像管理: [build|images|rmi|tag|save|import|load]
容器资源管理: docker [volume|network]
系统日志信息: docker [events|history|logs]
6.镜像常用管理命令docker image获取镜像管理命令
命令 作用
docker images 列出本地镜像
docker search 镜像名 搜索镜像
docker pull 镜像名:版本 拉取镜像
docker rmi 镜像名:版本 删除镜像
列出本地镜像:docker images
常用选项:
-a :列出本地所有的镜像
-q :只显示镜像ID
[root@localhost ~]# docker images
输出详情介绍:
REPOSITORY 镜像仓库源
TAG 镜像的标签
IMAGE ID 镜像的ID
CREATED 镜像更新时间
SIZE 镜像大小
搜索镜像:docker search
常用选项:
--no-trunc :显示完整的镜像描述
[root@localhost ~]# docker search centos
输出详情介绍:
NAME 镜像仓库源的名称
DESCRIPTION 镜像的描述
STARS 点赞数量,表示喜欢的意思
OFFICIAL 是否docker官方发布
AUTOMATED 自动构建(表示个人发布)
下载镜像:docker pull
[root@localhost ~]# docker pull centos:7
提示:下载镜像如果不指定镜像版本则是最新版本,如需指定版本可从docker hub查看对应版本信息在进行下载
查看镜像:docker images
[root@localhost ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
centos 7 8652b9f0cb4c 8 months ago 204MB
删除镜像:docker rmi
[root@localhost ~]# docker rmi centos
提示:删除镜像可以根据镜像名称或者ID删除
删除所有镜像:如需删除所有镜像可以配合docker images -q获取所有
镜像ID在进行删除
[root@localhost ~]# docker rmi `docker images -q`
7.容器常用管理命令
命令 作用
docker ps 查看正在运行容器
docker ps -a 查看所有容器
docker run 参数 创建容器
docker exec 容器ID/容器名 进入容器
docker stop 容器名/容器ID 停止容器
docker rm 容器名/容器ID 删除容器
docker start 容器名/容器ID 启动被停止的容器
docker restart 容器名/容器ID 重启容器
docker kill 容器名/容器ID 强制停止正在运行的容器(一般不用,除非卡了)
docker inspect 容器名称 查看容器元数据信息
--restart=always 启动容器时设置容器随机自启
docker update --restart=always 容器名/容器ID 容器启动后设置容器随机自启
docker logs 容器名/容器ID 查看容器日志信息
创建容器:docker run
常用选项:
-id :指定容器在后台运行,并返回容器ID
--name="名称" :为容器指定一个名称 /bin/bash :在容器内执行bash命令
exit :退出容器
-P :随机端口映射,容器内部端口随机映射到主机的端口
-p :指定端口映射,格式为:主机(宿主)端口:容器端口
--dns 8.8.8.8 :指定容器使用的DNS服务器,默认和宿主一致
-h "名称" :指定容器的hostname
-e username="ritchie" :设置环境变量
-m :设置容器使用内存最大值
--net="bridge" :指定容器的网络连接类型,支持bridge/host/none/container: 四种类型
--link=[] :添加链接到另一个容器
--expose=[]: 开放一个端口或一组端口
--volume , -v :绑定一个数据卷
1.创建容器:docker run参数
[root@localhost ~]# docker run -it --name=c1 centos:7 /bin/bash
-it :为容器分配一个输入终端
--name="名称" :为容器指定一个名称
/bin/bash :在容器内执行bash命令
2.查看容器信息:
[root@localhost ~]# docker ps 通过-it创建的容器退出后自动关闭
[root@localhost ~]# docker ps -a 查看所有容器,包括未运行的
3.创建容器并放入后台运行
[root@localhost ~]# docker run -id --name=centos2 centos:7
-d:后台运行容器,并返回容器ID,放入后台运行的容器退出后不会自动关闭
4.查看容器元数据信息
[root@localhost ~]# docker inspect centos2
5.进入容器:docker exec -it 容器ID/容器名
[root@localhost ~]# docker exec -it centos2 /bin/bash
6.停止容器:docker stop 容器名/容器ID
[root@localhost ~]# docker stop centos2
7.启动被停止的容器:docker start 容器名/容器ID
[root@localhost ~]# docker start centos1
8.启动被停止的所有容器:ps -aq 获取所有容器ID
[root@localhost ~]# docker start `docker ps -aq`
9.删除容器:docker rm 容器名/容器ID
常用选项: -f 强制删除(无需停止容器)
[root@localhost ~]# docker rm centos2
10.删除所有容器:ps -aq 获取所有容器ID
[root@localhost ~]# docker rm `docker ps -aq`
练习:通过Docker部署Nginx的web应用并实现浏览器访问:
1)下载nginx镜像
[root@localhost ~]# docker pull nginx:1.20.2
2)创建容器并实现端口映射(默认容器无法被外网访问)
[root@localhost ~]# docker run -d --name=ngx_v1 --restart=always -p 80:80 nginx:1.20.2
-P:随机端口映射,容器内部端口随机映射到主机的端口
-p:指定端口映射,格式为:宿主机端口:容器端口
--restart=always #容器退出后,自动启动容器(一直)
3)拷贝项目到Nginx的网页目录
docker cp 用于容器与主机之间的数据拷贝
格式1:docker cp 容器名:目录/文件 宿主机目录 #将容器中文件或目录拷贝到宿主机
格式2:docker cp 宿主机目录/文件 容器名:目录 #将宿主机文件/目录拷贝到容器中
#将转盘抽奖项目拷贝到容器中
[root@localhost ~]# docker cp /root/turntable_lottery-master/* ngx_v1:/usr/share/nginx/html
#进入容器验证
[root@localhost ~]# docker exec -it ngx_v1 /bin/bash
[root@b35e35bf1ca9:/]# cd /usr/share/nginx/html/
4)浏览器访问:http://宿主机IP:端口
```