1.CentOS安装Docker
1.1.卸载(可选)
yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-selinux \
docker-engine-selinux \
docker-engine \
docker-ce
1.2.安装docker
yum install -y yum-utils \
device-mapper-persistent-data \
lvm2 —skip-broken
# 设置docker镜像源
yum-config-manager \
—add-repo \
https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
sed -i ‘s/download.docker.com/mirrors.aliyun.com\/docker-ce/g’ /etc/yum.repos.d/docker-ce.repo
yum makecache fast
然后输入命令:
yum install -y docker-ce
1.3.启动docker
启动docker前,一定要关闭防火墙!!
# 关闭
systemctl stop firewalld
# 禁止开机启动防火墙
systemctl disable firewalld
通过命令启动docker:
systemctl start docker # 启动docker服务
systemctl stop docker # 停止docker服务
systemctl restart docker # 重启docker服务
systemctl status docker # 检查docker状态
systemctl enable docker # 设置docker服务开机自启
输入命令,可以查看docker版本
docker -v
2.CentOS7安装DockerCompose
输入docker命令加 —help 可以显示提示信息
其余步骤参考文档day03 资料 Centos7安装Docker.md
关于Docker的一些问题:
Docker如何解决大型项目依赖关系复杂,不同组件依赖的兼容性问题?
Docker允许开发中将应用、依赖、函数库、配置一起打包,形成可移植镜像
Docker应用运行在容器中,使用沙箱机制,相互隔离
Docker如何解决开发、测试、生产环境有差异的问题?
Docker镜像中包含完整运行环境,包括系统函数库,仅依赖系统的Linux内核,因此可以在任意Linux操作系统上运行
Docker是一个快速交付应用、运行应用的技术,具备下列优势:
可以将程序及其依赖、运行环境一起打包为一个镜像,可以迁移到任意Linux操作系统
运行时利用沙箱机制形成隔离容器,各个应用互不干扰
启动、移除都可以通过一行命令完成,方便快捷
1.2.Docker和虚拟机的区别
Docker可以让一个应用在任何操作系统中非常方便的运行。而以前我们接触的虚拟机,也能在一个操作系统中,运行另外一个操作系统,保护系统中的任何应用。
两者有什么差异呢?
虚拟机(virtual machine)是在操作系统中模拟硬件设备,然后运行另一个操作系统,比如在 Windows 系统里面运行 Ubuntu 系统,这样就可以运行任意的Ubuntu应用了。
Docker仅仅是封装函数库,并没有模拟完整的操作系统,
Docker的基本操作
镜像操作
首先去镜像仓库搜索镜像,比如 hub.docker.com
根据查看到的镜像名称,拉取自己需要的镜像,
拉去命令:docker pull 镜像名:版本号不写默认是 latest
查看镜像列表命令:docker images
导出镜像命令 :docker save -o [保存的目标文件名称] [镜像名称]
例如 docker save -o nginx.tar nginx:latest
将镜像保存成压缩包
latest 镜像的版本号
使用docker rmi 镜像名 删除镜像
使用docker rmi 镜像id 删除镜像
加载镜像命令:docker load -i nginx.tar
容器操作
- docker run:创建并运行一个容器,处于运行状态
- docker pause:让一个运行的容器暂停
- docker unpause:让一个容器从暂停状态恢复运行
- docker stop:停止一个运行的容器
- docker start:让一个停止的容器再次运行
docker rm:删除一个容器
docker exec -it mn bash : 进入容器
docker run命令的常见参数有哪些?
docker run —name mn -p 80:80 -d nginx 创建并运行一个容器处于运行状态
docker run 选项顺序不固定 镜像名称
- —name:指定容器名称,一台机器上容器名称不能重复
- -p:指定端口映射 80:80 前面端口是宿主机的随便改 ,后面不行
-d:让容器后台运行, -t : 让容器交互式运行(弹出窗口)
nginx :镜像名称或者ID
回车弹出一大串8cca64de4a4d9bbe53bb1e662e5023e53d342c96941b5d06ce4d6f8a20eb9f66
容器的唯一标识
查看容器日志的命令:
- docker logs
- 添加 -f 参数可以持续查看日志,后跟容器的名称
查看容器状态:
- docker ps
- docker ps -a 查看所有容器,包括已经停止的
删除容器:
docker rm -f 容器名 删除容器
也可以先停止,再删除
docker stop 容器名 ,docker rm 容器名
进入容器:
docker exec -it 容器名 bash
进入容器操作里面的文件不推荐
组合命令
到单位先用!!!
docker rm docker ps -a -q删除所有容器
docker rmi docker images -q删除所有镜像
-q 只显示ID
作用:爽
拷贝文件到容器且指定的目录:
docker cp ./XXX.html mn:/
从容器中下载文件到本地根目录:
dockers cp mn:/xxx.html ./
设置容器自启动 docker update —restart always 容器名称
数据卷操作
数据卷的作用:
- 将容器与数据分离,解耦合,方便操作容器内数据,保证数据安全
数据卷操作:
- docker volume create 数据卷名:创建数据卷
- docker volume ls:查看所有数据卷
- docker volume inspect 数据卷名:查看数据卷详细信息,包括关联的宿主机目录位置
- docker volume rm 数据卷名:删除指定数据卷
- docker volume prune:删除所有未使用的数据卷
数据卷挂载
1.创建一个名为html数据卷
docker volume create html
2.查看数据卷详细信息
docker volume inspect html
查看数据卷的位置
“Mountpoint”: “/var/lib/docker/volumes/html/_data”,
3.创建容器的时候挂在数据卷
-v就是挂载数据卷的命令
docker run -d —name mn -v html:/root/html -p 80:80 nginx:latest
4.进数据卷目录
cd /var/lib/docker/volumes/html/_data
5.修改文件
vi index.html
目录直接挂载
docker run —name mysql -p 3306:3306 -v /my/custom:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=root -d mysql:tag
tag(版本号)
