-
开启一个端口
firewall-cmd --zone=public --add-port=80/tcp --permanent
(–permanent永久生效,没有此参数重启后失效)
重新载入
firewall-cmd --reload
查看所有打开的端口: firewall-cmd --zone=public --list-ports
-
安装 docker
yum install -y docker
启动 docker
service docker start -
创建docker中的网络
docker network create common -
docker部署nginx
docker pull nginx //下载nginxdocker images //查看docker镜像
创建文件夹存放构建文件
mkdir -p /home/docker/DockerFile/nginx
cd /home/docker/DockerFile/nginx
创建 nginx配置文件
vim nginx.conf
user nginx;
worker_processes 1;
error_log /var/log/nginx/error.log warn;
pid /var/run/nginx.pid;
events {
worker_connections 1024;
}
http {
include /etc/nginx/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 /var/log/nginx/access.log main;
sendfile on;
#tcp_nopush on;
keepalive_timeout 65;
#gzip on;
include /etc/nginx/conf.d/*.conf;
}
创建 容器运行脚本,让nginx在前台运行,避免nginx服务秒关。
vim start.sh
#!/bin/bash
nginx -c /etc/nginx/nginx.conf
nginx -s stop
nginx -g "daemon off;"
echo nginx start...
vim Dockerfile
FROM nginx
COPY ./nginx.conf /etc/nginx/nginx.conf
COPY ./start.sh /home/start.sh
CMD ["/bin/bash","/home/start.sh"]
EXPOSE 80
vim build.sh
#!/bin/bash
function build_docker {
NAME=$1
IMAGE_NAME="$DOCKER_REP/my$NAME"
IMAGE_FULL_NAME="$IMAGE_NAME:latest"
IMAGE_LATEST_NAME="$IMAGE_NAME:latest"
DOCKER_CONTAINER_NAME=$NAME
HAS_OLD_CONTAINER=$(docker ps -a|grep $DOCKER_CONTAINER_NAME|wc -l)
echo $HAS_OLD_CONTAINER
if [ $HAS_OLD_CONTAINER -ne "0" ]; then
echo "Remove docker container $DOCKER_CONTAINER_NAME"
docker stop $(docker container ls -a |grep "$DOCKER_CONTAINER_NAME" |awk '{print $1}')
docker rm $(docker container ls -a |grep "$DOCKER_CONTAINER_NAME" |awk '{print $1}')
fi
HAS_OLD_IMAGES=$(docker images|grep $IMAGE_NAME|wc -l)
echo $HAS_OLD_IMAGES
if [ $HAS_OLD_IMAGES -ne "0" ]; then
echo "Remove docker image $IMAGE_FULL_NAME..."
docker rmi $IMAGE_FULL_NAME
fi
echo "Building docker image $IMAGE_FULL_NAME..."
docker build -t $IMAGE_FULL_NAME .
# docker tag $IMAGE_FULL_NAME $IMAGE_LATEST_NAME
echo "Building docker image $IMAGE_FULL_NAME successed..."
docker run -p 80:80 --net=common --name $DOCKER_CONTAINER_NAME -d $IMAGE_FULL_NAME
}
set -e
export DOCKER_REP="docker.io"
NAME='nginx'
build_docker $NAME
echo "Done"
bash build.sh
访问宿主机ip,可以看见 Welcome to nginx 页面
5. docker部署gitlab
下载 Gitlab
docker pull gitlab/gitlab-ce:latest
查看镜像文件
docker images
使用镜像启动Gitlab容器
docker run --name=‘gitlab’ -d
–net=common
–publish 18080:80
–restart always
–privileged=true
–volume /root/docker/gitlab/config:/etc/gitlab
–volume /root/docker/gitlab/logs:/var/log/gitlab
–volume /root/docker/gitlab/data:/var/opt/gitlab
gitlab/gitlab-ce:latest
(这里会需要大概 5分钟的安装时间)
docker 会自动在/home/docker/ 下创建一个 gitlab文件夹,里面有3个子文件夹config、logs、data
这里包含了gitlab的主要配置信息,要保证启动gitlab的时候,挂载目录不变。
访问 宿主机IP:18080端口可以看见gitlab的页面, 默认账户是root
输入账号密码即可登录
-
配置nginx
cd /home/docker/DockerFile/nginxvim default.conf
upstream gitlab_server {
server gitlab:80;
}
server {
listen 80;
server_name gitlab.net; ##此处填你为gitlab准备的域名
location / {
proxy_pass http://gitlab_server;
}
}
vim build.sh
第25行改为:
docker run -p 80:80 --net=common --name $DOCKER_CONTAINER_NAME --link=gitlab:gitlab -d $IMAGE_FULL_NAME
vim Dockerfile
第3行加上
COPY ./default.conf /etc/nginx/conf.d/default.conf
重新构建nginx
bash build.sh
更改本地 hosts 文件,即可访问