docker

docker

  1. docker的核心要素:镜像,容器,仓库
  2. top,restart后的容器,或者commit后的镜像启动环境变量需要重新加载

docker一键安装

  1. curl -fsSL https://get.docker.com | bash -s docker --mirror aliyun

docker加速器配置

sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://imuqkqpu.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

docker基本命令

  1. systemctl start docker 启动docker
  2. systemctl stop docker 停止docker
  3. systemctl restart docker 重启docker
  4. systemctl status docker 重启docker
  5. docker info 查看docker的系统信息

docker常用命令

  1. docker pull ***:*** 下载docker镜像
  2. docker images 查看所有docekr中的镜像
  3. docker run [-d] [-p] 镜像ID/名称
    -d 表示后台运行
    -p 8080:8080 表示映射端口,宿主机端口:docker容器端口
    -v 容器挂载,主机目录:容器目录
  4. docker ps [-a] 显示所有容器的信息(启动和没有启动的)
  5. docker exec -it 容器id bash
  6. docker start 容器id 开启已经关闭的容器
  7. docker stop 容器id 关闭已经开启的容器
  8. docker rmi [-f] 镜像id/镜像名称 删除镜像
    -f 表示强制删除镜像,(之前启动过的容器没有删除会提示删除失败,加f会强制删除)
  9. docker rm 容器id/容器名称 删除容器
  10. docker inspect 容器id 查看容器的更多信息
  11. docker cp 容器id:容器内路径 主机目的路径 将容器内文件拷贝到宿主机
  12. docker cp 主机目的路径 容器id:容器内路径 将宿主机内文件拷贝到容器

docker进阶命令

  1. docker commit -a "作者" -m "提示信息" 容器id 自定义名:版本号 docker提交新的镜像
  2. docker stop $(docker ps -a -q) 停止所有的容器
  3. docker rm $(docker ps -a -q) 删除所有容器
  4. docker stop $(docker ps -q) & docker rm -f $(docker ps -aq) 一条命令实现停用并删除所欲容器
  5. docker rmi $(docker images -q) 删除所有的镜像(谨慎使用)

mysql配置各类软件

安装mysql

  1. docker run -d -p 3306:3306 --name my_mysql -e MYSQL_ROOT_PASSWORD=123456 mysql:latest启动mysql容器
  2. docker exec -it mysqlserver bash 进入mysql容器
  3. mysql -uroot -p 登陆mysql
  4. 开启远程访问权限
    use mysql;
    select host,user from user;
    ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';
    flush privileges;

mysql主从同步设置

新建目录和配置文件
  1. mkdir -pv /home/mysql/master/conf

  2. mkdir -pv /home/mysql/master/data

  3. 在conf目录下新建my.cnf

  4. [mysqld]
    server_id = 1
    log-bin= mysql-bin
    
    read-only=0
    replicate-ignore-db=mysql
    replicate-ignore-db=sys
    replicate-ignore-db=information_schema
    replicate-ignore-db=performance_schema
    ###引用默认配置
    !includedir /etc/mysql/conf.d/
    !includedir /etc/mysql/mysql.conf.d/
    
  5. 需要忽略指定库或者指定表

  6. binlog-ignore-db = test (主从同步时忽略test库)[忽略库的字段]
    binlog-do-db = test (需要同步的数据库,不在内的不同步)
    replicate-wild-do-table=db_name.% (只复制哪个库的哪个表,格式:库名.表名)
    replicate-wild-ignore-table=mysql.% (忽略哪个库的哪个表,格式:库名.表名)
    
    创建master主容器
  7. docker run --name master-mysql -d -p 3307:3306 -e MYSQL_ROOT_PASSWORD=123456 -v /home/mysql/master/data:/var/lib/mysql -v /home/mysql/master/conf/my.cnf:/etc/mysql/my.cnf mysql:5.7.34

  8. 进入master主容器 docker exec -it master-mysql bash

  9. 进入msyql mysql -u root -p

