个人笔记
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

318 lines
7.5 KiB

3 years ago
# docker的安装与使用
## 安装(centos)
- 卸载旧版本
```shell
$ sudo yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
```
- 安装依赖
```shell
yum install -y yum-utils \
device-mapper-persistent-data \
lvm2
```
- 设置仓库(非必须)
官方源地址(比较慢)
```shell
yum-config-manager \
--add-repo \
https://download.docker.com/linux/centos/docker-ce.repo
```
阿里云
```shell
yum-config-manager \
--add-repo \
http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
```
清华大学源
```shell
yum-config-manager \
--add-repo \
https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/centos/docker-ce.repo
```
- 安装**docker**
安装最新版本
```shell
yum install docker-ce docker-ce-cli containerd.io
```
安装指定版本
```shell
yum install docker-ce-<VERSION_STRING> docker-ce-cli-<VERSION_STRING> containerd.io
```
启动**docker**
```shell
systemctl start docker
```
设置开机启动
```shell
systemctl enable docker
```
停止**docker**
```
systemctl stop docker
```
- 卸载**docker**
删除安装包
```shell
yum remove docker-ce
```
删除镜像、容器、配置文件等内容,默认路径为:/var/lib/docker,自定义路径为:/etc/docker/daemon.json中data-root属性
## 使用
- 镜像
获取最新版本镜像
```shell
docker pull <镜像名称>
docker pull <镜像名称>:latest
```
获取指定版本
```shell
docker pull <镜像名称>:<版本号>
```
删除镜像
```shell
docker rmi <镜像ID>
```
- 创建与启动容器
创建新容器并启动
```shell
docker run -itd --<容器名> <镜像名> <容器内执行的命令>
```
参数说明
```tex
-i: 以交互模式运行容器,通常与 -t 同时使用;
-t: 为容器重新分配一个伪输入终端,通常与 -i 同时使用;
-d: 后台运行容器,并返回容器ID;
-p: 指定端口映射,格式为:主机(宿主)端口:容器端口
-v: 挂载宿主机的一个目录到容器,格式为:主机(宿主)目录:容器目录;
-e: username="ritchie": 设置环境变量;
-m: :设置容器使用内存最大值;
--privileged 容器内root用户是否真正拥有root权限
--restart :容器退出是重启策略
no默认值,表示容器退出时,docker不自动重启容器
on-failure 若容器的退出状态非0,则docker自动重启容器,还可以指定重启次数,若超过指定次数未能启动容器则放弃
always 容器退出时总是重启
unless-stopped 容器退出时总是重启,但不考虑Docker守护进程启动时就已经停止的容器
如果容器启动时没有设置–restart参数,则通过下面命令进行更新:
docker update --restart=always <容器ID>
```
停止容器
```shell
docker stop <容器ID>
```
启动容器
```shell
docker start <容器ID>
```
- 进入退出
查看所有容器
```shell
docker ps -a
```
进入容器,**attach**或**exec**(推荐使用,退出容器终端容器不会停止)
```shell
docker exec -it <容器ID> /bin/bash
```
进入容器后输入**exit** 退出容器
- 删除与导入导出
删除容器
```shell
docker rm -f <容器ID>
```
导出容器
```shell
docker export <容器ID> > <文件名>
```
导入容器
```shell
cat <文件名> | docker import - <镜像名>
```
## Docker安装其他软件
- 安装**mysql**
```shell
docker pull mysql:5.7.27
docker run -itd --name mysql-server -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql:5.7.27
```
- 安装**nginx**
```shell
docker pull nginx
docker run -d --name nginx -p 80:80 -v /home/nginx/nginx.conf:/etc/nginx/nginx.conf -v /home/nginx/logs:/var/log/nginx -v /home/nginx/data:/home nginx
```
- 安装**gitea**
```shell
docker pull gitea/gitea
docker run -d --name gitea --privileged --restart=always -p 122:22 -p 3000:3000 -v /home/gitea/data:/data gitea/gitea
```
- 安装**gitlab**
```shell
docker search gitlab
docker pull twang2218/gitlab-ce-zh
docker run -d -p 443:443 -p 280:80 -p 222:22 --name gitlab --privileged --restart always -v /home/gitlab/config:/etc/gitlab -v /home/gitlab/logs:/var/log/gitlab -v /home/gitlab/data:/var/opt/gitlab twang2218/gitlab-ce-zh
```
修改gitlab.rb配置文件
```tex
external_url "http://gitlab.xumy.vip:28080"
nginx['proxy_set_headers'] = { "Host" => "gitlab.xumy.vip:28080" }
```
- 安装禅道
拉取镜像
```shell
docker pull easysoft/zentao:15.7.1
```
创建网络驱动
```shell
docker network create --subnet=172.172.172.0/24 zentaonet
```
启动容器
```tex
sudo docker run --name [容器名] -p [主机端口]:80 --network=[网络驱动名] --ip [容器IP] --mac-address [mac地址] -v [主机禅道目录]:/www/zentaopms -v [主机mysql目录]:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=[数据库密码] -d easysoft/zentao:[镜像标签]
其中,容器名:启动的容器名字,可随意指定;
主机端口:主机端口为web访问端口;
网络驱动名:刚刚创建的网络驱动名;
容器IP:在网络驱动范围内选择一个作为该容器的固定ip;
mac地址:指定固定的mac地址,建议范围为02:42:ac:11:00:00 到 02:42:ac:11:ff:ff;
主机禅道目录:必须指定,方便禅道代码、附件等数据的持久化,非升级情况需指定空目录;
主机mysql目录:必须指定,方便禅道数据持久化,非升级情况需指定空目录;
数据库密码: 容器内置mysql用户名为root,默认密码123456,如果不修改可以不指定该变量,如果想更改密码可以设置 MYSQL_ROOT_PASSWORD变量来更改密码;
```
```shell
docker run --name zentao -p 8080:80 --network=zentaonet --ip 172.172.172.2 --mac-address 02:42:ac:11:00:ff -v /home/zentao/pms:/www/zentaopms -v /home/zentao/mysql:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -d easysoft/zentao:15.7.1
```
- 安装**redis**
```shell
docker pull redis:latest
docker run -d --name redis -p 6379:6379 redis:latest
```
- 安装**masterlab**
```shell
cd /home
git clone https://gitee.com/firego/masterlab-docker.git
cd ./masterlab-docker/www
git clone https://gitee.com/firego/masterlab.git
cd ./masterlab
unzip ./vendor.zip
docker run -d --name php74 --expose=9000 -p 9000:9000 --link mysql-server:mysql --link redis:redis \
-v /home/masterlab-docker/www/:/var/www/html/ \
-v /home/masterlab-docker/conf/php/php74.ini:/usr/local/etc/php/php.ini \
-v /home/masterlab-docker/conf/php/php-fpm.d/www74.conf:/usr/local/etc/php-fpm.d/www.conf \
-v /home/masterlab-docker/log/php-fpm/:/var/log/php-fpm/ \
gopeak/masterlab:php-fpm-74
docker run -d --name nginx-alpine -p 80:80 -p 443:443 --link php74:fpm74 \
-v /home/masterlab-docker/www/:/var/www/html/ \
-v /home/masterlab-docker/conf/nginx/conf.d:/etc/nginx/conf.d/ \
-v /home/masterlab-docker/conf/nginx/nginx.conf:/etc/nginx/nginx.conf \
-v /home/masterlab-docker/log/nginx/:/var/log/nginx/ \
-e "TZ=Asia/Shanghai" \
nginx:alpine
docker run -d -it --rm --name php74-cli \
-p 9002:9002 \
-v /home/masterlab-docker/www/masterlab:/usr/workspaces/project \
-w /usr/workspaces/project \
gopeak/masterlab:php-cli-74 \
php ./bin/swoole_server.php
```