小白学习docker入门到放弃

2023/03/17 docker

docker 自学笔记

一、docker 安装

1、mac下安装
brew install docker

2、docker配置
{
  "builder": {
    "gc": {
      "defaultKeepStorage": "20GB",
      "enabled": true
    }
  },
  "experimental": false,
  "features": {
    "buildkit": true
  },
  "insecure-registries": [
    "127.0.0.1:5000"
  ],
  "registry-mirrors": [
    "https://dfggrvdfvdf.mirror.aliyuncs.com"
  ]
}

二、容器三要素

容器,镜像,仓库

三、ubuntu 安装

 1、拉镜像
 docker pull ubuntu
 
 2、使用镜像创建ubuntu容器
 docker run -it --name=mylinux -d ubuntu  /bin/bash
 
 3、查看运行的所有容器
 docker ps -a
 
 4、进入容器交互终端
 docker exec -it mylinux /bin/bash
 
 5、强制删除容器
 docker rm -f mylinux
 
 6、停止容器
 docker stop  mylinux
 
 7、删除容器
 docker rm mylinux
 
 8、查看容器的进程
 docker top mylinux
 
 9、将容器的内容拷贝到宿主机
 docker cp 00293c6120d5:/home/a.txt  /tmp/
 
 10、将容器被导出
 docker export 00293c6120d5 > abc.tar
 
 11、将容器导出镜像
 cat abc.tar| docker import - lft/ubuntu:3.9
 
 12、还原容器
 docker run -it --name=newlinux -d a97f0637883b  /bin/bash
 
 
 13、提交容器副本
 docker commit -m="new linux image" -a="zhangsan" 8ab3fe9feda7 newubuntu:1.8
 
 14、启动新生成的镜像
 docker run -it --name=mylinux -d  9bb4ce12c704  /bin/bash
 
 注意⚠️
 docker exec 不会退出容器
 docker attach 会退出容器
 

四、私有库搭建

  1、docker pull registry
  
  2、docker run -d --name registry -p 5000:5000 -v /tmp/docker/registry:/tmp/registry registry
  
  3、docker tag hello:v1 127.0.0.1:5000/hello:v1
  
  4、配置daemon.json并重启docker
  { 
    "insecure-registries" : [ "your-server-ip:5000" ] 
  }
  
  5、推送到私有库
  docker push 127.0.0.1:5000/hello:v1
  
  6、拉取镜像
  docker pull 127.0.0.1:5000/hello:v1
    
  7、跑起来  
  docker run -it --name hello -p 8080:8080 -d 127.0.0.1:5000/hello:v1
  
    

五、容器卷

 1、目录挂载
 docker run -it --name mylinux  --privileged=true -v /tmp/mylinux/data:/tmp/data ubuntu /bin/bash

六、安装tomcat

docker run -it --name mytomcat  -p 8888:8080 -d tomcat:8.0

七、安装mysql

1、简单安装
docker run --name my-mysql -e MYSQL_ROOT_PASSWORD=123456 -p 3306:3306 -d mysql:8.0

2、企业级安装
docker run -d -p 3306:3306 --privileged=true \
-v /Users/liufangting/home/mysql/log:/var/log/mysql \
-v /Users/liufangting/home/mysql/data:/var/lib/mysql \
-v /Users/liufangting/home/mysql/conf:/etc/mysql/conf.d \
-e MYSQL_ROOT_PASSWORD=123456 \
--name mysql-master \
mysql


[client]
default-character-set=utf8

[mysqld]
character-set-server=utf8
default-storage-engine=INNODB


3、集群步骤
1)新建mysql主服务
docker run -d -p 3307:3306 --privileged=true \
-v /Users/liufangting/home/mysql/3307/log:/var/log/mysql \
-v /Users/liufangting/home/mysql/3307/data:/var/lib/mysql \
-v /Users/liufangting/home/mysql/3307/conf:/etc/mysql \
-e MYSQL_ROOT_PASSWORD=123456 \
--name mysql-master \
mysql:5.7
2)mysql-master的文件配置


3)mysql-master重启
docker restart mysql-master

4)登陆-mysql-master创建从服务账号

CREATE USER 'slave'@'%' IDENTIFIED BY '123456';
#给master用户配置复制权限,可访问库为所有,可访问地址为所有
grant replication slave ,replication client on *.* to 'slave'@'%';

