curl -sSL https://get.daocloud.io/docker | shyum 包更新到最新yum updateyum -y install yum-utils安装需要的软件包, yum-util 提供yum-config-manager功能,另外两个是devicemapper驱动依赖的yum install -y yum-utils device-mapper-persistent-data lvm2设置yum源为阿里云yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo安装dockeryum install docker-ce安装后查看docker版本docker -v//docker 默认是iptable ,把docker交给firewallfirewall-cmd --permanent --zone=trusted --change-interface=docker0firewall-cmd --reload设置镜像映射vi /etc/docker/daemon.json输入阿里云镜像{ "registry-mirrors": ["https://d8ewkl2j.mirror.aliyuncs.com"]}systemctl daemon-reload #配置文件生效启动docker:systemctl start docker停止docker:systemctl stop docker重启docker:systemctl restart docker查看docker状态:systemctl status docker开机启动:systemctl enable docker查看运行的容器docker ps 查看所有容器包括没运行的 docker ps -a
1、安装pip
yum -y install epel-release
yum install python3-pip
pip3 install --upgrade pip
2、安装docker-compose
pip3 install docker-compose
3、查看版本
docker-compose version
docker-compose up -d nginx 构建建启动nignx容器
docker-compose exec nginx bash 登录到nginx容器中
docker-compose down 删除所有nginx容器,镜像
docker-compose ps 显示所有容器
docker-compose restart nginx 重新启动nginx容器
docker-compose run --no-deps --rm php-fpm php -v 在php-fpm中不启动关联容器,并容器执行php -v 执行完成后删除容器
docker-compose build nginx 构建镜像 。
docker-compose build --no-cache nginx 不带缓存的构建。
docker-compose logs nginx 查看nginx的日志
docker-compose logs -f nginx 查看nginx的实时日志
docker-compose config -q 验证(docker-compose.yml)文件配置,当配置正确时,不输出任何内容,当文件配置错误,输出错误信息。
docker-compose events --json nginx 以json的形式输出nginx的docker日志
docker-compose pause nginx 暂停nignx容器
docker-compose unpause nginx 恢复ningx容器
docker-compose rm nginx 删除容器(删除前必须关闭容器)
docker-compose stop nginx 停止nignx容器
docker-compose start nginx 启动nignx容器
1、下载镜像
docker pull nginx
2、运行nginx
docker run -d --name nginx -p 80:80 nginx
3、docker ps 如果成功会看到容器的存在
4、数据卷的挂载(1、配置文件 2、部署的项目)
在主机/mnt目录下执行 mkdir -p ./nginx/{conf,html,logs}创建挂载目录
cd /mnt
mkdir -p ./nginx/{conf,html,logs}
cd nginx
5、拷贝容器的配置到宿主机文件夹中
docker cp 容器ID:/etc/nginx/nginx.conf ./
docker cp 容器ID:/etc/nginx/conf.d/default.conf ./conf/
6、删除nginx容器
docker ps
docker stop 容器ID
docker rm 容器ID
7、创建挂载了数据卷的nginx
docker run -d --name nginx -p 80:80 -v /mnt/nginx/nginx.conf:/etc/nginx/nginx.conf -v /mnt/nginx/logs:/var/log/nginx -v /mnt/nginx/html:/usr/share/nginx/html -v /mnt/nginx/conf:/etc/nginx/conf.d --privileged=true nginx
docker pull tomcat
docker run -d -p 8880:8080 -v /root/tomcat/:/usr/local/tomcat/webapps/ tomcat
启动MQ
docker run -d -p 5672:5672 -p 15672:15672 --name rabbitmq rabbitmq:management
查看容器
docker ps
查看所有容器包括没运行的
docker ps -a
进入容器
docker exec -it 【容器名】bash
停止容器
docker container stop [容器名]
删除容器
docker container rm [容器名]
拉取mysql
docker pull mysql:5.7
运行容器
---docker run --name mysql5.7 -p 3306:3306 -e MYSQL_ROOT_PASSWORD=1234 -d mysql:5.7
-- docker run -p 3306:3306 --name mysql -v $PWD/conf:/etc/mysql/conf.d -v $PWD/logs:/logs
-v $PWD/data:/mysql_data -e MYSQL_ROOT_PASSWORD=1234 -d mysql:5.7
docker run --name mysql5.7 -p 3306:3306
-v /mysql/my-master.cnf:/etc/mysql/my.cnf \
-e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7
docker run -d -e MYSQL_ROOT_PASSWORD=root \
--name mysql-slave \
-v /root/mysql/mysql-slave.cnf:/etc/mysql/my.cnf \
-p 3307:3306 mysql:5.7
进入容器
docker exec -it mysql5.7(ID) bash
进入mysql
mysql -uroot -p
use mysql; //选择一个数据库
修改加密方式 --MYSQL8需要
alter user 'root'@'localhost' identified with mysql_native_password by 123456';
查看加密方式
select host,user,plugin from user;
开启远程
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION;
刷新权限
flush privileges;
主从分离
docker run --name master -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7
docker run --name slave -p 3307:3306 -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7
docker exec master bash -c "echo 'log-bin=/var/lib/mysql/mysql-bin' >> /etc/mysql/mysql.conf.d/mysqld.cnf"
docker exec master bash -c "echo 'server-id=123454' >> /etc/mysql/mysql.conf.d/mysqld.cnf"
docker exec slave bash -c "echo 'server-id=123454567' >> /etc/mysql/mysql.conf.d/mysqld.cnf"
docker restart master
show variables like '%log_bin%' #查看log-bin是否开启
show master status; 显示log-bin参数
change master to master_host='172.17.0.2',
master_port=3306,
master_user='backup',
master_password='123456',
master_log_file='mysql-bin.000003',
master_log_pos=688;
start slave;
show slave status;
docker pull elasticsearch:7.6.2
2.创建挂载的目录
mkdir -p /mydata/elasticsearch/config
mkdir -p /mydata/elasticsearch/data
echo "http.host: 0.0.0.0" >> /mydata/elasticsearch/config/elasticsearch.yml
创建容器并启动
docker run --name elasticsearch -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" -e ES_JAVA_OPTS="-Xms64m -Xmx128m" -v /mydata/elasticsearch/config/elasticsearch.yml:/elasticsearch/config/elasticsearch.yml -v /mydata/elasticsearch/data:/elasticsearch/data -v /mydata/elasticsearch/plugins:/elasticsearch/plugins -d elasticsearch:7.10.1
其中elasticsearch.yml是挂载的配置文件,data是挂载的数据,plugins是es的插件,如ik,而数据挂载需要权限,需要设置data文件的权限为可读可写,需要下边的指令。
chmod -R 777 要修改的路径
-e "discovery.type=single-node" 设置为单节点
特别注意:
-e ES_JAVA_OPTS="-Xms256m -Xmx256m" \ 测试环境下,设置ES的初始内存和最大内存,否则导致过大启动不了ES
docker run --name erch2lasticsea -p 9200:9200 -p 9200:9200 -e "discovery.type=single-node" -e ES_JAVA_OPTS="-Xms64m -Xmx128m" --net=host -d elasticsearch:7.6.2
设置密码:在配置文件加上
http.cors.enabled: true
http.cors.allow-origin: "*"
http.cors.allow-headers: Authorization
xpack.security.enabled: true
xpack.security.transport.ssl.enabled: true
重启
cd bin
elasticsearch-setup-passwords interactive
docker pull docker.elastic.co/kibana/kibana:7.6.2
mkdir -p /usr/local/kibana/config #用于挂载数据卷
cd /usr/local/kibana/config #进入数据卷
touch kibana.yml #创建文件
chmod -R 777 kibana.yml #授权
#配置文件内容
server.name: kibana
server.port: 5601
server.host: 0.0.0.0
elasticsearch.hosts: ["http://172.16.1.253:9200"]
#elasticsearch.username: "elastic"
#elasticsearch.password: "Pdzs123456"
xpack.monitoring.ui.container.elasticsearch.enabled: true
docker run -d -it --restart=always --privileged=true --name=kibana -p 5601:5601 -v/usr/local/kibana/config/kibana.yml:/usr/share/kibana/config/kibana.yml kibana:7.6.2
docker run -d --name=logstash logstash:7.6.2
docker cp logstash:/usr/share/logstash /data/elk7/
mkdir /data/elk7/logstash/config/conf.d
chmod 777 -R /data/elk7/logstash
http.host: "0.0.0.0"
xpack.monitoring.elasticsearch.hosts: [ "http://192.168.31.196:9200" ]
path.config: /usr/share/logstash/config/conf.d/*.conf
path.logs: /usr/share/logstash/logs
input {
redis {
batch_count => 1
data_type => "list"
key => "logstash-list"
host => "192.168.0.2"
port => 6379
threads => 5
}
}
output {
elasticsearch {
hosts => ["172.16.1.253:9200"]
index => "logstash-system-localhost-%{+YYYY.MM.dd}"
}
}
docker rm -f logstash
docker run -d --name=logstash --restart=always -p 5044:5044 -v /data/elk7/logstash:/usr/share/logstash -v /var/log/messages:/var/log/messages logstash:7.6.2
RPUSH logstash-list "hello world"
1. 拉取镜像
docker pull redis
2. 查看镜像
docker images
3.配置文件
mkdir /usr/local/redis
下载配置文件到指定目录
wget -P /usr/local/redis http://download.redis.io/redis-stable/redis.conf
修改配置文件
vi /usr/local/redis/redis.conf
4.启动容器
docker run -itd --name redis-test -p 6379:6379 redis
docker run -p 6379:6666 -v $PWD/data:/data -d redis:latest redis-server --requirepass xiaoyezi2008 --appendonly yes
docker run -p 6379:6666 -v $PWD/data:/data -d redis:latest redis-server --appendonly yes
命令说明:
-p 6379:6379 : 将容器的6379端口映射到主机的6379端口
-v $PWD/data:/data : 将主机中当前目录下的data挂载到容器的/data
redis-server --appendonly yes : 在容器执行redis-server启动命令,并打开redis持久化配置
docker run --name redis -p 6380:6379 redis-test --requirepass 123456
#前边是宿主机端口 后面是docker使用的端口
4.备注
为现有的redis创建密码或修改密码的方法:
1.进入redis的容器 docker exec -it 容器ID bash
2.进入redis目录 /usr/local/bin
3.运行命令:redis-cli
4.查看现有的redis密码:config get requirepass
5.设置redis密码config set requirepass ****(****为你要设置的密码)
6.若出现(error) NOAUTH Authentication required.错误,则使用 auth 密码 来认证密码
### 带上图上方版本,否则找不到
docker pull registry.cn-hangzhou.aliyuncs.com/ongo360/mycat:1.6.1
### 个人觉得名称太长 给它打个tag xxx为该镜像的id 可以通过docker images 查看
docker tag xxx mycat
docker rmi registry.cn-hangzhou.aliyuncs.com/ongo360/mycat:1.6.1
### 创建 以下目录,为docker数据卷做准备 我这里目录为/root/mycat
mkdir conf
mkdir logs
### docker持久化mycat中的配置文件到conf/logs两个目录下,在我们修改宿主机下的文件时 docker容器中的文件也会同步更新 会减少很多麻烦
docker run -d --name mycat -p 8066:8066 -v /root/mycat/conf:/opt/mycat/conf -v /root/mycat/logs:/opt/mycat/logs mycat
### 至此 我们mycat容器已经安装并成功运行 我们可以通过docker ps -a 查看所有容器
### 如果我们看见容器状态为 down 或者 exited
### 我们可以进入 以上创建的logs 目录查看 日志
mycat.log 存储运行日志
wrapper.log 存储启动日志
docker run --net="host" --privileged=true --name devops-jenkins --user=root -p 8888:8888 -p 50000:50000 -v /opt/data/jenkins_home:/var/jenkins_home -d jenkins/jenkins:lts
# 建立一个新的镜像文件,配置模板:新建立的镜像是以centos为基础模板
# 因为jdk必须运行在操作系统之上
FROM centos:7
# 作者名 作者邮箱
MAINTAINER cd <403783154@qq.com>
# 创建一个新目录来存储jdk文件
RUN mkdir /usr/local/java
#将jdk压缩文件复制到镜像中,它将自动解压缩tar文件
ADD jdk-11.0.3_linux-x64_bin.tar.gz /usr/local/java/
# 创建软连接 ln -s 源文件 目标文件
# RUN ln -s /usr/local/java/jdk-11.0.3 /usr/local/java/jdk
# 设置环境变量
ENV JAVA_HOME /usr/local/java/jdk-11.0.3
ENV PATH $JAVA_HOME/bin:$PATH
# VOLUME 指定了临时文件目录为/tmp
# 其效果是在主机 /var/lib/docker 目录下创建了一个临时文件,并链接到容器的/tmp
VOLUME /tmp
# 将jar包添加到容器中并更名为app.jar
ADD train-0.0.1-SNAPSHOT.jar /app.jar
# 运行jar包
RUN bash -c 'touch /app.jar'
ENTRYPOINT ["java","-jar","/app.jar"]
docker build -t train:1.0 .
--docker build -t student:1.0 .
docker run -d -p 9001:9001 testpro:1.0
运行容器
docker run -d -p 9000:9000 --name student -v /mnt/cloud:/mnt/cloud -v /mnt/img:/mnt/img -v /mnt/img/J182:/mnt/img/J182 -v /mnt/interview:/mnt/interview student:1.0
docker pull sonatype/nexus3
mkdir -p /docker/nexus/data
chmod -R 777 docker
docker run -d -p 8881:8881 --name nexus -v /docker/nexus/data:/nexus-data \
--privileged=true \
--restart=always \
sonatype/nexus3