在 Docker 下安装软件(容器)非常简单,只需要用 Docker search 查找需要安装的镜像,选择合适的版本,再用 Docker pull 即可把镜像拉取到本机,这几个步骤对于下载任一镜像都是一样的。
把镜像拉取到本地后,接下来需要做的就是用镜像创建一个新的容器并运行它,创建容器并运行容器的命名是 Docker run,只是对于不同的软件,有不同的行为和需要设置一些特殊的参数。
安装Tomcat
Tomcat 作为最常用的 Web 服务器,Docker 中央仓库也提供了很多版本的官方镜像,开发者可以根据项目的需求选定相应的版本拉取,而 Tomcat 中的 Webapps 和 logs 目录分别存放程序代码和程序运行日志的,我们需要把这两个目录挂载到宿主机中,以便上传程序代码和查看日志。
//查找Tomcat
Docker search Tomcat
//拉取选定的Tomcat
Docker pull Tomcat
//创建并且运行Tomcat
Docker run -d -p 8001:8080 --name my_Tomcat -v /home/my_Tomcat/Webapps:/usr/local/Tomcat/Webapps -v /home/my_Tomcat/logs:/usr/local/Tomcat/logs Tomcat
这样一个 Tomcat 服务器就运行起来了,此时只需要把程序代码上传到 /home/my_Tomcat/Webapps 目录中,然后重启 Tomcat 就可以通过 http://ip:8001/ 程序根目录访问了。
//重启Tomcat
Docker restart my_Tomcat
//通过ip+端口访问
http://ip:port/app_name
安装 Redis
Redis 的安装和 Tomcat 的类似,不同的是在构建容器时不同的业务场景下有不同的构建方式:
- 需要密码访问:
Docker run -d --name my_redis -p 6378:6379 redis --requirepass "you password"
- 把 data 目录挂载到宿主机并且开启数据持久化
Docker run -d --name my_redis -p 6378:6379 -v $PWD/data:/data redis-server --appendonly yes
这样就可以通过 ip:6378 访问到 Redis 容器,使用账户名(root)和你设置的密码即可操作 Redis 数据库。
安装 Nginx
Nginx 的安装也和上述一样,只需要注意在构建时需要把数据目录、配置文件以及日志目录挂载到宿主机器即可
Docker run -p 80:80 --name my_Nginx -v $PWD/www:/www -v $PWD/conf/Nginx.conf:/etc/Nginx/Nginx.conf -v $PWD/logs:/wwwlogs -d Nginx
这样我们就可以通过设置 Nginx.conf 来达到使用 Nginx 的目的了
在容器内安装软件如 vim
默认情况下容器是没有安装vi 或 vim 的,此时需要我们进入容器内部,安装 vim 之后方可使用。
进入容器:Docker exec -it 容器名/容器ID bash
更新来源: apt-get update
安装vim:apt-get install -y vim
如何进入未启动的容器内部
在某些场景下,我们进入容器修改了配置信息或者系统配置之后重启容器,发现容器启动不了,通过日志发现原来是我们修改出错,此时我们想把配置改回来但发现因为容器启动不了,使用 Docker exec 是无法进入容器内部了,这种情况下的解决办法是:先从容器内部把配置文件复制到宿主机内,在宿主机中修改正确后再复制回容器内。 如:
//从容器内把 Nginx.conf 复制到宿主机当前目录
Docker cp 容器ID:/etc/Nginx/Nginx.conf .
//修改 Nginx.conf
vim Nginx.conf
//把修改后 Nginx.conf 复制回容器内部
Docker cp Nginx.conf 容器ID:/etc/Nginx/Nginx.conf
修改运行中的容器的端口映射
在使用 Docker run 构建容器并运行时,有可能一时心急把信息写错,但此时容器已经运行,比较粗暴的做法是停止容器,删除容器,重新构建,除此之外比较经济实惠的办法是把当前容器提交成新的镜像,然后运行新的镜像。
//提交运行中的容器
Docker commit containerid foo/live
//运行新的镜像,带端口映射
Docker run -d -p 80:80 containerid
在容器中安装 ping
apt-get update && apt-get install iputils-ping
网友评论