1.yum包更新到最新
sudo yum update
2.安装所需的软件包
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
4.1 安装containerd.io-1.2.6-3.3.el7.x86_64.rpm
dnf install https://download.docker.com/linux/centos/7/x86_64/stable/Packages/containerd.io-1.2.6-3.3.el7.x86_64.rpm
5.安装后查看docker版本
docker -v
6.启动docker并加入开机自动启动
systemctl start docker
systemctl enable docker
7.重新加载配置文件
systemctl reload docker
8.重启docker
systemctl restart docker
dnf install https://download.docker.com/linux/centos/7/x86_64/stable/Packages/containerd.io-1.2.6-3.3.el7.x86_64.rpm
ustc是老牌的linux镜像服务提供者,ustc的docker镜像加速器速度很快。ustc docker mirror 的优势就是不需要注册,是真正的公共服务。
1.编辑该文件
vi /etc/docker/daemon.json
2.在该文件中输入如下内容:
{
"registry-mirrors":["https://docker.mirrors.ustc.edu.cn"]
}
1.启动docker
systemctl start docker
2.查看docker启动状态
systemctl status docker
3.停止docker
systemctl stop docker
4.重启docker
systemctl restart docker
5.开机自启
systemctl enable docker
6.查看概要信息
docker info
7.查看docker帮助文档
docker --help
1.查看镜像
docker images
1.搜索镜像(搜索的是互联网上的镜像)
docker search 镜像名称
1.拉取镜像
docker pull centos:7
1.按镜像ID删除镜像
docker rmi 镜像ID
2.删除所有镜像
docker rmi 'docker images -q' (左上角的单引号)
1. 查看正在运行的容器
docker ps
2.查看所有的容器
docker ps -a
3.查看最后一次运行的容器
docker ps -l
4.查看停止的容器
docker ps -f status-exited
1.交互式方式创建容器
docker run -it --name=容器名称 镜像名称:标签 /bin/bash
2.退出当前容器
exit
3.守护方式创建容器
docker run -di --name=容器名称 镜像名称:标签
4.登录守护式容器方式
docker exec -it 容器名称(或者容器id) /bin/bash
1.进入守护方式进行的容器
docker exec -it mycentos2(容器名称) /bin/bash
1.停止容器
docker stop 容器名称(或者容器ID)
2.启动容器
docker start 容器名称(或者容器ID)
docker cp 文件路径 容器名称:容器目录
docker cp 容器名称:容器目录 需要拷贝的文件或者目录
1.就是目录共享
docker run -di -v /usr/local/myhtml:/usr/local/myhtml --name-mycentos3 centos:7
docker inspect --format='{{.NetworkSettings.IpAddress}}' mycentos3
1.移除容器之前必须先停掉容器
docker rm mycentos3
1.docker pull ubuntu:18.04
1.docker run -di --name=myubuntu ubuntu:18.04 /bin/bash
1.docker inspect myubuntu
1.docker ps
1.进入守护方式进行的容器
docker exec -it myubuntu(容器名称) /bin/bash
解决问题
1.apt-get update
2.apt-get-upgrade
3.apt-get install curl 安装成功
docker search jdk
docker pull openjdk
docker run -d -it --name myopenjdk openjdk /bin/bash
格式: docker run -d -it [镜像名称或id] /bin/bash
注意: -it /bin/bash 一定不能省了,不然jdk起不来,或者懒人写法 -it bash 也可以。
docker exec -it myopenjdk /bin/bash
1.拉取mysql镜像
docker pull centos/mysql-57-centos7
2.创建容器
docker run -di --name=tensquare_mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql
-p代表端口映射,格式为 宿主机映射端口:容器运行端口
-e代表添加环境变量 MYSQL_ROOT_PASSWORD 是root用户的登录密码
3.进入mysql容器
docker exec -it tensquare_mysql /bin/bash
4.登录Mysql
mysql -u root -p
1.拉取postgreSQL镜像(自带postgis)
docker pull kartoza/postgis:9.6-2.4
2.创建容器
docker run -di --name=postgresql -p 5432:5432 --restart always -e POSTGRES_USER='postgres' -e MYSQL_ROOT_PASSWORD=123456 ALLOW_IP_RANGE=0.0.0.0/0 kartoza/postgis:9.6-2.4
ALLOW_IP_RANGE=0.0.0.0/0 允许所有主机访问
-p代表端口映射,格式为 宿主机映射端口:容器运行端口
-e代表添加环境变量 MYSQL_ROOT_PASSWORD 是root用户的登录密码
3.进入postgreSQL容器
docker exec -it postgresql /bin/bash
4.登录postgreSQL
//将当前root切换成postgres
su postgres
输入用户名,密码再命令执行完后,再根据提示输入
psql -U postgres -W
输入密码,登录成功
1、从容器里面拷文件到宿主机?
docker cp 容器名:要拷贝的文件在容器里面的路径 要拷贝到宿主机的相应路径
示例: 假设容器名为testtomcat,要从容器里面拷贝的文件路为:/usr/local/tomcat/webapps/test/js/test.js, 现在要将test.js从容器里面拷到宿主机的/opt路径下面,那么命令应该怎么写呢?
docker cp testtomcat:/usr/local/tomcat/webapps/test/js/test.js /opt
2、从宿主机拷文件到容器里面
docker cp 要拷贝的文件路径 容器名:要拷贝到容器里面对应的路径
示例:假设容器名为testtomcat,现在要将宿主机/opt/test.js文件拷贝到容器里面的/usr/local/tomcat/webapps/test/js路径下面,那么命令该怎么写呢?
docker cp /opt/test.js testtomcat:/usr/local/tomcat/webapps/test/js
1.docker pull percona:5.7.23
2.docker run -di --name=percona -v /home/data/mysql-data:/var/lib/mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=root percona:5.7.23
3.docker exec -it percona /bin/bash
1.拉取镜像
docker pull tomcat:7-jre7
2.创建容器
创建容器 -p表示地址映射
-v表示目录映射
docker run -di --name=mytomcat -p 9000:8080
-v /usr/local/webapps:/usr/local/tomcat/webapps tomcat:7-jre7
1. systemctl status firewalld 查看防火墙状态
2. systemctl disable firewalld 关闭防火墙
3. docker pull zookeeper:3.5 下载zookeeper镜像
4. docker images 查看镜像
5. docker run -di --name=zk -p 2181:2181 zookeeper:3.5 以守护方式(后台运行)运行容器
6. docker exec -it zk /bin/bash 进入容器
1.拉取镜像
docker pull nginx
2.创建nginx容器
docker run -di --name=mynginx -p 80:80 nginx
1.拉取镜像
docker pull redis
2.创建容器
docker run -di --name=myredis -p 6379:6379 redis
①. 下载镜像
docker pull elasticsearch:7.6.0
②. 安装elasticsearch
//创建一个elk文件夹, 后面的elk日志采集系统的配置文件都放在这里面
mkdir /home/elk
//创建elasticsearch配置文件
vi /home/elk/elasticsearch.yml
//在里面添加如下配置:
cluster.name: "docker-cluster"
network.host: 0.0.0.0
# 访问ID限定,0.0.0.0为不限制,生产环境请设置为固定IP
transport.host: 0.0.0.0
# elasticsearch节点名称
node.name: node-1
# elasticsearch节点信息
cluster.initial_master_nodes: ["node-1"]
# 下面的配置是关闭跨域验证(可以不开启)
http.cors.enabled: true
http.cors.allow-origin: "*"
③. 创建并启动elasticsearch容器
docker run -di -p 9200:9200 -p 9300:9300 --name=elasticsearch -v /home/elk/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml elasticsearch:7.6.0
④. 之后通过9200端口在浏览器上访问(需要开启外网访问权限),有信息返回则成功;,像下面的信息:
{
"name" : "node-1",
"cluster_name" : "docker-cluster",
"cluster_uuid" : "7jUr1QFPQcSbDGG4A4c5Og",
"version" : {
"number" : "7.6.0",
"build_flavor" : "default",
"build_type" : "docker",
"build_hash" : "7f634e9f44834fbc12724506cc1da681b0c3b1e3",
"build_date" : "2020-02-06T00:09:00.449973Z",
"build_snapshot" : false,
"lucene_version" : "8.4.0",
"minimum_wire_compatibility_version" : "6.8.0",
"minimum_index_compatibility_version" : "6.0.0-beta1"
},
"tagline" : "You Know, for Search"
}
注意:如果需要添加插件时,需要将容器的插件目录映射到实际的路径中或者通过命令
(如安装ik分词器:docker cp ik elasticsearch:/usr/share/elasticsearch/plugins/)将其拷贝到容器中
可能遇到的问题
修改/etc/security/limits.conf ,添加如下内容:
修改/etc/sysctl.conf,追加内容
vm.max_map_count=655360
vm.max_map_count是限制一个进程可以拥有的VMA(虚拟内存区域)的数量
执行下面命令 修改内核参数马上生效,之后重启服务器和docker服务
sysctl ‐p
2. 启动失败显示如下日志信息
ERROR: [1] bootstrap checks failed
[1]: the default discovery settings are unsuitable for production use; at least one of [discovery.seed_hosts, discovery.seed_providers, cluster.initial_master_nodes] must be configured
这个是由于elasticsearch7是集群多节点的版本,需要在elasticsearch.yml中添加如下配置(我们已经在上面配置了无需再处理):
elasticsearch节点名称
node.name: node-1
elasticsearch节点信息
cluster.initial_master_nodes: [“node-1”]
error=>"Elasticsearch Unreachable: [http://192.168.6.128:9200/][Manticore::…
这个问题通常是由于安装在一台机器上的docker容器,防火墙开启的状态下,docker容器内部无法访问宿主机服务(能够访问非宿主机的其他局域网计算机的服务),解决方法如下3种:
配置防火墙规则firewall-cmd --zone=public --add-port={port}/tcp --permanent,并重载防火墙规则firewall-cmd --reload
firewall-cmd --zone=public --add-port=9200/tcp --permanent
firewall-cmd --reload
启动容器时使用–net host模式(docker的4种网络模式:https://www.jianshu.com/p/22a7032bb7bd)
关闭防火墙(不建议)
1.将容器保存为镜像
docker commit mynginx mynginx_i
2.镜像备份
docker save -o mynginx.tar mynginx_i
3.镜像恢复与迁移
首先我们先删除掉mynginx_img镜像,然后执行此命令进行恢复
docker load -i mynginx.tar
-i输入的文件 执行后再次查看镜像,可以看到镜像已经恢复
1.拉取私有仓库镜像
docker pull registery
2.启动私有仓库容器
docker run -di --name=registry -p 5000:5000 registry
3.打开浏览器 输入地址 http://192.168.184.141:5000/v2/_catalog看到{"registories":[]}表示私有仓库搭建成功并且内容为空
4.修改daemon.json
vi /etc/docker/daemon.json
添加如下内容.保存退出
{"insecure-registries":["192.168.184.141:5000"]}
此步用于让docker信任私有仓库地址