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
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
|
||
|
|
||
|
|
||
|
```
|
||
|
|
||
|
|
||
|
|