Docker
配置环境
1 |
|
1 |
|
基本用法
1 |
|
创建镜像
docker build -t xxx .
1 |
|
搭建 GitLab
下载镜像
1
2docker search gitlab
docker pull gitlab/gitlab-ce启动容器
1
2
3
4
5
6
7
8
9
10
11
12docker run \
--detach \
--hostname gitlab.example.com \ # 设置主机名或域名
--publish 1443:443 \ # 本地端口的映射,也可使用 443:443,可能有冲突
--publish 8080:80 \ # 本地端口的映射,也可使用 80:80,可能有冲突
--publish 2222:22 \ # 本地端口的映射,也可使用 22:22,可能有冲突
--name gitlab \ # gitlab-ce 的镜像运行成为一个容器,这里是对容器的命名
--restart unless-stopped \ # 设置重启方式
--volume /home/gitlab/etc:/etc/gitlab \ # 将 gitlab 的配置文件目录映射到 /home/gitlab/etc 目录中
--volume /home/gitlab/log:/var/log/gitlab \ # 将 gitlab 的日志文件目录映射到 /home/gitlab/log 目录中
--volume /home/gitlab/opt:/var/opt/gitlab \ # 将 gitlab 的数据文件目录映射到 /home/gitlab/opt 目录中
gitlab/gitlab-ce # 需要运行的镜像修改配置
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16$ vim /home/gitlab/etc/gitlab.rb
# 配置 http 协议所使用的访问地址 --- 就是你主机的地址或者域名,不加端口号默认为 80
# 如果上述容器 80 端口映射的是非 80 端口,此处需要加上端口号:8080:80,那下面就得拼上 8080
external_url 'http://192.168.31.110'
# external_url 'http://192.168.31.110:8080'
# 配置 ssh 协议所使用的访问地址和端口,此处不用加端口
gitlab_rails['gitlab_ssh_host'] = '192.168.31.110'
# 此端口是 run 时 22 端口映射的 22 端口,同理,如果映射的是非 22 端口,此处也得写映射后的端口
gitlab_rails['gitlab_shell_ssh_port'] = 22
# gitlab_rails['gitlab_shell_ssh_port'] = 2222
$ docker exec gitlab gitlab-ctl reconfigure # 使配置文件生效
$ docker restart gitlab # 重启 gitlab获取 gitlab 的 root 密码
1
2
3docker exec -it gitlab /bin/bash # 进入容器
# 容器内部执行
cat /etc/gitlab/initial_root_password # initial_root_password 文件夹只有在首次启动 gitlab 才会出现,且 24 小时候会自动删除修改 gitlab 的 root 密码
1
2
3
4
5
6
7
8docker exec -it gitlab /bin/bash # 进入容器
# 容器内部执行
gitlab-rails console -e production
user=User.where(id:1).first
user.password="12345678"
user.password_confirmation="12345678"
user.save!
quit
搭建 WordPress
下载镜像
1
2docker pull mysql
docker pull wordpress启动容器
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24docker run \
--detach \
--name wpdb \
--publish 3306:3306 \
--restart unless-stopped \
--volume /home/wordpressdb/lib:/var/lib/mysql \ # 挂载数据到宿主机
--env MYSQL_ROOT_PASSWORD=123456 \ # 设置 MySQL 的 root 账户密码
--env MYSQL_DATABASE=wordpress \ # 创建数据库 wordpress
--env MYSQL_USER=wordpress \ # 创建用户 wordpress
--env MYSQL_PASSWORD=wordpress \ # 设置用户 wordpress 的密码
mysql
docker run \
--detach \
--name wp \
--publish 8080:80 \
--restart unless-stopped \
--link wpdb:mysql \ # 容器名 : 别名
--volume /home/wordpress:/var/www/html \
--env WORDPRESS_DB_HOST=wpdb:3306 \
--env WORDPRESS_DB_USER=wordpress \
--env WORDPRESS_DB_PASSWORD=wordpress \
--env WORDPRESS_DB_NAME=wordpress \
wordpress验证容器间通信
1
2
3
4
5
6docker exec -it wp bash # 进入 wordpress 容器
# 容器内部执行
apt update && apt install iputils-ping # 安装 ping
ping mysql
# or
ping wp-mysql创建数据库
1
2
3
4
5docker exec -it wp-mysql bash # 进入容器
# 容器内部执行
mysql -u root -p # 登录 MySQL
create database wordpress; # 创建名为 wordpress 的数据库
quit配置数据库
问题:ERROR 2002 (HY000): Can’t connect to local MySQL server through socket ‘/var/run/mysqld/mysqld.sock’ (2) —- 等会就好了
搭建 GitBook
搭建 Jeklly
docker-compose
1 |
|
1 |
|
方法技巧
- 设置容器时间和时区的方法。方法一:在dockerfile中增加
RUN echo "Asia/Shanghai" > /etc/timezone && cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
;方法二:在启动容器的时候,将宿主机的对应目录挂在到容器里--volume /etc/localtime:/etc/localtime --volume /etc/timezone:/etc/timezone