创建一个只能进行主从同步的账户
  1. GRANT REPLICATION SLAVE ON *.* to 'backup'@'%' identified by '123456'; 
    这里表示创建一个slaver同步账号backup,允许访问的IP地址为%,%表示通配符
    或者使用
    GRANT REPLICATION SLAVE ON *.* to 'backup'@'172.17.0.%' identified by '123456'; 
    表示只有172.17.0的网段可以访问
    
  2. 查看状态,记住File、Position的值,在Slave中将用到

    mysql> show master status\G;
    *************************** 1. row ***************************
                 File: mysql-bin.000003
             Position: 439
         Binlog_Do_DB: 
     Binlog_Ignore_DB: 
    Executed_Gtid_Set: 
    1 row in set (0.00 sec)
    
    ERROR: 
    No query specified
    
    
配置从服务器(slave)
  1. 建立主服务的配置目录,用于存放配置
    mkdir -pv /home/mysql/slave/conf

  2. 建立从服务器的数据存储目录
    mkdir -pv /home/mysql/slave/data

  3. 配置目录下增加my.cnf配置

    [mysqld]
    server_id = 2
    log-bin= mysql-bin
    
    read-only=0
    replicate-ignore-db=mysql
    replicate-ignore-db=sys
    replicate-ignore-db=information_schema
    replicate-ignore-db=performance_schema
    ###引用默认配置
    !includedir /etc/mysql/conf.d/
    !includedir /etc/mysql/mysql.conf.d/
    
  4. 创建slave从容器
    docker run --name slave-mysql -d -p 3308:3306 -e MYSQL_ROOT_PASSWORD=123456 -v /home/mysql/slave/data:/var/lib/mysql -v /home/mysql/slave/conf/my.cnf:/etc/mysql/my.cnf mysql:5.7.34

  5. 进入master主容器
    docker exec -it slave-mysql bash

  6. 进入msyql
    mysql -u root -p

  7. 和主服务建立连接

    change master to master_host='172.17.0.2',master_user='backup',master_password='123456',master_log_file='mysql-bin.000003',master_log_pos=0,master_port=3306;
    
    注意:
    master_host 可以通过 docker inspect XXX(容器名或者id) 获取。这里连接的是主服务,所有XXX是mastermysql. 或者用 docker inspect mastermysql |grep ‘IPAddress’
    master_user 在主库创建的用户
    master_password 用户密码
    master_log_file 通过在主服务 show master status\G; 获取
    master_port 主服务对外提供的对口号
    
  8. 启动从服务同步
    start slave;

  9. 查看从服务状态

show slave status\G;

说明:
Slave_IO_State: Waiting for master to send event ,表示成功了。Connecting to master 多半是连接不通
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
如何上面3个状态都正常,那么就是没有问题了。

docker run 命令

image-20210608182420082

docker自定义jdk镜像

  1. 新建Dockerfile文件

    FROM centos:7
    MAINTAINER suren
    ADD jdk-8u121-linux-x64.tar.gz /usr/local
    ENV JAVA_HOME /usr/local/jdk1.8.0_121
    ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
    ENV PATH $PATH:$JAVA_HOME/bin
    CMD java -version 
    
  2. 构建镜像:docker build -t suren_jdk1.8.0_121 .

  3. 运行镜像:docker run -d ac84bde53958

docker自定义springboot项目

  1. 新建Dockerfile文件

    FROM suren_jdk1.8.0_121
    MAINTAINER suren
    ADD springboot-web-1.0.0.jar /opt
    RUN chmod +x /opt/springboot-web-1.0.0.jar
    CMD java -jar /opt/springboot-web-1.0.0.jar
    
  2. 构建镜像:docker build -t springboot-web-jar .

  3. 运行镜像:docker run -d -p 18080:18080 ac84bde53958

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值