最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

如何使用Docker快速搭建服務(wù)器環(huán)境

 更新時(shí)間:2023年10月26日 11:22:25   作者:songcream1  
這篇文章主要介紹了使用Docker快速搭建服務(wù)器環(huán)境的詳細(xì)步驟,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下

簡介

這篇文章也是方便自己記錄搭建流程,服務(wù)器的購買啥的就不說了,最終目標(biāo)就是在一個(gè)空白的Linux系統(tǒng)上,使用docker運(yùn)行MySQL、Tomcat+Java、Nginx、Redis 的單機(jī)環(huán)境,以后方便自己快速的部署服務(wù)器。

安裝Docker

首先需要安裝Docker,建議按照官方的文檔(https://docs.docker.com/engine/install/centos/)
將yum鏡像源改為阿里云鏡像源,不然會從國外下載

# 安裝wget
yum install -y wget
# 備份原來的源配置文件
cd /etc/yum.repos.d/
mv CentOS-Base.repo CentOS-Base.repo.back
# 拉取阿里云的配置文件(6可以替換成自己的CentOS版本)
wget -O CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
# 重新加載yum
yum clean all
yum makecache

更新下我們系統(tǒng)的yum工具

yum update

更新完以后,按照docker官網(wǎng),先安裝yum-utils工具

yum install -y yum-utils

添加阿里云的docker鏡像源(上面改的是基礎(chǔ)鏡像源,非這里的docker)

yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

安裝docker機(jī)器

sudo yum install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

啟動docker服務(wù)

systemctl start docker

一些常用的docker命令

###############################  鏡像命令  #####################################
# 查看docker的所有鏡像
docker images
# 刪除鏡像
docker rmi 鏡像id
docker rmi 鏡像名稱:版本號
# 搜索鏡像
docker search 鏡像名稱(例如:mysql,centos,nginx)
# 從docker hub上拉取鏡像
docker pull mysql:版本號
docker pull mysql(默認(rèn)是最新版本號)

###############################  容器命令  #####################################
# 查看當(dāng)前正在運(yùn)行的容器
docker ps
# 查看所有的容器
docker ps -a
# docker鏡像運(yùn)行為容器
# -it是創(chuàng)建的交互式:創(chuàng)建完成之后直接進(jìn)度終端
# -id是創(chuàng)建守護(hù)式:創(chuàng)建完成之后不進(jìn)入容器
# -it創(chuàng)建的容器exit,后臺不會繼續(xù)運(yùn)行
# -id創(chuàng)建的容器exit,后臺繼續(xù)運(yùn)行
# -p把容器內(nèi)的3306端口映射到容器外的3355端口
docker run -it -p 3355:3306 --name mytomcat tomcat:9.0 /bin/bash
# 以/bin/bash命令進(jìn)入容器
docker exec -it mytomcat /bin/bash
# 啟動容器()
docker start -i [容器id]
# 停止容器
docker stop [容器id] 
# 刪除容器
docker rm mytomcat 
# 刪除所有容器(-a 列出所有容器 -q 只取id,然后使用$符號將這些id傳入)
docker rm $(docker ps -aq)
# 拷貝本地文件到docker容器中
docker cp test.txt 容器id:/app/test.txt

###############################  數(shù)據(jù)卷命令  #####################################
# -v 掛載容器內(nèi)目錄/root/data_container到容器外目錄/root/data
docker run -it --name=mycentos -v /root/data:/root/data_container centos:latest /bin/bash
# 繼承上面的mycentos容器的數(shù)據(jù)卷
docker run -it --name=centos2 --volumes-from mycentos centos:latest

###############################  打包鏡像命令  #####################################
# 容器打包成為鏡像
docker commit [容器id] [自定義鏡像名稱]:[自定義版本號]
# dockerFile轉(zhuǎn)成鏡像
docker build -f [DockerFile路徑] -t [容器名]:[TAG] .

安裝前準(zhǔn)備

在宿主機(jī)的/home 目錄準(zhǔn)備我們nginx、redis、mysql、tomcat的映射目錄,方便我們直接在宿主機(jī)修改配置和查看日志。

cd /home
mkdir nginx
mkdir tomcat
mkdir redis
mkdir mysql

Docker部署Nginx

# 拉取nginx最新鏡像
docker pull nginx:latest
# 運(yùn)行鏡像
# -d 后臺運(yùn)行 (-i 以交互式方式運(yùn)行,-t exit后自動結(jié)束容器)
# --name 指定容器名字
# -p 映射 容器外端口:容器內(nèi)端口 (這里將宿主機(jī)的8080端口映射容器內(nèi)的80端口)
# -v 映射 容器外路徑:容器內(nèi)路徑 (這里掛載nginx的配置文件、日志文件到宿主機(jī)的/home/nginx下)
docker run -p 80:80 -v /home/nginx/nginx.conf:/etc/nginx/nginx.conf -v /home/nginx/logs/:/var/log/nginx/ -d nginx

運(yùn)行以上命令后,使用docker ps命令發(fā)現(xiàn) nginx 容器并沒有啟動起來,原因是因?yàn)槲覀儝燧d了ngxin.conf,掛載會首先使用容器外的目錄,覆蓋容器內(nèi)的目錄,這就導(dǎo)致我們的nginx配置文件被清空了,于是ngxin并沒有正常啟動。官方給的做法如下:

