docker基本操作

Docker 常用命令

常规命令

clear# 清屏
exit #退出
mkdir -p /root/mysql  #创建目录
mkdir   -p #递归创建目录
touch /root/mysql/abc.txt #创建文件
:wq 	# vim 文档里,保存退出
:w! 	# 不保存,退出

centos7 扩容

在这里插入图片描述在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

centos7 安装 docker

安装Docker

Docker 分为 CE 和 EE 两大版本。CE 即社区版(免费,支持周期 7 个月),EE 即企业版,强调安全,付费使用,支持周期 24 个月。

Docker CE 分为 stable testnightly 三个更新频道。

官方网站上有各种环境下的 安装指南,这里主要介绍 Docker CE 在 CentOS上的安装。

CentOS安装Docker

Docker CE 支持 64 位版本 CentOS 7,并且要求内核版本不低于 3.10, CentOS 7 满足最低内核的要求,所以我们在CentOS 7安装Docker。

卸载(可选)

如果之前安装过旧版本的Docker,可以使用下面命令卸载:

yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-selinux \
                  docker-engine-selinux \
                  docker-engine \
                  docker-ce

安装docker

首先需要大家虚拟机联网,安装yum工具

yum install -y yum-utils \
           device-mapper-persistent-data \
           lvm2 --skip-broken

然后更新本地镜像源:

# 设置docker镜像源
yum-config-manager \
    --add-repo \
    https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
    
sed -i 's/download.docker.com/mirrors.aliyun.com\/docker-ce/g' /etc/yum.repos.d/docker-ce.repo

yum makecache fast

然后输入命令:

yum install -y docker-ce

docker-ce为社区免费版本。稍等片刻,docker即可安装成功。

启动docker

Docker应用需要用到各种端口,逐一去修改防火墙设置。非常麻烦,因此建议大家直接关闭防火墙!

启动docker前,一定要关闭防火墙后!!

启动docker前,一定要关闭防火墙后!!

启动docker前,一定要关闭防火墙后!!

# 关闭
systemctl stop firewalld
# 禁止开机启动防火墙
systemctl disable firewalld

通过命令启动docker:

systemctl start docker  # 启动docker服务

systemctl stop docker  # 停止docker服务

systemctl restart docker  # 重启docker服务
# docker 服务开机自启动命令
systemctl enable docker.service
# 关闭docker 服务开机自启动命令
systemctl disable docker.service

然后输入命令,可以查看docker版本:

docker -v

配置镜像加速

docker官方镜像仓库网速较差,我们需要设置国内镜像服务:

参考阿里云的镜像加速文档:https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors

配置镜像加速器

针对Docker客户端版本大于 1.10.0 的用户

您可以通过修改daemon配置文件/etc/docker/daemon.json来使用加速器

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

直接运行上述命令即可,