5)新建从服务器
docker run -d -p 3308:3306 --privileged=true \
-v /Users/liufangting/home/mysql/3308/log:/var/log/mysql \
-v /Users/liufangting/home/mysql/3308/data:/var/lib/mysql \
-v /Users/liufangting/home/mysql/3308/conf:/etc/mysql \
-e MYSQL_ROOT_PASSWORD=123456 \
--name mysql-slave \
mysql:5.7

6)修改mysql-slave文件的配置
[mysqld]
## 设置server ID 同一局域网中需要唯一
server_id=102
## 指定不需要同步的数据库名称
binlog-ignore-db=mysql
## 开启二进制日志功能
log-bin=mall-mysql-bin
## 设置二进制日志使用内存大小
binlog_cache_size=1M
## 设置使用二进制的日志格式
binlog_format=mixed
## 二进制日志过期清理时间
expire_logs_days=7
## 跳过主层复制遇到的错误
slave_skip_errors=1062

## 配置中继日志
reply_log=mall-mysql-repay-bin
##slave 将复制事件写进自己的二进制日志
log_slave_updates=1
## slave设置为只读
read_only=1

7)重启mysql-slave
docker restart mysql-slave


8)登陆mysql-master查看同步状态
show master status;

9)从数据库配置主层复制

change master to master_host="172.17.0.2",
master_user="slave",master_password='123456',master_port=3306,
master_log_file='mall-mysql-bin.000001',master_log_pos=1097,
master_connect_retry=30;


show slave status\G;
Slave_IO_Running: No
Slave_SQL_Running: No

10)从数据库开启主从同步
start slave

show slave status\G;

Slave_IO_Running: Yes
Slave_SQL_Running: Yes

八、redis 安装

1、拉取镜像
docker pull redis

2、简单安装redis服务
docker run -it --name myredis -d redis

3、企业级安装
docker run -d -p 6379:6379  --privileged=true \
-v /Users/liufangting/home/redis/conf:/usr/local/etc/redis \
-v /Users/liufangting/home/redis/data:/data \
--name myredis redis redis-server /usr/local/etc/redis/redis.conf 
  

九、docker自定义网络

1、新建网络
docker network create lft

2、使用自己新建的网络运行容器
docker run -it --name mytomcat  -p 8888:8080  --network lft -d tomcat:8.0

docker run -it --name mytomcat2  -p 8889:8080  --network lft -d tomcat:8.0

docker exec -it mytomcat /bin/bash

ping mytomcat2

十、docker-compose 使用

 mac桌面版已经安装了docker-compose
 
 1、开发微服务项目
 
 2、配置dockerfile文件生成镜像
 
 3、配置docker-compose文件启动容器
  docker-compose up
  相当于把多个docker run 一健运行
  
  

十一、监控docker容器

docker run -p 9000:9000 -p 8000:8000 --name portainer \
--restart=always \
-v /var/run/docker.sock:/var/run/docker.sock \
-v /Users/liufangting/home/portainer/data:/data \
-d portainer/portainer
 

十二、使用docker创建etcd容器

version: '3'

networks:
  etcd-network:

services:
  etcd:
    container_name: "etcd_server"
    image: bitnami/etcd:latest
    privileged: true
    ports:
      - "2379:2379"
      - "2380:2380"
    environment:
      - "ETCD_ADVERTISE_CLIENT_URLS=http://0.0.0.0:2379"
      - "ETCD_LISTEN_CLIENT_URLS=http://0.0.0.0:2379"
      - "ETCD_LISTEN_PEER_URLS=http://0.0.0.0:2380"
      - "ETCD_INITIAL_ADVERTISE_PEER_URLS=http://0.0.0.0:2380"
      - "ALLOW_NONE_AUTHENTICATION=no"
      - "ETCD_ROOT_PASSWORD=123456"

    volumes:
      - /Users/liufangting/home/etcd3/data:/bitnami/etcd/data
    networks:
      - etcd-network
  etcd_keeper:
    hostname: etcdkeeper
    container_name: "etcdkeeper"
    image: evildecay/etcdkeeper:latest
    ports:
      - "8099:8080"
    networks:
      - etcd-network


十三、etcd管理界面

ppNlO00.png

web ui

需要指定etcd服务地址,这里我指定容器名称,因为etcd keeper 和etcd是在同一网络下,所以可以通过
容器名称作为域名,是互相能ping通的

总结

这篇文章主要介绍了docker的安装以及基本命令的使用,后面又通过实例加深大家对docker的理解和运用。

Search

    Table of Contents