1、安装部署docker
1.1、安装环境
在Centos7进行安装,在 CentOS 7安装docker要求系统为64位(getconf LONG_BIT)、系统内核版本为 3.10 以上 (uname -r |awk -F’-’ ‘{print $1}’)
1.2、用yum源安装
1.2.1 查看是否已安装docker列表
如下是已经安装了的截图
yum list installed | grep docker
1.2.2 安装docker
yum -y install docker
-y表示不询问安装,直到安装成功,安装完后再次查看安装列表
1.3、安装包安装docker
下载地址:版本举例:docker-19.03.9.tgz
链接:https://pan.baidu.com/s/16wN6KR9RxaXte6wX03Fl6g
提取码:ah2t
1.3.1、解压docker安装包
tar -xf ./package/ docker-19.03.9.tgz
1.3.2、将docker目录移到/usr/bin目录下
/bin/cp -f ./docker/* /usr/bin/
1.3.3、将docker.service 移到/etc/systemd/system/ 目录
/bin/cp -f ./package/docker.service /etc/systemd/system/
1.3.4、添加文件权限
chmod +x /etc/systemd/system/docker.service
1.3.5、重新加载配置文件
systemctl daemon-reload
1.3.6、启动docker
systemctl start docker
1.3.7、设置开机自启
systemctl enable docker.service
1.3.8、查看docker是否安装成功
docker –v 或docker info
2、安装docker-compose
.1、下载docker-compose文件
#使用curl将docker-compose文件下载到/usr/local/bin/docker-compose
sudo curl -L "https://github.com/docker/compose/releases/download/1.27.3/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
#但通常因为网速原因访问下载慢或失败,可以改为国内站点下载,使用以下链接。
sudo curl -L "https://get.daocloud.io/docker/compose/releases/download/1.27.4/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
脚本安装:
echo "开始安装docker-compose环境"
install_docker_compose_version=`docker-compose -v `
if [ $? -eq 0 ]; then
echo "检查到docker-compose已安装,安装的版本:$install_docker_compose_version"
else
echo "将$docker_compose_version 移到/usr/local/bin/ 目录 "
/bin/cp -f ./package/$docker_compose_version /usr/local/bin/docker-compose
echo "docker-compose添加权限"
chmod +x /usr/local/bin/docker-compose
docker-compose -v
if [ $? -eq 0 ]; then
echo "docker-compose安装成功"
else
echo "docker-compose安装失败"
exit 1
fi
fi
2.2、赋予文件可执行权限
sudo chmod +x /usr/local/bin/docker-compose
2.3、执行docker-compose命令查看安装是否成功
docker-compose使用python编写,所以会看到依赖的python版本
3、docker实践之docker-compose部署mysql
mysql目录
3.1、my.cnf为初始化文件
[root@tandd-no conf]# cat my.cnf
[mysqld]
user=mysql
default-storage-engine=INNODB
character-set-server=utf8
[client]
default-character-set=utf8
[mysql]
default-character-set=utf8
[root@tandd-no conf]#
3.2、编写docker-compose文件
[root@tandd-no mysql]# cat docker-compose.yml
version: '3.0'
services:
mysql:
network_mode: "host"
environment:
MYSQL_ROOT_PASSWORD: "******"
MYSQL_USER: 'test'
MYSQL_PASS: '*******'
image: "docker.io/mysql:5.7"
container_name: mysqltest
restart: always
volumes:
- "./db:/var/lib/mysql"
- "./conf/my.cnf:/etc/my.cnf"
- "./init:/docker-entrypoint-initdb.d/"
[root@tandd-no mysql]#
1)network_mode:容器的网络模式
Docker中的host模式指定是容器与主机享受相同的network namespace,在这种情况下,我们访问主机端口就能访问我们的容器。比如说我们运行tomcat容器并且用-- network=host 来指定我们的网络模式为host,这样我们访问本机的8080端口就能访问到我们的tomcat容器
network_mode: “bridge”
network_mode: “host”
network_mode: “none”
network_mode: “service:[service name]”
network_mode: “container:[container name/id]”
2)MYSQL_ROOT_PASSWORD为数据库的密码,也就是root用户的密码。
3)MYSQL_USER和MYSQL_PASS另外一个用户名和密码。非root用户和密码
4)image为你拉取镜像的地址和版本,当然也可以换成自己的镜像仓库
container_name:指定自定义容器名称,而不是生成的默认名称。如果container name没有定义, docker-compose自动给container分配了一个名字,其格式为:<当前工作路径名>。
5)volumes里面的参数为映射本地和docker容器里面的文件夹和目录。
A、./db 用来存放了数据库表文件,
B、./conf/my.cnf存放自定义的配置文件,
C、./init存放初始化的脚本。
3.3、Init.sql举例
CREATE USER 'test'@'%' IDENTIFIED BY '******';
GRANT All privileges ON *.* TO 'test'@'%';
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'Abc1234%';
create database compose_test;
use compose_test;
create table user
(
id int auto_increment primary key,
username varchar(64) unique not null,
email varchar(120) unique not null,
password_hash varchar(128) not null,
avatar varchar(128) not null
);
insert into user values(1, "TOM","test12345@qq.com","passwd","avaterpath");
insert into user values(2, "Lily","12345test@qq.com","passwd","avaterpath");
说明:
ALTER USER ‘root’@’%’ IDENTIFIED WITH mysql_native_password BY ‘******’;这一句比较重要,放开root登入权限,如果你要在其他的主机用root用户登入到数据库就需要写入这句话。其他的语句就是建表操作和插入数据的操作了。
3.4、拉取服务依赖的镜像
docker-compose pull
3.5、启动所有容器
-d 将会在后台启动并运行所有的容器
docker-compose up -d
注意:需要在存放docker-compose.yml的目录下进行操作。
列出项目中目前的所有容器
docker-compose ps
或docker ps | grep mysql
3.6、检查初始化的数据
进入容器
docker exec -it ${CONTAINERID} /bin/bash
3.7、验证远程连接