要不是阿里云太贵续费不起我也不会再从0开始配置555,之前白嫖了半年阿里云服务器,后来到期续费没想到那么贵,实在不想用了。1核1G一月都要三十四块,嘎嘎嘎,下面那么多应用跑在虚拟机上电脑一直嗷嗷叫,哎没法
0,买完云服务器需要重置下密码,默认登录名是root,密码好像是随机的。
1,为了外部能访问把你的安全组规则配置入站出战端口范围开放完都是1-65535我的是刚刚刚刚刚买的船新百度云服务器。
.注意:阿里云默认没有全部开启,之开启了几个必须端口,好像是之前勒索病毒的原因。你直接开放完就完事了。反正还有防火墙呢。
3,关闭防火墙,或者给防火墙开启指定端口,我选择给防火强开启指定的端口,如果省事就直接关闭防火墙就行了,不过可能会中病毒,我上台阿里云服务器就被植入了蠕虫病毒,最后重置了一下才搞定
1, 查询指定端口防火墙是否对外开放了,例如查看MySQL默认端口3306是否对外开放
firewall-cmd --query-port=3306/tcp
提示 yes,表示开启;no表示未开启。
2, 添加要开放的端口号
首先添加指定需要开放的端口:
firewall-cmd --add-port=3306/tcp --permanent
--permanent表示永久开启,而不是暂时性的
然后重载入添加的端口:
firewall-cmd --reload
4, 主菜开吃,安装Docker
(1) yum 包更新到最新,我的是centos 7.6 就不用更新了。6的小伙伴更新一下
yum update
(2)安装yum-utils:
yum install -y yum-utils device-mapper-persistent-data lvm2Copy
(3)设置yum源为阿里云
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
yum install docker-ce
(5)配置国内镜像,就和maven仓库一样,官方的下载速度太慢
vi /etc/docker/daemon.json
在该文件中输入如下内容:
{
"registry-mirrors": ["https://docker.mirrors.ustc.edu.cn"]
}
(6)启动docker 并设置开机自启
查看docker状态
systemctl status docker
开启docker
systemctl start docker
设置docker开机自启
systemctl enable docker
5,docker安装成功后,我们安装Docker-Compose软件,能够编排多个容器,一键下载和启动:
(1)互联网方式安装
curl -L "https://github.com/docker/compose/releases/download/1.27.4/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
#修改该文件的权限为可执行:
chmod +x /usr/local/bin/docker-compose
#查看版本
docker-compose --version
(2)本地安装, 上传 docker-compose
#移动到指定位置,移动到此文件夹就相当于配置了环境变量,在任何地方都能启动
mv docker-compose /usr/local/bin/docker-compose
#修改该文件的权限为可执行:
chmod +x /usr/local/bin/docker-compose
#查看版本
docker-compose --version
(3)我们在/usr/local目录下创建mydocker文件夹作为工作空间
6,有了剧本后,你如果没有对应镜像,会自动拉取
(1)在此之前我们需要先把nginx.conf放到mydocker文件夹中,因为编排时我安装了fastdfs需要nginx配置文件
vi /usr/local/mydocker/nginx.conf
#user nobody;
worker_processes 1;
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
#pid logs/nginx.pid;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
#log_format main '$remote_addr - $remote_user [$time_local] "$request" '
# '$status $body_bytes_sent "$http_referer" '
# '"$http_user_agent" "$http_x_forwarded_for"';
#access_log logs/access.log main;
sendfile on;
#tcp_nopush on;
#keepalive_timeout 0;
keepalive_timeout 65;
#gzip on;
server {
listen 8080;
server_name localhost;
#charset koi8-r;
#access_log logs/host.access.log main;
location /group1/M00 {
root /fastdfs/storage/data;
ngx_fastdfs_module;
}
#error_page 404 /404.html;
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
}
(2)开始配置编排软件的配置文件,配置到底要下载什么版本镜像,运行什么容器,按什么顺序运行等
vi /usr/local/mydocker/docker-compose.yml
version: '3'
services:
mysql:
image: mysql:5.7
container_name: mysql
command: mysqld --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
restart: always
environment:
MYSQL_ROOT_PASSWORD: root #设置root帐号密码
ports:
- 3306:3306
redis:
image: redis
container_name: redis
command: redis-server --appendonly yes
restart: always
ports:
- 6379:6379
rabbitmq:
image: rabbitmq:management
container_name: rabbitmq
restart: always
ports:
- 5672:5672
- 15672:15672
elasticsearch:
image: elasticsearch:6.8.1
container_name: elasticsearch
restart: always
environment:
- "cluster.name=elasticsearch" #设置集群名称为elasticsearch
- "discovery.type=single-node" #以单一节点模式启动
- "ES_JAVA_OPTS=-Xms512m -Xmx512m" #设置使用jvm内存大小
ports:
- 9200:9200
kibana:
image: kibana:6.8.1
container_name: kibana
restart: always
links:
- elasticsearch:es #可以用es这个域名访问elasticsearch服务
depends_on:
- elasticsearch #kibana在elasticsearch启动之后再启动
environment:
- "elasticsearch.hosts=http://es:9200" #设置访问elasticsearch的地址
ports:
- 5601:5601
nacos:
image: nacos/nacos-server
container_name: nacos
restart: always
environment:
- MODE=standalone
ports:
- 8848:8848
sentinel:
image: bladex/sentinel-dashboard
container_name: sentinel
restart: always
ports:
- 8858:8858
fastdfs-tracker:
hostname: fastdfs-tracker
container_name: fastdfs-tracker
image: season/fastdfs:1.2
restart: always
network_mode: "host"
command: tracker
volumes:
- ./tracker_data:/fastdfs/tracker/data
fastdfs-storage:
hostname: fastdfs-storage
container_name: fastdfs-storage
image: season/fastdfs:1.2
restart: always
network_mode: "host"
volumes:
- ./storage_data:/fastdfs/storage/data
- ./store_path:/fastdfs/store_path
environment:
- TRACKER_SERVER=192.168.200.130:22122
command: storage
depends_on:
- fastdfs-tracker
fastdfs-nginx:
hostname: fastdfs-nginx
container_name: fastdfs-nginx
image: season/fastdfs:1.2
restart: always
network_mode: "host"
volumes:
- ./nginx.conf:/etc/nginx/conf/nginx.conf
- ./store_path:/fastdfs/store_path
environment:
- TRACKER_SERVER=192.168.200.130:22122
command: nginx
depends_on:
- fastdfs-tracker
容器启动的顺序从上到下,依次是mysql,redis,rabbitmq,elasticsearch,kibana,nacos,sentinel,fastdfs。
可以看到我们配置了镜像版本,容器名称,是否自启,mysql字符编码和密码。如果本地没有镜像,会自动拉取
7,最后,运行可执行文件docker-compose,并指定其配置文件docker-compose.yml(不指定也行,默认就是这个)
docker-compose up -d
或
docker-compose up -d -f docker-compose.yml
镜像拉取成功,并运行为容器后如下:
如果不放心可使用docker ps -a进行查看
8,如果你真的就只是想单纯的运行一个容器的话你可以在docker安装成功后执行:
(1)拉取镜像
docker pull mysql:5.7
(2)运行容器,并设置自启,设置密码为root,设置字符编码为u8
-i表示表示运行容器
-d表示守护式/后台运行
–name :为创建的容器命名
-p 代表端口映射,格式为 宿主机映射端口:容器运行端口
-e 代表添加环境变量 MYSQLROOTPASSWORD 是root用户的登陆密码
–restart=always表示总是自启
-v表示文件映射
–character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci设置字符编码
docker run -d -p 3306:3306 --name mysql -u root --restart=always -v /home/mysql/conf:/etc/mysql -v /home/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=root mysql:5.7 --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
好了,没了。
删除容器
1,先列出有哪些容器(列出所有的):docker ps -a
显示所有容器:docker ps -a
只显示容器ID:docker ps -q
2,要先暂停容器,才能删除:
暂停所有容器:docker stop $(docker ps -aq)
暂停单个容器:docker stop < CONTAINER ID >
3,删除容器:
删除所有容器:docker rm $(docker ps -aq)
删除单个容器:docker rm < CONTAINER ID >
强制删除 -f, --force:docker rm -f < CONTAINER ID >
删除指定链接-l, --link:docker rm -l < CONTAINER ID >
删除容器关联数据卷-v --volumes:docker rm -v < CONTAINER ID >
4,删除所有容器,无论时运行还是不运行
docker ps -a能显示所有docker实例的状态,包含已经退出了的
加上-q参数,只显示container id
使用这个命令,把docker ps -aq产生的输入作为输入传入到docker rm命令,达到删除所有容器实例的效果。
docker rm $(docker ps -aq)
删除镜像
1,列出镜像:docker images
2,删除镜像:
删除单个镜像:docker rmi < IMAGE ID >
删除所有镜像:docker rmi $(docker images -q)
遇见关联镜像删除不了时,强制删除:docker rmi -f $(docker images -q)