Docker 的 实操练习。
Docker 安装 Nginx
步骤
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| # 1、搜索镜像 建议到docker hub上下载 docker search nginx
# 2、下载最新镜像 docker pull nginx
# 3、启动镜像 docker run -d --name nginx01 -p:3344:80 nginx # -d 后台方式启动 --name 不写默认nginx,若有多个,指定名字,例如nginx01 # -p:宿主机端口:docker容器端口 : 指定宿主机和nginx容器的端口对应关系 # 最后一个是镜像名字
# 启动成功后,可通过下面命令验证,得到nginx的欢迎界面即为成功 curl localhost:3344
|
然后可以通过 ip:3344 访问,即可看到 nginx 欢迎界面。
关于 -p3344:80 端口暴露的概念
思考问题:我们每次改动 nginx 配置文件,都需要进入容器内部?十分的麻烦,我要是可以在容器外部提供一个映射路径,达到在容器修改文件名,容器内部就可以自动修改?
这里需要用到后期学习的数据卷的技术!
Docker 安装 Tomcat
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41
| # 官方的使用,会自动启动tomcat服务 docker run -it --rm tomcat # --rm 代表用完即删,一般用于测试
# 我们学习初期不使用以上方式,正常下载即可 docker pull tomcat:9.0
# 启动镜像 docker run -d -p:3355:8080 --name tomcat01 tomcat:9.0
# 以上便可根据ip:3355访问,可以分为tomcat 但是404 not found
# 容器的目录结构 root@e4cdba7e5c42:/usr/local/tomcat# ls -al total 128 drwxr-xr-x. 1 root root 30 Nov 19 06:16 . drwxr-xr-x. 1 root root 20 Nov 19 06:12 .. -rw-r--r--. 1 root root 18982 Nov 12 15:41 BUILDING.txt -rw-r--r--. 1 root root 5409 Nov 12 15:41 CONTRIBUTING.md -rw-r--r--. 1 root root 57092 Nov 12 15:41 LICENSE -rw-r--r--. 1 root root 2333 Nov 12 15:41 NOTICE -rw-r--r--. 1 root root 3257 Nov 12 15:41 README.md -rw-r--r--. 1 root root 6898 Nov 12 15:41 RELEASE-NOTES -rw-r--r--. 1 root root 16507 Nov 12 15:41 RUNNING.txt drwxr-xr-x. 2 root root 4096 Nov 19 06:16 bin drwxr-xr-x. 1 root root 22 Nov 23 11:43 conf drwxr-xr-x. 2 root root 4096 Nov 19 06:16 lib drwxrwxrwx. 1 root root 177 Nov 23 11:43 logs drwxr-xr-x. 2 root root 134 Nov 19 06:16 native-jni-lib drwxrwxrwx. 2 root root 30 Nov 19 06:16 temp drwxr-xr-x. 2 root root 6 Nov 19 06:16 webapps drwxr-xr-x. 7 root root 81 Nov 12 15:38 webapps.dist drwxrwxrwx. 2 root root 6 Nov 12 15:35 work
# 进入容器 docker exec -it tomcat01 /bin/bash # 发现问题,命令少了,webapps目录下没有内容,所以 404 # 解决:可以发现webapps.dist下有ROOT等文件,所以把webapps.dist里的内容复制进webapps下即可。
cp -r webapps.dist/* webapps
再次访问网页,成功。
|
思考问题:我们以后要部署项目,如果每次都要进入容器是不是十分麻烦?我要是可以在容器外部提供一个映射路径,webapps ,我们在外部放置项目,就自动同步到内部就好了!
Docker安装MySQL
1 2 3
| docker pull mysql
docker run -p 3306:3306 --name mysql01 -v $PWD/conf:/etc/mysql/conf.d -v $PWD/logs:/logs -v $PWD/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=root -d mysql
|
此时,docker容器里的mysql服务启动,并且映射到宿主机的3306端口,可通过宿主机的ip:3306访问mysql服务。
Docker安装SQL server(失败!!)
使用命令下载镜像:docker pull mcr.microsoft.com/mssql/server:2017-latest
使用命令创建并运行SQL server容器,密码root,容器名字sqlserver1
1
| docker run -e "ACCEPT_EULA=Y" -e "SA_PASSWORD=root" -p 1433:1433 --name sqlserver1 -d mcr.microsoft.com/mssql/server:2017-latest
|
Docker安装Oracle(失败)
使用命令下载镜像 docker pull registry.cn-hangzhou.aliyuncs.com/helowin/oracle_11g
没有足够空间下载
Docker安装Redis
使用命令docker pull redis 下载镜像
运行redis容器:docker run -itd –name redis01 -p 6379:6379 redis
使用命令行交互模式进入容器:docker exec -it redis01 /bin/bash
然后用redis-cli连接容器的redis进行测试
set test 1
Docker安装MongoDB
Docker 部署 ES + Kibana
es是elasticsearch6搜索引擎,kibana是它的可视化操作界面
1 2 3 4 5 6 7 8 9 10 11 12 13
| # ES 暴露的端口很多! # ES 十分的耗内存 # ES 的数据一般需要放置到安全目录!挂载 # --net somenetwork ? 网络配置
# 启动 es docker run -d --name elasticsearch -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" elasticsearch:7.9.3
# 查看CPU状态: docker stats # 非常耗内存,占了大部分内存空间
#测试es是否启动成功 curl localhost:9200
|
可视化
1、portainer(先用这个): Docker图形化管理工具!提供一个后台面板供我们操作
1 2
| # 使用命令 docker run -d -p 8088:9000 --restart=always -v /var/run/docker.sock:/var/run/docker.sock --privileged=true --name portainer01 portainer/portainer
|
访问测试:ip:8088