持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第5天,点击查看活动详情
1 Docker简介
Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从 Apache2.0 协议开源。
- Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。
- 容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app),更重要的是容器性能开销极低。
- Docker 从 17.03 版本之后分为 CE(Community Edition: 社区版) 和 EE(Enterprise Edition: 企业版),我们用社区版就可以了。
前提:必须安装虚拟机Linux与镜像,以下都是以Centos 8 或者更高版本为基础,其他镜像暂未实验。
2 docker安装:
docker官方地址:www.docker.com/
1.旧版本的Docker称为Docker或Docker引擎。
如果安装了这些,请卸载它们以及关联的依赖项。如果yum报告没有安装这些软件包,就可以了。
sudo yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
2.设置存储库
安装yum utils包(提供yum config manager实用程序)并设置存储库。
- 可选命令
sudo yum install -y yum-utils(官方)
- step 1: 安装必要的一些系统工具(阿里云)(必选)
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
- Step 2: 添加软件源信息(阿里云)(必选)
sudo yum-config-manager --add-repo mirrors.aliyun.com/docker-ce/l…
3.安装Docker引擎
安装最新版本的Docker Engine、containred和Docker Compose:
- 默认最新版
sudo yum install docker-ce docker-ce-cli containerd.io docker-compose-plugin
- 特定版
- step 1:查询版本
yum list docker-ce --showduplicates | sort -r
- step 2:安装指定版本 例如:docker-ce-18.09.1替换掉<VERSION_STRING>
sudo yum install docker-ce-<VERSION_STRING> docker-ce-cli-<VERSION_STRING> containerd.io docker-compose-plugin
4.启动docker(非开机自启)
sudo systemctl start docker
5.测试是否安装成功
sudo docker run hello-world
补充:docker如需开机自启请执行以下命令:
# step 1:开启自启
sudo systemctl enable docker.service
sudo systemctl enable containerd.service
# step 2:关闭自启
sudo systemctl disable docker.service
sudo systemctl disable containerd.service
6.配置镜像加速器(阿里云)
# step 1:
sudo mkdir -p /etc/docker
# step 2:
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["自己阿里云加速器地址"]
}
EOF
# step 3:
sudo systemctl daemon-reload
# step 4:
sudo systemctl restart docker
若docker容器中没有一下镜像,直接运行此命令会自动下载对应镜像,无需人工查找。
java镜像:
docker run -it --name java8 -v /etc/localtime:/etc/localtime:ro -d docker.io/java:8
mysql镜像:
lower_case_table_names = 0时,mysql会根据表名直接操作,大小写敏感,默认为0。
docker run -d --restart=always -p 3306:3306 -e MYSQL_ROOT_PASSWORD=Wiz_zhihe_123456 --name mysql -v /home/mysql/data:/var/lib/mysql -v /home/mysql/mysql-files:/var/lib/mysql-files/ -v /etc/localtime:/etc/localtime:ro mysql
lower_case_table_names = 1时,mysql会先把表名转为小写,再执行操作。
docker run -d --restart=always -p 3306:3306 -e MYSQL_ROOT_PASSWORD=Wiz_zhihe_123456 --name mysql -v /home/mysql/data:/var/lib/mysql -v /home/mysql/mysql-files:/var/lib/mysql-files/ -v /etc/localtime:/etc/localtime:ro mysql --lower-case-table-names=1
参考: lower-case-table-names:mysql8.0 blog.csdn.net/p793049488/…
redis镜像:
docker run --restart=always --log-opt max-size=100m --log-opt max-file=2 -p 6379:6379 --name redis -v /home/redis/myredis/redis.conf:/etc/redis/redis.conf -v /home/redis/myredis/data:/data -v /etc/localtime:/etc/localtime:ro -d redis redis-server /etc/redis/redis.conf --appendonly yes --requirepass 123456
nginx镜像:
docker run \
-p 80:80 \
--name nginx \
-v /home/nginx/conf/nginx.conf:/etc/nginx/nginx.conf \
-v /home/nginx/conf/conf.d:/etc/nginx/conf.d \
-v /home/nginx/log:/var/log/nginx \
-v /home/nginx/html:/usr/share/nginx/html \
-v /etc/localtime:/etc/localtime:ro -d nginx
nacos镜像:
docker run -d -p 8848:8848 -p 9848:9848 -p 9849:9849 \
--restart=always \
-e MODE=standalone \
-e JVM_XMS=200m \
-e JVM_XMX=200m \
-e JVM_XMN=150m \
--name nacos nacos/nacos-server
jenkins镜像
- 首选:
docker run --name jenkins -u root -di --restart=always -p 8080:8080 -p 50000:50000 -v /home/jenkins_home:/var/jenkins_home -v /etc/localtime:/etc/localtime:ro -v /var/run/docker.sock:/var/run/docker.sock -v $(which docker):/usr/bin/docker jenkins/jenkins:lts
- 次选:
docker run -di --name jenkins -p 8080:8080 -v /home/jenkins_home:/var/jenkins_home \
--restart=always \
-v /etc/localtime:/etc/localtime:ro \
-v /usr/local/soft/jdk1.8.0_341:/usr/local/jdk1.8.0_341 \
-v /usr/local/soft/maven/apache-maven-3.8.6:/usr/local/apache-maven-3.8.6 \
-v $(which docker):/usr/bin/docker \
-v /var/run/docker.sock:/var/run/docker.sock jenkins/jenkins:lts
3 gitLab私服搭建
docker安装gitlab: SSH(22)、HTTP(80) 和 HTTPS(443)
1.拉取镜像
docker pull gitlab/gitlab-ce
2. 运行镜像
docker run --detach \
--publish 10443:443 --publish 1080:80 --publish 1022:22 \
--name gitlab \
--restart always \
--privileged=true \
--volume /etc/localtime:/etc/localtime:ro \
--volume /home/gitlab/config:/etc/gitlab \
--volume /home/gitlab/logs:/var/log/gitlab \
--volume /home/gitlab/data:/var/opt/gitlab \
gitlab/gitlab-ce:latest
3. 开启1080、1022、10443端口
firewall-cmd --zone=public --add-port=1080/tcp --permanent
firewall-cmd --zone=public --add-port=1022/tcp --permanent
firewall-cmd --zone=public --add-port=10443/tcp --permanent
# 重启防火墙才能生效
systemctl restart firewalld
# 查看已经开放的端口
firewall-cmd --list-ports
4. 浏览器访问
5. 修改root密码
# step 1:进入容器内部
docker exec -it gitlab /bin/bash
# step 2:进入控制台
gitlab-rails console -e production
# step 3:查询id为1的用户,id为1的用户是超级管理员
user = User.where(id:1).first
# step 4:修改密码为lhx123456
user.password='lhx123456'
# step 5:保存
user.save!
# step 6:退出
exit
6. 修改配置
# step 1:进入容器内部
docker exec -it gitlab /bin/bash
# step 2:修改gitlab.rb
vi /etc/gitlab/gitlab.rb
# step 3:加入如下配置
# step 3.1:gitlab访问地址,可以写域名(域名需要解析)。如果端口不写的话默认为80端口;
external_url 'http://ip'
# step 3.2:如果写端口号,则需要修改nginx端口号,要保持一致。(可选)
external_url 'http://ip:port'
nginx['listen_port'] = port
# step 4:ssh主机ip
gitlab_rails['gitlab_ssh_host'] = 'ip'
# step 5:ssh连接端口
gitlab_rails['gitlab_shell_ssh_port'] = port
# step 6:让配置生效
gitlab-ctl reconfigure
# step 7:修改http和ssh配置
vi /opt/gitlab/embedded/service/gitlab-rails/config/gitlab.yml
# step 7.1:找到这面设置:
gitlab:
host: ip(一般这个系统都给你配好了)
port: port # 这里改为HTTP80绑定到宿主机端口号(这句话建立在你端口号默认为80)
https: false
7. Gitlab操作
# step 1:创建分组
右上角Menu(点击)---->Groups(点击)---->Your groups(点击)---->New group(点击)---->Create group(点击)---->Group name(填写)(其他选项按实际开发选择)---->Create group
# step 2:创建项目
进入创建的分组---->New project(点击)---->Create blank project(点击)---->Project name(填写)(其他选项按实际开发选择)---->Create project
如需其他镜像可从docker仓库获取:hub.docker.com/