文中所有操作均基于Centos Stream 9
Docker的安装和基本操作
安装 docker
卸载旧版本 docker
yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
修改为docker地址为国内源
修改软件仓库地址为清华源,docker 的下载更新地址
# redhat 系列
yum install -y yum-utils
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
sed -i 's+https://download.docker.com+https://mirrors.tuna.tsinghua.edu.cn/docker-ce+' \
/etc/yum.repos.d/docker-ce.repo
安装 docker
yum install docker-ce \
docker-ce-cli \
containerd.io \
docker-buildx-plugin \
docker-compose-plugin
docker 操作镜像
Docker 操作镜像
# 根据 IMAGE ID 删除
docker rmi {image_id}
Docker 操作容器
# 查看正在运行的容器
docker ps
# 查看所有容器
docker ps -a
# 停止容器
docker stop {container_name}
# 删除容器
docker rm {container_id}
# 进入容器
docker exec -it {container_name} bash
# exit 退出容器
安装 Gitlab
截至 2025 年 1 月 20 日 ,目前国内可用的docker镜像仓库 https://docker-0.unsee.tech/
下载 gitlab 的镜像
# 国内可用源
docker pull docker-0.unsee.tech/gitlab/gitlab-ce
# 以上为临时使用可用的源,不想每次拉取镜像的时候都指定源,可以修改 docker 的默认配置
# 修改 /etc/docker/daemon.json 文件
vim /etc/docker/daemon.json
# 添加以下配置
{
"registry-mirrors": [
"https://docker.unsee.tech"
]
}
# 重启 docker 服务即可生效
sudo systemctl daemon-reload && sudo systemctl restart docker
查看 docker 已下载的镜像,以安装 gitlab 为例
docker images
# 显示的镜像信息
REPOSITORY TAG IMAGE ID CREATED SIZE
gitlab/gitlab-ce 17.6.0-ce.0 645802b84d05 2 days ago 3.5GB
# 查看 docker 软件信息,其中包含镜像的存储位置
docker info
# Docker Root Dir: /var/lib/docker
运行 docker 镜像
docker run --detach \
--hostname 192.168.1.11 \
--publish 10008:80 --publish 10009:443 --publish 10010:22 \
--restart always --name gitlab \
--volume /home/gitlab/etc:/etc/gitlab \
--volume /home/gitlab/logs:/var/log/gitlab \
--volume /home/gitlab/data:/var/opt/gitlab \
--privileged=true gitlab/gitlab-ce:17.6.0-ce.0 # 指定 tag
查看 docker 安装的 gitlab 的初始密码
docker exec -it {container_name/container_id} grep 'Password:' /etc/gitlab/initial_root_password
安装 MySQL
下载 mysql 镜像指定其 tag 版本略过,与 gitlab 相同
mysql 容器启动的启动脚本
docker run --detach \ # 后台启动
--publish 10010:3306 \ # 监听系统端口,对应 mysql 端口
--restart unless-stopped \
--name mysql \
--volume /home/mysql/conf:/etc/mysql \
--volume /home/mysql/logs:/var/log/mysql \
--volume /home/mysql/data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=123456 \
mysql/mysql-server:5.7
设置 docker 安装的 mysql root 访问权限
# 进入 mysql 容器
docker exec -it mysql bash
# 查询
select user,host from user;
+---------------+-----------+
| user | host |
+---------------+-----------+
| healthchecker | localhost |
| mysql.session | localhost |
| mysql.sys | localhost |
| root | localhost |
+---------------+-----------+
# 默认是localhost
# 授权
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'root' WITH GRANT OPTION;
# 刷新权限
FLUSH PRIVILEGES;
安装 Redis
docker run --detach \
--publish 10011:6379 \
--name redis \
--restart no \
--volume /home/redis/redis.conf:/etc/redis/redis.conf \
--volume /home/redis/data:/data \
redis:7.4.1-alpine3.20 redis-server /etc/redis/redis.conf \
--appendonly yes # redis启动后数据持久化
进入 docker 容器的时候报错 OCI runtime exec failed: exec failed: unable to start container process: exec: "/bin/bash": stat /bin/bash: no such file or directory: unknown
,因为安装的时 redis 精简版,没有 bash,需要将 bash 换成 sh 才可以
docker exec -it redis /bin/sh