大概意思是說,先以不掛載的形式運(yùn)行docker容器,然后再把容器內(nèi)的ngxin.conf拷貝出來,接著以掛載這個(gè)拷貝的conf文件的形式啟動新的docker容器。于是容器外目錄覆蓋容器內(nèi)目錄時(shí),就會有nginx.conf配置文件了。

一般我們都會修改我們的nginx配置文件,因?yàn)槊總€(gè)服務(wù)器配置的端口啥的都不一樣,安裝的應(yīng)用也不一樣,所以,我們直接把自己的nginx.conf文件放到宿主機(jī)要掛載的目錄下就行了,也就是 /home/nginx/nginx.conf
一個(gè)簡單的nginx.conf樣式(包含了h5應(yīng)用、管理端應(yīng)用、api調(diào)用、swagger、文件存儲):

user root; 
worker_processes 1;
events
{	
	# 連接數(shù)
	worker_connections 1024;
}
http
{
	include       mime.types;
	default_type  application/octet-stream;
	sendfile        on;
	keepalive_timeout  65;
	server_tokens off;
	access_log on;
	# http的匹配規(guī)則
	server
	{
		listen 80;
		# 域名
		server_name www.xxx.com;
		error_log logs/error.log;
		access_log logs/access.log;
		charset utf-8;
		location /dev {
			# www.xxx.com/dev,會去服務(wù)器的這個(gè)路徑/www/server/dev/h5/下找資源
			root /www/server/dev/h5/;
			# 匹配規(guī)則,如 www.xxx.com/h5/image.jpg 會優(yōu)先找/www/server/dev/h5/image.jpg,找不到再找/www/server/dev/h5/index.html
			try_files $uri $uri/ /index.html;
			# 訪問域名時(shí),默認(rèn)訪問index.html,如 www.xxx.com/dev 會去找 /www/server/dev/h5/index.html
			index  index.html index.htm;
		}
		location /dev/admin {
			root /www/server/dev/admin/;
			try_files $uri $uri/ /index.html;
			index  index.html index.htm;
		}
		location /dev/swagger/ {
			proxy_set_header Host $http_host;
			proxy_set_header X-Real-IP $remote_addr;
			proxy_set_header REMOTE-HOST $remote_addr;
			proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
			proxy_pass http://localhost:8081/swagger-ui.html;
		}
		location /dev/api/ {
			proxy_set_header Host $http_host;
			proxy_set_header X-Real-IP $remote_addr;
			proxy_set_header REMOTE-HOST $remote_addr;
			proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
			proxy_pass http://localhost:8081/;
		}
		# 開放一個(gè)文件存儲目錄
		location /files/ {
			root /www/server/;
		}
	}
	# https的匹配規(guī)則
	#server
	#{
	#	listen 443 ssl;
	#	# 域名
	#	server_name www.xxx.com;
	#
	#	error_log logs/error.log;
	#	access_log logs/access.log;
	#
	#	charset utf-8;
	#
	#	ssl_certificate ../cert/xxx.pem;
	#	ssl_certificate_key ../cert/xxx.key;
	#
	#	ssl_session_cache    shared:SSL:1m;
	#	ssl_session_timeout  5m;
	#	ssl_protocols TLSv1.2;
	#	ssl_prefer_server_ciphers on;
	#	ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384;
	#
	#	location /dev {
	#		root /www/server/dev/h5/;
	#		try_files $uri $uri/ /index.html;
	#		index  index.html index.htm;
	#	}
	#
	#	location /dev/admin {
	#		root /www/server/dev/admin/;
	#		try_files $uri $uri/ /index.html;
	#		index  index.html index.htm;
	#	}
	#
	#	location /dev/swagger/ {
	#		proxy_set_header Host $http_host;
	#		proxy_set_header X-Real-IP $remote_addr;
	#		proxy_set_header REMOTE-HOST $remote_addr;
	#		proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
	#		proxy_pass http://localhost:8081/swagger-ui.html;
	#	}
	#
	#	location /dev/api/ {
	#		proxy_set_header Host $http_host;
	#		proxy_set_header X-Real-IP $remote_addr;
	#		proxy_set_header REMOTE-HOST $remote_addr;
	#		proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
	#		proxy_pass http://localhost:8081/;
	#	}
	#
	#	location /files/ {
	#		root /www/server/;
	#	}
	#}  	
}

