docker安装配置和服务部署
<h1>一、docker安装配置</h1>
<h3>yum安装</h3>
<pre><code class="language-bash">yum install -y yum-utils device-mapper-persistent-data lvm2
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
yum makecache fast
yum install docker-ce
systemctl start docker
docker version</code></pre>
<h4>详细步骤</h4>
<p>安装docker依赖</p>
<pre><code class="language-bash">yum install -y yum-utils device-mapper-persistent-data lvm2</code></pre>
<p>添加docker的yum源</p>
<pre><code class="language-bash">yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo</code></pre>
<p>更新yum并安装docker引擎</p>
<pre><code class="language-bash"> yum makecache fast</code></pre>
<p>安装docker</p>
<pre><code class="language-bash"> yum install docker-ce</code></pre>
<p>启动docker服务</p>
<pre><code class="language-bash">systemctl start docker</code></pre>
<p>验证是否安装成功</p>
<pre><code class="language-bash">docker version</code></pre>
<h3>apt安装docker</h3>
<pre><code class="language-bash">#腾讯云源
sudo apt-get update
sudo apt-get install -y ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://mirrors.cloud.tencent.com/docker-ce/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc
echo &quot;deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://mirrors.cloud.tencent.com/docker-ce/linux/ubuntu/ \
$(. /etc/os-release &amp;&amp; echo &quot;$VERSION_CODENAME&quot;) stable&quot; | sudo tee /etc/apt/sources.list.d/docker.list &gt; /dev/null
sudo apt-get update
sudo apt-get install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
systemctl enable docker
systemctl status docker
docker info
</code></pre>
<h3>切国内源</h3>
<pre><code class="language-yml">vim /etc/docker/daemon.json
{
&quot;registry-mirrors&quot;: [&quot;https://nrbewqda.mirror.aliyuncs.com&quot;,&quot;https://dmmxhzvq.mirror.aliyuncs.com&quot;]
}
#腾讯云源 https://mirror.ccs.tencentyun.com/
#https://hub.daocloud.io/
systemctl daemon-reload
systemctl restart docker</code></pre>
<h3>调整数据路径储存位置</h3>
<p>docker 26版本
1、以通过更新 Docker 的配置文件 `daemon.json 来实现</p>
<pre><code class="language-bash">
#1-调整配置文件
vim /etc/docker/daemon.json
#增加一下配置
{
&quot;data-root&quot;: &quot;/data/docker_repos/docker&quot;
}
sudo systemctl restart docker</code></pre>
<p>2、通过直接在启动 Docker 守护进程时提供一个新的命令行参数</p>
<pre><code class="language-bash">#1-调整启动文件
vim /etc/systemd/system/multi-user.target.wants/docker.service
#调整一下配置
ExecStart=/usr/bin/dockerd --data-root=/data/docker_repos/docker --storage-driver=overlay2
#重启服务
sudo systemctl daemon-reload
sudo systemctl restart docker
sudo systemctl status docker</code></pre>
<h3>修改容器自启配置</h3>
<pre><code class="language-bash">#查看容器当前自启参数
docker inspect --format &#039;{{ .HostConfig.RestartPolicy }}&#039; 容器id
#关闭自启配置
docker update --restart=no 容器id</code></pre>
<h3>进程关不掉</h3>
<pre><code class="language-bash">#Warning: Stopping docker.service, but it can still be activated by: docker.socke
#停用Docker自动唤醒机制
systemctl stop docker.socket
systemctl stop docker</code></pre>
<h1>二、docker部署mysql8</h1>
<h3>yum安装</h3>
<pre><code class="language-bash">yum install -y yum-utils device-mapper-persistent-data lvm2
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
yum makecache fast
yum install docker-ce
systemctl start docker
docker version</code></pre>
<h3>详细步骤</h3>
<p>在[hub.docker.com](<a href="https://link.juejin.cn/?target=https%3A%2F%2Fhub.docker.com%2F">https://link.juejin.cn/?target=https%3A%2F%2Fhub.docker.com%2F</a> "<a href="https://hub.docker.com/")上搜索mysql镜像">https://hub.docker.com/")上搜索mysql镜像</a>
启动镜像</p>
<pre><code class="language-bash">docker run -p 3308:3306 --name mysql8.2 -e MYSQL_ROOT_PASSWORD=123456 -d mysql:8.0.39
</code></pre>
<p>创建挂载目录</p>
<pre><code class="language-bash">mkdir -p /data/mysql8.0.20/
拷贝配置文件到创建的目录下
docker cp mysql8:/etc/mysql /data/mysql8.0.20/</code></pre>
<p>删除并重启容器</p>
<pre><code class="language-bash">docker stop mysql8
docker rm -f mysql8
</code></pre>
<p>编辑my.cnf</p>
<pre><code class="language-bash">cd /data/mysql8.0.20/mysql/conf.d
vim my.cnf
[mysqld]
user=mysql
character-set-server=utf8
default_authentication_plugin=mysql_native_password
secure_file_priv=/var/lib/mysql
expire_logs_days=7
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
max_connections=1000
[client]
default-character-set=utf8mb4
[mysql]
</code></pre>
<p>启动mysql8服务</p>
<pre><code class="language-bash">#!/bin/sh
vim docker_insert_mysql8.0.20.sh
sh docker_insert_mysql8.0.20.sh
docker run \
-p 3307:3306 \
--name mysql8 \
--privileged=true \
--restart unless-stopped \
-v /docker/mysql8/mysql:/etc/mysql \
-v /docker/mysql8/logs:/logs \
-v /docker/mysql8/data:/var/lib/mysql \
-v /docker/mysql8/mysql-files:/var/lib/mysql-files \
-v /etc/localtime:/etc/localtime \
-e MYSQL_ROOT_PASSWORD=123456 \
-e MYSQL_ROOT_HOST=&#039;%&#039; \
-d mysql:8
</code></pre>
<pre><code class="language-yaml">version: &#039;3&#039;
services:
mysql8:
image: mysql:8.0.20
container_name: mysql8
privileged: true
restart: unless-stopped
ports:
- &quot;3307:3306&quot;
volumes:
- /docker/mysql8/mysql:/etc/mysql
- /docker/mysql8/logs:/logs
- /docker/mysql8/data:/var/lib/mysql
- /docker/mysql8/mysql-files:/var/lib/mysql-files
- /etc/localtime:/etc/localtime
environment:
- MYSQL_ROOT_PASSWORD: &quot;123456&quot;
- TZ=Asia/Shanghai
- MYSQL_ROOT_HOST=&#039;%&#039;
- TZ=Asia/Shanghai
#正确的
version: &#039;3.8&#039;
services:
mysql8:
image: mysql:8.0.39
container_name: mysql8
privileged: true
restart: unless-stopped
ports:
- &quot;3306:3306&quot;
environment:
MYSQL_ROOT_PASSWORD: 17BtwaM74DH@u3ydP
MYSQL_ROOT_HOST: &#039;%&#039;
volumes:
- /data/docker_repos/mysql8/mysql:/etc/mysql
- /data/docker_repos/mysql8/logs:/logs
- /data/docker_repos/mysql8/data:/var/lib/mysql
- /data/docker_repos/mysql8/mysql-files:/var/lib/mysql-files
- /etc/localtime:/etc/localtime:ro</code></pre>
<p>可以改密码</p>
<pre><code class="language-bash">docker exec -it mysql8 bash
mysql -u root -p
grant all PRIVILEGES on *.* to root@&#039;%&#039; WITH GRANT OPTION;
use mysql
update user set host=&#039;%&#039; where user=&#039;root&#039;;
#由于Mysql5.6以上的版本修改了Password算法,这里需要更新密码算法,便于使用Navicat连接
grant all PRIVILEGES on *.* to root@&#039;%&#039; WITH GRANT OPTION;
ALTER user &#039;root&#039;@&#039;%&#039; IDENTIFIED BY &#039;123456&#039; PASSWORD EXPIRE NEVER;
ALTER user &#039;root&#039;@&#039;%&#039; IDENTIFIED WITH mysql_native_password BY &#039;123456&#039;;
FLUSH PRIVILEGES;</code></pre>
<h1>三、docker部署gitlab</h1>
<p>docker-compose.yml</p>
<pre><code>version: &#039;2&#039;
services:
gitlab:
image: &#039;gitlab/gitlab-ce:latest&#039;
restart: unless-stopped
hostname: &#039;yw-gitlab.shiyue.com&#039;
environment:
TZ: &#039;Asia/Shanghai&#039;
GITLAB_OMNIBUS_CONFIG: |
external_url &#039;https://yw-gitlab.shiyue.com&#039;
gitlab_rails[&#039;time_zone&#039;] = &#039;Asia/Shanghai&#039;
# 需要配置到 gitlab.rb 中的配置可以在这里配置,每个配置一行,注意缩进。
# 比如下面的电子邮件的配置:
gitlab_rails[&#039;smtp_enable&#039;] = true
gitlab_rails[&#039;smtp_address&#039;] = &quot;smtp.exmail.qq.com&quot;
gitlab_rails[&#039;smtp_port&#039;] = 25
gitlab_rails[&#039;smtp_user_name&#039;] = &quot;yunwei@shiyue.com&quot;
gitlab_rails[&#039;smtp_password&#039;] = &quot;55uHgzqYMEDZM5H3&quot;
gitlab_rails[&#039;smtp_authentication&#039;] = &quot;login&quot;
gitlab_rails[&#039;smtp_enable_starttls_auto&#039;] = true
gitlab_rails[&#039;gitlab_default_projects_features_builds&#039;] = false
# gitlab_rails[&#039;smtp_tls&#039;] = true
gitlab_rails[&#039;gitlab_email_from&#039;] = &#039;yunwei@shiyue.com&#039;
ports:
- &#039;10080:80&#039;
- &#039;10443:443&#039;
- &#039;10022:22&#039;
volumes:
- /data/docker_repos/yw-gitlab/config:/etc/gitlab
- /data/docker_repos/yw-gitlab/data:/var/opt/gitlab
- /data/docker_repos/yw-gitlab/logs:/var/log/gitlab
- /data/docker_repos/yw-gitlab/ssl:/etc/gitlab/ssl
networks:
extnetwork:
ipv4_address: 172.23.0.16
volumes:
config:
data:
logs:
networks:
extnetwork:
ipam:
config:
- subnet: 172.23.0.0/24
gateway: 172.23.0.1</code></pre>
<h3>切换ssh端口</h3>
<pre><code class="language-bash">#修改配置文件端口
vim /etc/gitlab/gitlab.rb
gitlab_rails[&#039;gitlab_shell_ssh_port&#039;] = 10022
#重载服务
gitlab-ctl reconfigure</code></pre>