docker容器化技术,是一个开源的应用容器引擎 解决了软件跨环境迁移的问题
docker的架构 仓库里存放镜像(官方仓库和私有仓库),使用时本地没有该镜像则从仓库下载 容器是从镜像创建出来的(类似于类和对象的关系) 镜像的本质是多层文件系统
docker安装步骤
1)yum update 升级本地yum包
2) yum install -y yum-utils 安装工具集
3)yum-config-manager --add-repo /linux/centos/ 安装docker官方源
4)sudo yum makecache fast 更新yum缓存
5)yum -y install docker-ce 安装docker
6)service docker start 启动docker服务
7)docker -v 查看docker版本
由于docker官方仓库是国外的,下载较慢,我们可以配置一些阿里云,腾讯云等的镜像加速器,加快下载速度 Docker 中国官方镜像加速可通过 访问
执行如下命令:
sudo mkdir -p /etc/docker
sudo tee /etc/docker/ <<-‘EOF’
{
“registry-mirrors”: [“”]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
docker 的启动关闭等服务命令
systemctl start docker
systemctl stop docker
systemctl restart docker
systemctl status docker
systemctl enable docker 开机启动
docker镜像命令
docker images 查看本机的所有docker镜像信息
docker images -q 查看本机的所有docker镜像id
docker search redis 从网络中查看某软件在docker仓库的信息,是否存在
docker pull redis 从仓库拉取软件的镜像 默认拉取的是最新版,如果指定版本 docker pull redis:5.0
查看具体镜像文件的版本可以上 查看支持软件的哪些版本,拉取的版本号需要和官方支持的版本号一致
docker rmi 镜像id/镜像名:版本 删除镜像
容器命令
docker run -it --name container1 centos:7 创建并运行一个容器 -i一直运行着,即使没有客户端连接也运行着 -t 与容器进行交互式启动,启动后直接进入容器 -d 表示可后台运行容器 (守护式运行)
docker ps 查看正在运行的容器
docker ps -a 查看所有容器,包括历史的已停止运行的
docker exec -it 容器名称 /bin/bash 进入容器(容器必须是运行的才能进入)
exit 从容器中退出,用id方式创建的容器,退出容器容器不会停止运行 用it方式运行的容器,容器会停止运行
docker stop 容器名称 停止一个容器
docker start 容器名称 启动一个容器
docker rm 容器名称 删除一个容器
docker inspect 容器名称 查看容器的信息
数据卷的作用
1.容器数据持久化
2.外部机器和容器间接通信
3.容器之间数据交换
创建容器时将宿主机的文件夹挂载到容器,实现两个文件夹内文件的同步,从而实现容器数据的持久化 -v 宿主机被挂载的文件:容器对应文件夹
一个容器可以挂载多个数据卷,一个数据卷也可以被多个容器挂载. 目录必须是绝对路径,目录不存在会被自动创建
docker run -it --name c1 -v ~/dockerdata:/root/dockerdata centos:7
两个容器同时挂载同一个数据卷,那么A容器修改数据则B容器会马上同步,从而实现容器之间数据的交换.
docker部署常用应用
1.首先创建应用数据目录
[root@localhost /]# mkdir -p /root/docker/mysql
[root@localhost /]# mkdir -p /root/docker/tomcat
[root@localhost /]# mkdir -p /root/docker/nginx
[root@localhost /]# mkdir -p /root/docker/redis
2.进入 cd /root/docker/mysql
3.执行命令创建容器
docker run -id
-p 3306:3306
–name=c_mysql
-v $PWD/conf:/etc/mysql/
-v $PWD/logs:/logs
-v $PWD/data:/var/lib/mysql
-e MYSQL_ROOT_PASSWORD=123456
mysql
4.进入容器操作
docker exec -it c_mysql /bin/bash
5.登录mysql
mysql -uroot -p123456
最新版的mysql密码加密方式改变了,执行下面的命令还用以前的加密方式,老版本的sqlyog才可以登录
ALTER USER ‘root’@’%’ IDENTIFIED WITH mysql_native_password BY ‘123456’; #修改加密规则
ALTER USER ‘root’@’%’ IDENTIFIED BY ‘123456’ PASSWORD EXPIRE NEVER; #更新用户的密码
FLUSH PRIVILEGES; #刷新权限
tomcat容器的创建
cd /root/docker/tomcat
docker run -id --name=c_tomcat
-p 8080:8080
-v $PWD:/usr/local/tomcat/webapps
tomcat
nginx容器的创建
cd /root/docker/nginx/
然后执行
docker run -id --name=c_nginx
-p 80:80
-v $PWD/conf/:/etc/nginx/
-v $PWD/logs:/var/log/nginx
-v $PWD/html:/usr/share/nginx/html
nginx
部署redis
docker run -id --name=c_redis -p 6379:6379 redis
docker镜像是由特殊的文件系统叠加而成,最底层是bootfs,并使用宿主机的,第二层是rootfs,其它的层再往上叠加
docker镜像的制作
1.容器 commit 可以生成镜像 docker commit 容器id 镜像名称:版本
2.镜像 save可以压缩成文件 docker save -o 压缩后的文件名称 镜像名称:版本
3.文件 load 可以加载成镜像 数据卷存放的数据需要重新挂载,生成的镜像里是没有的 docker load -i 压缩文件名称
根据dockerfile构建镜像 docker build -f dockerfile文件目录 -t 构建的镜像名称:版本 .
docker compose 服务编排,编排容器的链接关系,启动参数等,然后可以一个命令按顺序启动所有编排好的容器