Docker 学习 | 第七篇:Docker运行redis/jenkins/gitlab/nginx

Docker运行redis

拉取镜像
docker pull redis
运行镜像
docker run -it -d --name redis -p:6379:6379 redis

如果没有什么意外的话,redis已经运行起来了。哈哈,Docker就是这么简单.

Redis配置

默认情况下redis是没有配置文件的,如果需要指定配置文件的话,可以通过指定挂载目录以及运行参数来实现:

docker run -it -d --name redis -p 6379:6379 \
-v /xxx/redis.conf:/etc/redis/redis.conf redis /etc/redis/redis.conf

上述命令的操作包含了挂载了主机/xxx/redis.conf到容器的/etc/redis/redis.conf中,在镜像名后面跟着的是启动容器时的参数,这里填写了容器中配置文件的路径,则会应用该配置文件,最终是主机/xxx/redis.conf文件生效。

数据保存在本地

默认情况下,redis的数据是保存在容器中的/data目录的,容器停止的时候,redis也停止了,但是容器的数据是无法保存的,所以重启redis容器后数据无法恢复,所以需要将该目录挂载到主机目录。这样就安全了.

docker run -it -d --name redis -p 6379:6379 \
-v /xxx/redis.conf:/etc/redis/redis.conf \
-v /xxx/xxx:/data redis /etc/redis/redis.conf

Docker安装运行redis就完成了。

Docker运行jenkins

拉取镜像
docker pull jenkins
运行
docker run -it -d --name jenkins -p 8080:8080 jenkins
访问jenkins

可以通过以下访问以下路径来访问jenkins

http://localhost:8080/

访问的时候需要输入初始密码,这个初始密码可以通过一下docker logs jenkins来查看:

Please use the following password to proceed to installation:

c644e252200a43379c0e212d35675ed5

This may also be found at: /var/jenkins_home/secrets/initialAdminPassword

logs中找到以上字符串,中间输出的那个就是初始密码。

输入密码之后就可以进行密码修改,并且配置jenkins啦。

Docker运行gitlab

拉取镜像
docker pull gitlab
运行
docker run -it -d --name gitlab \
-v /srv/gitlab/config:/etc/gitlab \
-v /srv/gitlab/logs:/var/log/gitlab \
-v /srv/gitlab/data:/var/opt/gitlab \
-p 443:443 \
-p 80:80 \
-p 22:22 \ 
gitlab 

上述命令启动gitlab,并且把gitlab的一些相关目录挂载到/srv/gitlab下面,同时开放相关的端口号。

配置

假设我需要配置通过9000端口访问gitlab,可以编辑/srv/gitlab/config/gitlab.rb文件,修改该文件以下内容:

external_url 'http://localhost:9000'

除此之外还需要将容器的端口9000映射到主机的某个端口。

正确做法应该是:停止容器->移除容器->重新运行容器(添加9000的端口映射)

Docker运行nginx

拉取镜像
docker pull nginx
配置

默认情况下,nginx运行起来之后,他的配置文件都是在容器的/etc/nginx目录下面。

我们需要配置nginx,需要把该目录挂载到主机目录,方便进行配置,所以需要做以下操作:

执行命令

cd /etc
mkdir /nginx
cd nginx
touch nginx.conf
mkdir conf.d

上述命令创建了目录/etc/nginx,并且在该目录下面创建了nginx.conf文件和conf.d目录。

上述步骤一定要做,不然启动nginx的时候把目录挂载之后,docker是不会自动帮你创建文件的。会导致启动失败。

接下来我们编辑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
docker run -it -d --name nginx -p 80:80 \
-v /etc/nginx:/etc/nginx \
nginx

执行完以上命令之后,nginx已经正常启动。

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