文章目录
1. 容器化应用
容器技术起源于Linux,是一种内核虚拟化技术,提供轻量级的虚拟化,以便隔离进程和资源。尽管容器技术已经出现很久,却是随着Docker的出现而变得广为人知。Docker
是第一个使容器能在不同机器之间移植的系统。它不仅简化了打包应用的流程,也简化了打包应用的库和依赖,甚至整个操作系统的文件系统能被打包成一个简单的可移植的包,这个包可以被用来在任何其他运行Docker
的机器上使用。
Docker
主要特性:
- 文件、资源、网络隔离
- 变更管理、日志记录
- 写时复制
2. docker 与 虚拟机的差异
从图中也很明显看出,之所以容器比 VM 要轻量得多,主要就因为少了一个 Guest OS。另外,图中也看到了,容器的下层就是容器引擎。
Docker 相比 虚拟机有以下的优点:
- 更高效的利用系统资源
- 更快速的启动时间
- 一致的运行环境
- 更轻松的迁移
- 更轻松的维护和扩展
典型的使用流程:
3. Centos中Docker安装方法
- 删除旧的版本(如果没有可以跳过)
sudo yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
- 安装必须的依赖
sudo yum install -y yum-utils \
device-mapper-persistent-data \
lvm2
添加stable的Docker-ce
的源:
sudo yum-config-manager \
--add-repo \
https://download.docker.com/linux/centos/docker-ce.repo
- 安装docker-ce:
sudo yum install docker-ce docker-ce-cli containerd.io
- 启动docker
# 启动docker
sudo systemctl start docker
# 查看docker状态
systemctl status docker
4. 安装第一个docker应用hello-world
# 如果本地没有安装会有提示,并且自动下载
docker run hello-world
如果本地没有hello-world
应用,会自动从远程下载:
使用docker ps
可以查看当前开启的docker
容器:
5. 开启国内镜像加速
如果下载安装比较慢,可以配置国内镜像,下载更快:
# 修改文件
vi /etc/docker/daemon.json
# 文件内容:
{
"registry-mirrors": ["https://mirror.ccs.tencentyun.com","http://hub-mirror.c.163.com"]
}
6. docker 常见命令
查看当前开启的docker镜像:
# 查看当前运行的容器
docker ps
# 查看所有的容器(包含停止的容器)
docker ps -a
重启docker服务
systemctl daemon-reload
systemctl restart docker
停止docker镜像
docker stop `CONTAINER ID`/`NAMES`
删除docker镜像
docker rm `CONTAINER ID`/`NAMES`
如:
删除容器前需要先停止它docker stop ID/Name
,否则不能删除。
7. docker hub 库
如果需要使用别的应用镜像,如mysql等,可以从https://hub.docker.com/
先搜索,然后可以查看如何安装。
点进去就可以查看安装方法:
8. 安装mysql docker
运行mysql docker:
# 本地28001映射到docker內部3306
docker run --name zy-mysql -e MYSQL_ROOT_PASSWORD=123456 -d -p 28001:3306 --restart=always mysql
- docker名称为:
zy-mysql
- mysql密码为:
123456
- 本地端口:
28001
- docker镜像端口:
3306
(mysql默认端口) - -d:后台运行
- –restart:容器会在开机即运行
安装完成,查看:
此时mysql已经安装好了,但是外部用GUI工具还是连不上,需要操作一下:
# 进入mysql docker容器
docker exec -it mysql bash
# 用密码登录到mysql
mysql -uroot -p
# 输入密码,回车
123456
# 查看root用户信息
select user,host,plugin from mysql.user;
# 发现root后面是"caching_sha2_password"
# 修改密码
ALTER user 'root'@'%'IDENTIFIED WITH mysql_native_password BY '123456';
FLUSH PRIVILEGES;
现在就可以远程连接了:
- 需要在云主机的安全组添加
28001
端口,否则外部不能连接(阿里云:云服务器ECS > 网络与安全 > 安全组 > 配置规则 > 入方向,手动添加);- 若开启了防火墙,也需要将端口添加到防火墙
# 查看是否开启了防火墙
firewall-cmd --state
# 添加端口到防火墙放行
firewall-cmd --add-port=28001/tcp --permanent
# 重载防火墙规则
firewall-cmd --reload
为这个小鲸鱼点个赞吧~