(https://2jr6m724.mirror.aliyuncs.com)

可替换为自己的阿里云docker镜像加速器

CentOS7安装DockerCompose

下载

Linux下需要通过命令下载:

# 安装
curl -L https://github.com/docker/compose/releases/download/1.29.1/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose

上传到/usr/local/bin/目录也可以。

修改文件权限

修改文件权限:

# 修改权限
chmod +x /usr/local/bin/docker-compose

Base自动补全命令:

# 补全命令
curl -L https://raw.githubusercontent.com/docker/compose/1.29.1/contrib/completion/bash/docker-compose > /etc/bash_completion.d/docker-compose

如果这里出现错误,需要修改自己的hosts文件:

echo "199.232.68.133 raw.githubusercontent.com" >> /etc/hosts
让外网访问2375端口
## 修改docker服务文件
vi  /lib/systemd/system/docker.service
 
## 将原来的ExecStart前面加上#号注释掉,然后再下面追加一行
ExecStart=/usr/bin/dockerd    -H tcp://0.0.0.0:2375    -H unix:///var/run/docker.sock
 
## 重新加载配置
systemctl daemon-reload
 
## 重启docker服务
systemctl restart docker.service

Docker镜像仓库

搭建镜像仓库可以基于Docker官方提供的DockerRegistry来实现。

简化版镜像仓库

Docker官方的Docker Registry是一个基础版本的Docker镜像仓库,具备仓库管理的完整功能,但是没有图形化界面。

搭建方式比较简单,命令如下:

docker run -d \
    --restart=always \
    --name registry	\
    -p 5000:5000 \
    -v registry-data:/var/lib/registry \
    registry

命令中挂载了一个数据卷registry-data到容器内的/var/lib/registry 目录,这是私有镜像库存放数据的目录。

访问http://YourIp:5000/v2/_catalog 可以查看当前私有镜像服务中包含的镜像

带有图形化界面版本

使用DockerCompose部署带有图象界面的DockerRegistry,命令如下:

version: '3.0'
services:
  registry:
    image: registry
    volumes:
      - ./registry-data:/var/lib/registry
  ui:
    image: joxit/docker-registry-ui:static
    ports:
      - 8080:80
    environment:
      - REGISTRY_TITLE=qwerqwe
      - REGISTRY_URL=http://registry:5000
    depends_on:
      - registry

镜像命令

docker 分,镜像 和 容器

镜像在远程仓库, 容器在本地运行

docker images
#查询当前机器上,有多少个镜像,版本是什么,等信息
docker  search  tomcat
#查询远端仓库镜像 tomcat
docker pull mysql:5.6
#下载远端仓库镜像,mysql 版本为5.6 
docker pull mysql
#可以不写版本,默认下载最新版 latest
 docker rmi mysql
#删除指定的 镜像
 docker ps 
#查询当前机器上有多少正在运行的容器
 docker ps -a
#查询当前机器上,有多少容器,包括已经关闭的容器
docker run -id -p 3307:3306 --name=c_mysql -v /root/mysql/conf:/etc/mysql/conf.d  -v /root/mysql/logs:/logs  -v /root/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 mysql:5.6
#-v 挂载
#访问本主机的 /root/mysql/conf
#等于是 访问容器的 /etc/mysql/conf.d
#删除容器,也不会删除容器内数据
docker run -id -p 3307:3306 --name=c_mysql -v /root/mysql/conf:/etc/mysql/conf.d  -v /root/mysql/logs:/logs  -v /root/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 mysql:5.6
# -p 映射端口号
#3307 是本主机端口, 
#3306 是容器端口号,
#访问本主机3307,等于说访问 容器 3306

容器命令

部署 pgsql

docker pull postgres:14.2


docker run --name c_postgres \
 --restart=always \
 -e POSTGRES_PASSWORD=123456  \
 -p 5432:5432 \
 -v /root/postgresql/:/var/lib/postgresql/data  \
 -d  postgres:14.2

部署 mysql

docker pull mysql:5.6
创建docker容器
docker run -id -p 3306:3306 --name=c_mysql  --restart=always    -v /root/mysql/conf:/etc/mysql/conf.d  -v /root/mysql/logs:/logs  -v /root/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 mysql:5.6    --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci

说明:

docker run 启动 后 加命令
-i以交互模式运行容器,通常与 -t 同时使用;
-t为容器重新分配一个伪输入终端,通常与 -i 同时使用;
-d后台运行容器,并返回容器ID;

-p 3307:3306

​ 容器里的mysql3306端口,映射到主机3307端口,web访问3307,就等于是访问容器的3306端口.

–name=c_mysql

​ 给运行的容器起个名字为c_mysql,名字随便,不可重复

$pwd : 获取当前路径,例如在 /root/data3/ 目录下, 
$pwd/conf:/etc/myql/conf.d
就等于
/root/data3/conf:/etc/myql/conf.d
为了方便,这里用$pwd 代替了

-v $pwd/conf:/etc/myql/conf.d

​ 将当前主机目录下conf/my.cof挂载到容器的/etc/mysql/my.cnf配置目录

​ (c_mysql容器内,/etc/mysql/my.cnf目录,等于,主机conf/my.cof目录)

-v $pwd /logs:/logs

​ 将当前主机目录的/logs目录,挂载到容器的/logs 日志目录

-e MYSQL_ROOT_PASSWOED=123456

​ 初始化root用户密码

mysql:5.6

​ 指的是:用mysql:5.6的版本

停止docker 容器
docker stop c_mysql
#这里的 c_mysql 是自己起的名字
启动容器
docker start c_mysql
#这里的 c_mysql 是自己起的名字
删除 容器
docker rm  c_mysql
mkdir ~/mysql
cd ~/mysql
#此时,处于 /root/mysql/ 目录下 $pwd 就是路径

进入容器

进入c_mysql容器前,先看下本机ip,

ip addr 
#获得本机ip  192.168.0.110

在这里插入图片描述

docker exec -it c_mysql /bin/bash
#进入容器 c_mysql 

在这里插入图片描述

登陆mysql
mysql -uroot -p123456
#这里的123456 是之前设置的

在这里插入图片描述

mysql 部署完毕,

在这里插入图片描述

DataGrip登陆mysql

在这里插入图片描述

在这里插入图片描述

部署tomcat

docker pull tomcat
# 拉取镜像
mkdir ~/tomcat
cd ~/tomcat
#创建目录

在这里插入图片描述

# 此时,在/root/tomcat  目录下
docker run -id --name=c_tomcat  \
 -p 8080:8080  \
 -v $PWD:/usr/local/tomcat/webapps  \
 tomcat

在这里插入图片描述

mkdir /root/tomcat/text
cd /root/tomcat/text
vim  holle.html

在这里插入图片描述

在这里插入图片描述

保存退出

:wq

在这里插入图片描述

部署Nginx

#查询镜像
docker search nginx
#拉取镜像
docker pull nginx

#创建目录 /root/nginx
mkdir /root/nginx/conf
#进入
cd /root/nginx/conf
#编辑新文件
vim nginx.conf
#以下为文件内容
user  nginx; #设置nginx服务的系统使用用户
worker_processes  1; #工作进程数

error_log  /var/log/nginx/error.log warn; #nginx的错误日志
pid        /var/run/nginx.pid; #nginx启动时候的pid

events {
    worker_connections  1024; #每个进程允许的最大连接数
}

http { #http请求配置,一个http可以包含多个server

    #定义 Content-Type
    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;

    #日志格式 此处main与access_log中的main对应
    #$remote_addr:客户端地址
    #$remote_user:http客户端请求nginx认证的用户名,默认不开启认证模块,不会记录
    #$timelocal:nginx的时间
    #$request:请求method + 路由 + http协议版本
    #status:http reponse 状态码
    #body_bytes_sent:response body的大小
    #$http_referer:referer头信息参数,表示上级页面
    #$http_user_agent:user-agent头信息参数,客户端信息
    #$http_x_forwarded_for:x-forwarded-for头信息参数
    log_format  main  '$http_user_agent' '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    #访问日志,后面的main表示使用log_format中的main格式记录到access.log中
    access_log  /var/log/nginx/access.log  main;

    #nginx的一大优势,高效率文件传输
    sendfile        on;
    #tcp_nopush     on;

    #客户端与服务端的超时时间,单位秒
    keepalive_timeout  65;

    #gzip  on;
    server { #http服务,一个server可以配置多个location
        listen       80; #服务监听端口
        server_name  localhost; #主机名、域名
    
        #charset koi8-r;
        #access_log  /var/log/nginx/host.access.log  main;
    
        location / {
            root   /usr/share/nginx/html; #页面存放目录
            index  index.html index.htm; #默认页面
        }
    
        #error_page  404              /404.html;
    
        # 将500 502 503 504的错误页面重定向到 /50x.html
        error_page   500 502 503 504  /50x.html;
        location = /50x.html { #匹配error_page指定的页面路径
            root   /usr/share/nginx/html; #页面存放的目录
        }
    
        # proxy the PHP scripts to Apache listening on 127.0.0.1:80
        #
        #location ~ \.php$ {
        #    proxy_pass   http://127.0.0.1;
        #}
    
        # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
        #
        #location ~ \.php$ {
        #    root           html;
        #    fastcgi_pass   127.0.0.1:9000;
        #    fastcgi_index  index.php;
        #    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
        #    include        fastcgi_params;
        #}
    
        # deny access to .htaccess files, if Apache's document root
        # concurs with nginx's one
        #
        #location ~ /\.ht {
        #    deny  all;
        #}
    }
    include /etc/nginx/conf.d/*.conf;
}



#进入
cd /root/nginx 
#运行
docker run -id  --name=c_nginx  \
-p 80:80  \
-v $PWD/conf/nginx.conf:/etc/nginx/nginx.conf  \
> -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:5.0

Dockerfile文件

consul集群

参考文献
https://www.cnblogs.com/miaoying/p/10303067.html

####----虚拟机服务器上
#启动第一台
docker run --name consul1 -d -p 8500:8500 -p 8300:8300 -p 8301:8301 -p 8302:8302 -p 8600:8600 consul  agent -server -bootstrap-expect 2 -ui -bind=0.0.0.0 -client=0.0.0.0
#查看第一台ip
docker inspect --format '{{ .NetworkSettings.IPAddress }}' consul1
##得到第一台的ip为  172.17.0.2
#启动第二台
docker run --name consul2 -d -p 8501:8500 consul agent -server -ui -bind=0.0.0.0 -client=0.0.0.0 -join 172.17.0.2
#启动第三台
docker run --name consul3 -d -p 8502:8500 consul agent -server -ui -bind=0.0.0.0 -client=0.0.0.0 -join 172.17.0.2
####----本地win10,启动第一个,cmd ,192.168.0.106是我局域网ip
consul agent -client=0.0.0.0 -bind=192.168.0.106  -data-dir /etc/consul.d -node=client-1
####----本地win10,启动第二个,cmd ,192.168.0.111 是虚拟机ip,一个虚拟机部署了3台server
consul join 192.168.0.111 

访问 192.168.0.111:8500
在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值