添加完nginx.conf后,我們還是以掛載卷命令運(yùn)行nginx容器:

# 運(yùn)行鏡像
# -d 后臺運(yùn)行 (-i 以交互式方式運(yùn)行,-t exit后自動結(jié)束容器)
# --name 指定容器名字
# -p 映射 容器外端口:容器內(nèi)端口 (這里將宿主機(jī)的8080端口映射容器內(nèi)的80端口)
# -v 映射 容器外路徑:容器內(nèi)路徑 (這里掛載nginx的配置文件、日志文件到宿主機(jī)的/home/nginx下)
docker run -p 80:80 -v /home/nginx/nginx.conf:/etc/nginx/nginx.conf -v /home/nginx/logs/:/var/log/nginx/ -d nginx

docker ps 發(fā)現(xiàn)后臺運(yùn)行成功

Docker部署Tomcat

docker pull tomcat
# 端口映射:容器外8080 --> 容器內(nèi)8080
# 配置文件映射:容器外/home/tomcat/conf --> 容器內(nèi)/usr/local/tomcat/conf
# 日志文件映射:容器外/home/tomcat/logs --> 容器內(nèi)/usr/local/tomcat/logs
# 部署應(yīng)用目錄映射:容器外/home/tomcat/webapps/ --> 容器內(nèi)/usr/local/tomcat/webapps/
docker run -p 8080:8080 -d -v /home/tomcat/logs:/usr/local/tomcat/logs -v /home/tomcat/webapps/:/usr/local/tomcat/webapps/ tomcat

Docker部署redis

docker pull redis:latest
# -p 端口映射 容器外6379 --> 容器內(nèi)6379
# -v redis配置文件映射 容器外 /home/redis/redis.conf --> 容器內(nèi) /usr/local/redis.conf
# -v redis數(shù)據(jù)映射 容器外 /home/redis/data --> 容器內(nèi) /data
# -d 后臺運(yùn)行
# --requirepass (密碼123456)
docker run -p 6379:6379 -v /home/redis/data:/data -d --requirepass 123456 redis

進(jìn)入容器修改密碼

docker ps -a
docker exec -it 容器ID /bin/bash
cd /usr/local/bin
redis-cli
# 驗(yàn)證密碼
auth 123456
# 修改密碼
config set requirepass **** 

