docker 简单使用

安装docker

(1)yum 包更新到最新
sudo yum update
(2)安装需要的软件包, yum-util 提供yum-config-manager功能,另外两个是devicemapper驱动依赖的
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
(3)设置yum源为阿里云
sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
(4)安装docker
sudo yum install docker-ce
(5)安装后查看docker版本
docker -v

docker 常用命令

#启动docker:
systemctl start docker
#停止docker:
systemctl stop docker
#重启docker:
systemctl restart docker
#开机启动:
systemctl enable docker
#查看docker概要信息
docker info
#查看docker帮助文档
docker --help

#查看安装了的镜像
docker images

#搜索镜像
docker search 镜像名称
#删除镜像
docker rmi 镜像ID
#删除所有镜像
docker rmi `docker images -q`

#查看正在运行的容器
docker ps
#查看所有容器(可以看到容器运行的状态)   
docker ps –a
#启动容器
docker run -it --name=容器名称 镜像名称:标签(或者镜像ID) /bin/bash
#退出当前容器
exit
#守护式方式创建容器:
docker run -di --name=容器名称 镜像名称:标签(或者镜像ID)
#登录守护式容器方式:
docker exec -it 容器名称 (或者容器ID)  /bin/bash
#停止容器:要在 docker ps看到的才能停止
docker stop 容器名称(或者容器ID)
#启动容器:
docker start 容器名称(或者容器ID)
#文件拷贝到容器内可以使用cp命令
docker cp 需要拷贝的文件或目录 容器名称:容器目录
#将文件从容器内拷贝出来
docker cp 容器名称:容器目录 需要拷贝的文件或目录
#目录挂载  将本地目录 /usr/local/text和 远程目录 /usr/local/myhtml 时时同步
docker run -di -v /usr/local/text:/usr/local/myhtml --name=自定义容器名 镜像名
#查看容器详细信息
docker inspect 容器名称(容器ID) 
#删除容器
docker rm 容器名称(容器ID)
#删除运行中的容器
docker rm -f  容器名称(容器ID)

docker 安装redis

docker search redis
docker pull redis
配置redis 配置文件
vi /usr/local/docker/redis.conf
bind 127.0.0.1 #注释掉这部分,这是限制redis只能本地访问
protected-mode no #默认yes,开启保护模式,限制为本地访问
daemonize no#默认no,改为yes意为以守护进程方式启动,可后台运行,除非kill进程,改为yes会使配置文件方式启动redis失败
databases 16 #数据库个数(可选),我修改了这个只是查看是否生效。。
dir  ./ #输入本地redis数据库存放文件夹(可选)
appendonly yes #redis持久化(可选)
requirepass 密码
daemonize 选项需要设为no或者注释掉  通过docker启动redis要将这个配置设置为no
#docker启动redis命令

docker run -p 
6379:6379 #-p 6379:6379 端口映射:前表示主机部分,:后表示容器部分。
--name myredis #--name myredis  指定该容器名称
-v /usr/local/docker/redis.conf:/etc/redis/redis.conf  #-v 挂载目录下的配置文件 后面为docker容器地址
-v /usr/local/docker/data:/data #持久化目录绑定
-d redis redis-server /etc/redis/redis.conf  #执行redis-server命令

docker 安装mysql

docker search mysql
docker pull mysql
#启动mysql
docker run 
-p 3306:3306  
--restart=always 
--privileged=true 
--name mysql
-v /opt/mysql/data:/var/lib/mysql 
-v /usr/local/docker/my.cnf:/etc/mysql/my.cnf 
-e MYSQL_ROOT_PASSWORD="Lizhiyu123456"  #初始密码
-d mysql 
#docker ps  执行成功后进入
sudo docker exec -it mysql bash
mysql -uroot -p1Lizhiyu123456	
use mysql;
grant all privileges  on *.* to root@'%' identified by "password";
flush privileges;

docker 安装nginx

docker images nginx
docker pull nginx
#启动
docker run -d 
-p 9091:80 
--name nginx 
-v /usr/local/docker/nginx/html:/usr/share/nginx/html  #静态文件文件夹
-v /usr/local/docker/nginx.conf:/etc/nginx/nginx.conf  #配置文件文件夹
-v /usr/local/docker/logs:/var/log/nginx  #日志文件
--privileged=true nginx

docker 安装 nacos

docker images nacos/nacos-server
docker pull nacos/nacos-server
docker  run --name nacos -d -p 8848:8848 --privileged=true --restart=always -e JVM_XMS=256m -e JVM_XMX=256m -e MODE=standalone -e PREFER_HOST_MODE=hostname -v /home/nacos/logs:/home/nacos/logs nacos/nacos-server

docker网络模式

执行命令后发现三种模式,1桥连模式(默认是桥连模式) 2仅主机模式 3无网络模式
[root@iZ2ze8twmjge9w7qf1yhyyZ ~]# docker network ls
NETWORK ID          NAME                DRIVER              SCOPE
9949242bd897        bridge              bridge              local
f3713b3825b4        host                host                local
ceb2e8444508        none                null                local
能看到docker0一个这样的信息,这是docker虚拟网桥
[root@iZ2ze8twmjge9w7qf1yhyyZ ~]# ip addr 
docker0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default 
    link/ether 02:42:6d:3e:f1:24 brd ff:ff:ff:ff:ff:ff
    inet 172.18.0.1/16 brd 172.18.255.255 scope global docker0
       valid_lft forever preferred_lft forever

桥接模式

每当以桥接模式启动一个容器,就会多一个网卡,每个网卡通过docker0连网(是桥连的话就用通过自己的网卡再通过docker0连网),通过docker0网桥进行通信
安装工具
yum -y install net-tools route -n 查看路由 (在容器中能看到所有ip会映射到docker0的ip)
yum install -y bridge-utils brctl show 查看网桥桥接情况(在主机器中能看到所有容器网卡id,跟docker0桥接)

[root@iZ2ze8twmjge9w7qf1yhyyZ ~]# brctl show
bridge name     bridge id               STP enabled     interfaces
docker0         8000.02426d3ef124       no              veth1ecfc12 //网卡id,ip addr中看到的容器网卡id,每当启动一个容器会增加一个网卡id
                                                        veth476fd96
                                                        veth9d1d6db
                                                        vethbd9c817

容器和主机间关系如下
在这里插入图片描述

host模式

不会创建新的ip,和宿主机使用同一个ip,会占用宿主机一个端口
优点:效率高
缺点: 端口资源被占用就不能再用了

docker run -itd --net=host centos:7 /bin/bash 
查看防火墙状态
firewall-cmd --state
关闭防火墙某个端口
firewall-cmd --zone=public --add-port=8088/tcp --permanent
重新加载防火墙
firewall-cmd --reload

none模式

没有网络,启动的容器没有ip

docker run -itd --net=none centos:7 /bin/bash 

容器间单向通信LINK技术

默认使用桥接模式创建的容器,容器和容器相互之间是可以ping通的
如果想要容器之间仅仅单向通信,可以通过link技术

实践

启动mysql数据库容器:
docker run --name mydb -e MYSQL_ROOT_PASSWORD=abc123456 -d mysql:5.7
启动tomcat应用容器并link到mysql数据库:
docker run -itd --name tomcat1 --link mydb tomcat:tag
注意:mydb 这个容器一定要存在!

场景:tomcat容器访问mysql,而mysql不用访问tomcat
原理:对host进行了解析

如果没有ping命令的话,如下命令
apt-get update && apt-get install iputils-ping

Dockerfile

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值