安装docker并启动
-
运行下面和docker有关的服务时都应先启动docker 否则会报错
启动docker服务
sudo systemctl start docker
将docker服务设置为开机启动
sudo systemctl enable docker
创建所需的 docker 网络
docker network create net_name
net_name为网络名
拉取镜像以及运行容器
拉取镜像
docker pull docker_image_name
-
拉取名称为docker_image_name的镜像
拉取mongo镜像和nodebb镜像后根据镜像运行这两个容器
运行mongo容器
docker run --name mongo --restart always --network mongo-net -d mongo --wiredTigerCacheSizeGB 0.25
-
docker run 运行容器
--name 给该进程起名
--restart always 表示程序如果死掉就自动重新启动 ,守护进程
-d :后台运行,后面的参数为镜像名
mongo 镜像名
--wiredTigerCacheSizeGB 0.25 设置最大的内存使用为 0.25G
运行nodebb容器
docker run --restart always --name nodebb --network mongo-net -p 4567:4567 -d nodebb/docker
-
-p 将本地的4567端口映射到容器的4567端口(本地端口:容器端口)
--network mongo-net 给这个容器指定一个虚拟网络,不存在则报错,存在则加入这个网络
基本运维指令
查看容器的运行情况
docker ps -a
进入容器内命令行交互
docker exec -it 容器ID/容器名 bash
查看所有网络列表
docker network ls
如果想要建立一个自己的镜像
-
先建立一个Dockerfile文件 以一个python应用程序举例
# 基于镜像基础
#FROM python:3.6
FROM python:3.6-slim-stretch #有更小的体积,上面环境的依赖大约为1GB,该依赖只有不到100MB
# 维护者信息
MAINTAINER docker_user docker_user@email.com
# 复制当前代码文件到容器中 /app
ADD . /app
# 设置容器时间,有的容器时区与我们的时区不同,可能会带来麻烦
RUN cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo 'Asia/Shanghai' >/etc/timezone
# 设置语言为utf-8
ENV LANG C.UTF-8
# 设置工作目录,也就是下面执行 ENTRYPOINT 后面命令的路径
WORKDIR /code/bdtools
# 设置app文件夹是工作目录 /app
WORKDIR /app
#解决Dockers中打印日志不及时的问题
ENV PYTHONUNBUFFERED=0
# 安装所需的包,默认为使用python官方镜像源,安装 比较慢
#RUN pip install -r requirements.txt
#可以修改为清华源
RUN pip install -r requirements.txt - i https://pypi.tuna.tsinghua.edu.cn/simple
EXPOSE 7777
# EXPOSE 指令是声明运行时容器提供服务端口,这只是一个声明,在运行时并不会因为这个声明应用就会开启这个端口的服务。
# 此处填写7777,是因为我们上面的app.py提供的web服务就需要使用7777端口
# Run test.py when the container launches
CMD ["python", "/app/test/test.py"]
ENTRYPOINT ["python3","app.py"]
切换到Dockerfile所在目录,运行
docker build -t docker_image_name .
docker_image_name为docker镜像的名字
如果没有问题,该docker会加入系统的docker列表中
使用docker images
查看所有镜像
导出镜像或容器
导出镜像
docker save -o docker.tar docker_image_name:latest
或
docker save > docker.tar nginx:latest
其中-o和>表示输出到文件,docker.tar为目标文件,docker_image_name:latest是源镜像名(name:tag)
从导出镜像中载入
示例
docker load -i docker.tar
或
docker load < docker.tar
其中-i和<表示从文件输入。会成功导入镜像及相关元数据,包括tag信息
导出容器
docker export docker_name/docker_id > docker.tar
docker_name/docker_id为docker容器的名字或者id
导入由容器导出的镜像
docker import - docker_image_name < docker.tar
docker_image_name为导入后docker镜像的名字
快速搭建nodebb环境
-
可以使用别人搭建好的一键脚本
需要事先安装好docker以及docker-compose
docker和docker-compose的一键安装脚本
git clone https://github.com/luckman666/shell_scripts.git
cd shell_scripts && chmod -R 755 .
./deploy_docker_and_composes.sh
nodebb一键安装脚本
git clone https://github.com/luckman666/nodebb.git
cd nodebb
docker-compose up -d
nodebb安装过程需要先配置好nodebb数据库
先进入mongodb容器
输入$mongo
进入命令行
可以先在admin数据库中设置数据库的root密码
> use nodebb
进入nodebb数据库,若无该数据库则先创建再进入
添加访问 nodebb 数据库的用户,输入:
db.createUser( { user: "nodebb",
... pwd: "<输入密码>",
... roles: [ "dbAdmin" ] } )
若未改变参数 nodebb初始化界面的用户名应填写nodebb,密码为输入的密码
roles为权限参数 readWrite 将制定数据库的读或写任何集合(collection)的权限付给用户。
由于某些插件需要修改数据库,所以建议将权限设置为dbAdmin
docker容器文件位置一般在实体机目录的/var/lib/docker/overlay2/中
Comments 1 条评论
ฅฅrhyฅฅฅฅrhyฅฅฅฅrhyฅฅฅฅrhyฅฅฅฅrhyฅฅ