Docker是什么?
Docker是一个开源的容器引擎,它有助于更快地交付应用。
Docker可将应用程序和基础设施层隔离,并且能将基础设施当作程序一样进行管理。
使用Docker可更快地打包、测试以及部署应用程序,并可以缩短从编写到部署运> 行代码的周期。
Docker有什么用?
Docker 可以简化部署多种应用实例工作。
安装Docker
环境:CentOS 7
# 如果安装有老版本卸载命令
yum remove docker docker-common docker-selinux docker-engine
# 安装依赖
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
# 设置yum源
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
sudo yum install docker-ce
-
启动并加入开机启动项
# 启动
sudo systemctl start docker
#开启开机自启
sudo systemctl enable docker
sudo systemctl status docker
sudo systemctl restart docker
sudo systemctl stop docker
-
删除Docker
yum remove docker docker-common docker-selinux docker-engine -y
/etc/systemd -name '*docker*' -exec rm -f {} ;
find /etc/systemd -name '*docker*' -exec rm -f {} \;
find /lib/systemd -name '*docker*' -exec rm -f {} \;
国内源配置
+ https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors
Docker中基本概念
-
仓库(Repository):
-
镜像(Image):
-
镜像操作
#查看已经下载的镜像 docker images #查询镜像 docker search [镜像名称] #拉取下载镜像 docker pull [镜像名称] #删除镜像 docker rmi [镜像ID] #删除所有镜像 , 注:docker images -q 查询到所有的镜像ID docekr rmi `docker images -q` -
-
容器(Container):
-
容器操作
#查看容器 注:a all 所有的容器 l last 最后一次运行的容器 #不加任何命令默认查看运行中的容器 docker ps [-a | -l] # 容器和宿主机间copy资源 docker cp [CONTAINER ID]:[镜像中的资源路径] [宿主机路径] #创建交互式(前台运行)容器 docker run -i -t --name=[自定义名称] [REPOSITORY]:[TAG] #开启容器 docker start [NAMES] #关闭容器 docker stop [NAMES] # 关闭所有容器 docker stop $(docker ls -a -q) # 删除容器 docker rm [CONTAINER ID] # 删除所有容器 docker rm $(docker ls -a -q)-
容器运行
#创建守护式(后台运行)容器 docker run -i -d --name=[自定义名称] [REPOSITORY]:[TAG] #通过守护式容器进入交互 docker exec -it [自定义的名称] /bin/bash-
容器修改
docker commit c8fab84eb9c8 learn/pingc8fab84eb9c8:前一步查询到的ID learn/ping: 用户名/镜像名
-
安装Nginx
-
安装 Nginx
docker pull nginx
镜像文件位置说明 1、配置位置
/etc/nginx/conf.d
/nginx/nginx.conf
2、日志位置
/var/log/nginx
3、静态网页位置
/usr/share/nginx/html
Docker 安装 Mysql
-
搜索mysql镜像
docker search mysql
-
拉取mysql镜像
下载镜像(如上一步,可以指定想要的版本,不指定则为最新版)
docker pull mysql
-
创建挂载目录
在主机上创建目录,进入该目录,
例如在/usr/local下创建docker_mysql
<!--数据挂载存储目录-->
mkdir -p /usr/local/docker_mysql/data
<!--日志挂载存储目录-->
mkdir -p /usr/local/docker_mysql/logs
-
运行mysql镜像
docker run -p 3306:3306 --name mymysql -v /usr/local/docker_mysql/logs:/logs -v /usr/local/docker_mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql
- -p 3306:3306:将容器的 3306 端口映射到主机的 3306 端口。
- -v /usr/local/docker_mysql/logs:/logs:将主机 /usr/local/docker_mysql/logs目录挂载到容器的 /logs。
- -v /usr/local/docker_mysql/data:/var/lib/mysql :将主机 /usr/local/docker_mysql/data目录挂载到容器的 /var/lib/mysql 。
- -e MYSQL_ROOT_PASSWORD=12345678:初始化 root 用户的密码。
-
mysql配置
-
进入容器
<!--62349aa31687 为容器ID 根据 docker ps 查询到--> docker exec -it 62349aa31687 /bin/bash-
配置数据库
<!--链接数据库 输入刚刚给出的初始密码--> mysql -uroot -p <!--授权--> mysql> GRANT ALL ON *.* TO 'root'@'%'; <!--刷新权限--> mysql> flush privileges; <!--更新加密规则--> mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'password' PASSWORD EXPIRE NEVER; <!--更新root用户密码--> mysql> ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '12345678'; <!--刷新权限--> mysql> flush privileges; -
Docker运行elasticsearch和kibana
-
拉取镜像
docker pull elasticsearch:6.8.5
docker pull mobz/elasticsearch-head:5-alpine
docker pull kibana:6.8.5
-
在容器中运行
docker run -it --name elasticsearch -d -p 9200:9200 -p 9300:9300 -p 5601:5601 elasticsearch:6.8.5
docker run -it -d -e ELASTICSEARCH_URL=http://127.0.0.1:9200 --name kibana --network=container:elasticsearch kibana:6.8.5
docker run -it --name elasticsearch-head -d -p 9100:9100 docker.io/mobz/elasticsearch-head:5-alpine
-
测试访问
http://localhost:5601 看到如下页面说明环境搭建完成
Docker拉取运行nacos-server
-
拉取镜像
docker pull nacos/nacos-server
-
在容器中运行
docker run --env MODE=standalone --name nacos -d -p 8848:8848 nacos/nacos-server
-
测试可用性
访问 http://[你的IP]/nacos/index.html 初始账户密码均为 nacos