注意這種方式啟動的redis是沒有配置文件的,如果需要使用自定義的配置文件啟動,可以把配置文件放到 /home/redis/redis.conf 下,使用 -v 掛載到容器內(nèi)的 /usr/local/redis.conf 下,然后使用配置文件啟動redis容器

docker run -p 6379:6379 -v /home/redis/redis.conf:/usr/local/redis.conf -v /home/redis/data:/data -d redis /usr/local/redis.conf

redis配置文件下載地址:
https://github.com/redis/redis/blob/7.2/redis.conf

bind 127.0.0.1 		#注釋掉這部分,使redis可以外部訪問
daemonize no		#用守護(hù)線程的方式啟動
requirepass 你的密碼	#給redis設(shè)置密碼
appendonly yes		#redis持久化  默認(rèn)是no
tcp-keepalive 300 	#防止出現(xiàn)遠(yuǎn)程主機(jī)強(qiáng)迫關(guān)閉了一個(gè)現(xiàn)有的連接的錯(cuò)誤 默認(rèn)是300

Docker部署mysql

mysql版本選擇可以到 https://hub.docker.com/_/mysql?tab=tags 這里看有那些標(biāo)簽
我們安裝5.7版本

# 一句話就搞定了mysql的配置,沒有用docker得要配置倉庫源,編譯等等的,還有各種網(wǎng)絡(luò)問題,docker真強(qiáng)大
docker pull mysql:5.7
# -p 端口映射 容器外3306 --> 容器內(nèi)3306
# -v mysql配置文件映射 容器外 /home/mysql/conf --> 容器內(nèi) /etc/mysql/conf.d
# -v mysql數(shù)據(jù)映射 容器外 /home/mysql/data --> 容器內(nèi) /var/lib/mysql (沒有映射到外面會導(dǎo)致數(shù)據(jù)丟失,容器刪了就沒了)
# -d 后臺運(yùn)行
# -e MYSQL_ROOT_PASSWORD=123456 配置mysql密碼
docker run -d -p 3306:3306 -v /home/mysql/conf:/etc/mysql/conf.d -v /home/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 mysql:5.7

同樣道理,配置文件需要我們自己下載放到宿主機(jī)掛載目錄下

總結(jié)

上面用到的部署命令如下,我們也可以用docker compose去編排這幾個(gè)命令,這樣就不用每次都一遍一遍運(yùn)行了

# 部署mysql
docker run -d -p 3306:3306 -v /home/mysql/conf:/etc/mysql/conf.d -v /home/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 mysql:5.7
# 部署redis
docker run -d -p 6379:6379 -v /home/redis/redis.conf:/usr/local/redis.conf -v /home/redis/data:/data redis /usr/local/redis.conf
# 部署tomcat
docker run -d -p 8080:8080 -v /home/tomcat/logs:/usr/local/tomcat/logs -v /home/tomcat/webapps/:/usr/local/tomcat/webapps/ tomcat
# 部署nginx
docker run -d -p 80:80 -v /home/nginx/nginx.conf:/etc/nginx/nginx.conf -v /home/nginx/logs/:/var/log/nginx/ nginx

