docker使用与配置
docker基础知识
第一章docker基础知识
一、docker简介
Docker是一个开源的容器引擎,它基于LXC容器技术,使用Go语言开发。
源代码托管在Github上,并遵从Apache2.0协议。
Docker采用C/S架构,其可以轻松的为任何应用创建一个轻量级的、可移植的、自给自足的容器。
简单来说:Docker就是一种快速解决业务稳定环境的一种技术手段(快速搭建环境)。
一个完整的Docker有以下几个部分组成:
- DockerClient客户端
- Docker Daemon守护进程
- Docker Image镜像备注:有的系统会无效,自行上网搜索解决方法
- DockerContainer容器
二、原理解析
Docker Engine是一个C/S架构的应用程序,主要包含下面几个组件:
dockerd进程:常驻后台进程Dockerd
REST API Server:用来和 Dockerd 交互的
命令行CLI接口:和 REST API 进行交互(常用docker 命令)
分工合作
Docker 使用 C/S 体系的架构
Docker 客户端与 Docker 守护进程通信
Docker 守护进程负责构建,运行和分发 Docker 容器。
Docker 客户端和守护进程可以在同一个系统上运行,也可以将 Docker 客户端连接到远程 Docker 守护进程。
Docker 客户端和守护进程使用 REST API 通过UNIX套接字或网络接口进行通信。
三、docker安装
注意:如果安装方法无法就上网查
ubuntu:sudo apt install docker-ce -y
如果安装不成功:
curl -fsSL https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu/gpg | sudo apt-key add -
sudo add-apt-repository "deb [arch=amd64] https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu \ $(lsb_release -cs) stable"
sudo apt install docker-ce -y
centos: yum install docker-ce docker-ce-cli containerd.io
启动:systemctl start docker
重启:systemctl restart docker
停止:systemctl stop docker
开机自动启动:systemctl enable docker
关闭自动启动:systemctl disable docker
修改docker镜像源:
echo '{"registry-mirrors": ["http://hub-mirror.c.163.com"]}' > /etc/docker/daemon.json
配置docker免sudo:
sudo usermod -aG docker $USER
sudo systemctl restart docker
备注:有的系统会无效,自行上网搜索解决方法
第二章 docker基础管理
一、镜像管理
查找镜像:
docker search 镜像名
下载镜像:
docker pull 镜像名
从本地安装镜像:
docker image load -i 镜像包
简写:docker load -i 镜像包 或者 docker load < 镜像包
删除本地镜像:
docker image rm 镜像ID 或者 镜像名称
简写:docker rmi image_id
删除全部镜像:
docker rmi $(docker images -q)
镜像历史:
docker history image_id
标签:
docker tag old_image:old_version new_image:new_version
制作镜像:
docker commit -a ‘作者’ -m ‘描述’ 容器ID 新镜像名:版本
打包导出:
docker image save -o 镜像包.tar.gz 镜像:版本 # 保存到当前目录下
简写:docker save -o 镜像包.tar.gz 镜像
二、容器管理
查看正在运行的容器:
docker container ls
简写:docker ps
查看所有容器
docker container ls -a
简写:docker ps -a
关闭/启动/重启:
docker container stop | start | restart 容器ID
停止所有容器:
docker stop $(docker ps -a -q)
删掉容器:
docker container rm 容器ID
简写:docker rm 容器ID
删除全部容器:
docker rm $(docker ps -a -q)
强制删除容器:
docker container rm -f 容器ID
简写:docker rm -f 容器ID
查看容器运行日志:
docker logs 容器ID
创建新容器并运行容器:
docker run -itd 镜像名:版本
交互式容器(登录容器):
docker exec -it ID /bin/bash
三、数据管理
数据卷(映射目录):(重要)
docker run -itd -v [宿主机文件]:[容器文件] [镜像id/镜像名]
注意:-v 宿主机文件:容器文件 可以存在多个,表示同时挂载多个
宿主机文件尽量用绝对路径,容器文件即使不存在,Docker自动创建
四、网络管理
端口映射(随机) 网络模式默认为bridge模式
docker run -itd –name 别名 -P image_id # -P 大写P
端口映射(指定) 网络模式默认为bridge模式
docker run -itd –name 别名 -p 8080:80 image_id # -p 小写p
host模式
docker run -itd –name 别名 –netword=host image_id
第三章 Dockerfile
Dockerfile简而言之就是 编写Dockerfile脚本实现自动化构建自己想要的镜像
使用准则
1、大: 首字母必须大写D
2、空: 尽量将Dockerfile放在空目录中。
3、单: 每个容器尽量只有一个功能。
4、少: 执行的命令越少越好。
基础指令
FROM
: 指定基础镜像(镜像要已存在)MAINTAINER
: 维护者信息(姓名/邮箱)RUN
: 镜像操作指令ADD:
上传文件,一般用于上传压缩包,会自动解压压缩包COPY:
上传一般文件EXPOSE:
开放端口WORKDIR:
切换目录ENTRYPOINT
: 容器启动时执行指令
构建镜像:
cd 到Dockerfile所在的目录
docker build -t 新镜像名:版本 ./
执行完后会生成一个新的镜像
# 选择基础镜像
FROM centos:latest
# 作者
MAINTAINER caijinbo
# shell指令安装软件
RUN yum install -y nginx python3-devel net-tools openssh-server openssh-clients passwd gcc mariadb-devel
# 把工程上传到容器
ADD front_end_pc.tar.gz /data/
ADD project_admin.tar.gz /data/
ADD project.tar.gz /data/
COPY requirements.txt /data/
# 切换到工程目录,并安装依赖
WORKDIR /data/project/
RUN pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple --no-cache-dir --default-timeout=1000 -r /data/requirements.txt
COPY 8000.conf /etc/nginx/conf.d/
COPY 8080.conf /etc/nginx/conf.d/
COPY 8081.conf /etc/nginx/conf.d/
# 设置环境变量,作用:指定系统语言为UTF-8,否则,uwsgi运行无法处理中文语言
# ENV LC_ALL=zh_CN.UTF-8
# 容器开放端口8080和8081
EXPOSE 8080 8081
# 发送容器启动脚本
COPY command.sh /data/
# 切换容器目录
WORKDIR /data
# 指定容器运行的启动脚本
ENTRYPOINT ["/bin/bash","/data/command.sh"]
在Dockerfile同级目录下新建一个脚本
vim command.sh
cd /data/project/
uwsgi --ini uwsgi.ini
nginx -g 'daemon off;'
注意:所有要操作的文件或压缩包均放在Dockerfile同级目录下
版权声明:本博客所有文章除特殊声明外,均采用 CC BY-NC 4.0 许可协议。转载请注明出处 caijinbo的博客!