到此這篇關(guān)于使用Docker快速搭建服務(wù)器環(huán)境的文章就介紹到這了,更多相關(guān)Docker搭建服務(wù)器環(huán)境內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 使用Docker完成前端部署詳細(xì)圖文教程

    使用Docker完成前端部署詳細(xì)圖文教程

    這篇文章主要給大家介紹了關(guān)于使用Docker完成前端部署的相關(guān)資料,Docker變得越來越流行,它可以輕便靈活地隔離環(huán)境,進(jìn)行擴(kuò)容,運(yùn)維管理,文中通過圖文介紹的非常詳細(xì),需要的朋友可以參考下
    2023-09-09
  • Docker 7 docker在阿里云的使用詳解

    Docker 7 docker在阿里云的使用詳解

    這篇文章主要介紹了Docker 7 docker在阿里云的使用詳解的相關(guān)資料,需要的朋友可以參考下
    2016-11-11
  • 利用docker搭建LAMP運(yùn)行環(huán)境教程詳解

    利用docker搭建LAMP運(yùn)行環(huán)境教程詳解

    LAMP相信對大家來說都不陌生, Docker是一個(gè)開源的引擎,可以輕松的為任何應(yīng)用創(chuàng)建一個(gè)輕量級的、可移植的、自給自足的容器,所以這篇文章給大家介紹利用docker快速搭建LAMP運(yùn)行環(huán)境的方法,有需要的朋友們可以參考借鑒,下面來一起看看吧。
    2016-10-10
  • Docker命令中的各種參數(shù)使用(run、v、rm、-w、-u、-e)

    Docker命令中的各種參數(shù)使用(run、v、rm、-w、-u、-e)

    本文主要介紹了Docker命令中的各種參數(shù)使用(run、v、rm、-w、-u、-e),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-06-06
  • 在docker下刪除兩個(gè)id相同的鏡像的操作

    在docker下刪除兩個(gè)id相同的鏡像的操作

    這篇文章主要介紹了在docker下刪除兩個(gè)id相同的鏡像的操作,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-11-11
  • 使用ssh連接docker服務(wù)器的方法

    使用ssh連接docker服務(wù)器的方法

    這篇文章主要介紹了使用ssh連接docker服務(wù)器的方法,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-01-01
  • 關(guān)于docker部署服務(wù)時(shí)ip無法訪問服務(wù)正常的問題

    關(guān)于docker部署服務(wù)時(shí)ip無法訪問服務(wù)正常的問題

    小編在使用docker部署應(yīng)用的時(shí)候,無法使用IP地址訪問,防火墻已經(jīng)關(guān)閉,可以ping通,應(yīng)用已經(jīng)配置0.0.0.0,怎么回事?下面小編給大家介紹下docker部署服務(wù),ip無法訪問,服務(wù)正常的解決方法,感興趣的朋友一起看看吧
    2022-09-09
  • Docker網(wǎng)絡(luò)配置及部署SpringCloud項(xiàng)目詳解

    Docker網(wǎng)絡(luò)配置及部署SpringCloud項(xiàng)目詳解

    bridge模式是Docker默認(rèn)的網(wǎng)絡(luò)設(shè)置,此模式會為每一個(gè)容器分配Network Namespace、設(shè)置IP等,并將一個(gè)主機(jī)上的Docker容器連接到一個(gè)虛擬網(wǎng)橋上,下面這篇文章主要給大家介紹了關(guān)于Docker網(wǎng)絡(luò)配置及部署SpringCloud項(xiàng)目的相關(guān)資料,需要的朋友可以參考下
    2023-01-01
  • Docker容器傳輸文件的實(shí)現(xiàn)方式

    Docker容器傳輸文件的實(shí)現(xiàn)方式

    文章介紹了Docker容器與主機(jī)之間文件傳輸?shù)乃姆N常用方式:dockercp命令、Docker卷掛載、Dockerfile集成和網(wǎng)絡(luò)工具,分別適用于臨時(shí)傳輸、持久共享、鏡像集成及遠(yuǎn)程場景
    2025-10-10
  • Docker搭建私有倉庫之Harbor的步驟

    Docker搭建私有倉庫之Harbor的步驟

    這篇文章主要介紹了Docker搭建私有倉庫之Harbor的步驟,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-08-08

最新評論

东兰县| 灵山县| 舞阳县| 宝兴县| 格尔木市| 巨鹿县| 木里| 太仆寺旗| 喀喇沁旗| 谢通门县| 通道| 饶平县| 南丰县| 星子县| 兴国县| 苏尼特右旗| 鹤岗市| 湖口县| 青川县| 沙坪坝区| 环江| 天祝| 东阳市| 陆河县| 共和县| 闵行区| 商南县| 醴陵市| 徐州市| 溧阳市| 泸州市| 莱西市| 绍兴县| 喜德县| 黑水县| 石门县| 明水县| 山东省| 淅川县| 交城县| 湖北省|