提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
前言
- 只是记录平时学习及工作中的一些成果,提供给初学者一些帮助
一、docker是什么?
- vmware这种虚拟机软件,是一种安装在电脑的一款软件,可以通过它在一台windows系统的电脑中创建多个不同系统的“子电脑”,系统可以是linux,windows等等,系统之间资源相互隔离,缺点就是由于这些子系统跟平时用的系统环境没太大区别,系统占用很大,启动很慢,而且有些虚拟机软件需要收费使用。
对于docker是一种轻量虚拟化技术,相比vmware而言比较轻量,可以在一台电脑上创建很多容器,这些容器可以理解成“子电脑”,优点就是这些“子电脑”创建及启动速度很快,像是启动一个进程。
二、使用步骤
1.安装docker
- 安装系统 centos7或者8
- 关闭linux防火墙 service iptables stop 或者 systemctl stop firewalld
- 方法一:使用阿里镜像源安装,在国内服务器安装比较快
sudo yum install -y yum-utils device-mapper-persistent-data
sudo yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
sudo yum install docker-ce-18.06.1*
sudo service docker start //启动
sudo chkconfig docker on //设置开机自动启动
- 方法二:一键安装
sudo wget -qO- https://get.docker.com/ | sudo sh
sudo service docker start //启动
sudo chkconfig docker on //设置开机自动启动
以上安装的是一个软件进程,可以提供对外端口服务,可以创建容器等等,最终是程序通过容器来运行。
注意:如果是非root安装后创建容器会出现权限问题,执行命令sudo usermod -aG docker root1,(root1为用户名)
安装成功后,docker version 查看版本
- 附debian系统安装
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh
sudo systemctl start docker #开启服务
systemctl enable docker.service #开机自运行
2.配置端口(可选)
- 如果用户使用开发环境搭建,可以开放docker工具的服务端口,方便研发电脑调用其端口进行镜像构建上传等服务.
- 默认情况下,Docker守护进程Unix socket(/var/run/docker.sock)来进行本地进程通信,而不会监听任何端口,因此只能在本地使用docker客户端或者使用Docker
API进行操作。如果想在其他主机上操作Docker主机,就需要让Docker守护进程打开一个HTTP Socket,这样才能实现远程通信。
1.vim /lib/systemd/system/docker.service
2.将第11行的ExecStart=/usr/bin/dockerd,替换为:
ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock -H tcp://0.0.0.0:7654
其中2375是管理端口(可以用于maven打包上传),7654是备用端口
3.在~/.bashrc中写入docker管理端口 export DOCKER_HOST=tcp://0.0.0.0:2375
source ~/.bashrc
4.重启:service docker restart
3.创建启动容器
- 用docker安装nginx容器进行举例
#拉取镜像,从远程拉取镜像到本地
docker pull nginx:1.12.2
#首先根据默认参数运行
docker run --name nginx -p 80:80 -d nginx:1.12.2
#创建文件夹
mkdir -p /docker/nginx/www /docker/nginx/logs /docker/nginx/conf
#查看容器内文件
docker exec nginx ls /etc/nginx
#将容器内的配置文件copy到宿主机器
docker cp nginx:/etc/nginx/ /docker/nginx/conf
#启动
docker run -d -p 80:80 --restart=always -v /docker/nginx/conf/:/etc/nginx/ -v /docker/nginx/logs/:/var/log/nginx/ -v /docker/nginx/www/:/etc/nginx/html/ --name nginx nginx:1.12.2
#查看容器列表及状态
docker ps
#查询所有容器包括没有运行的容器列表
docker ps -a
docker stats #查询所有容器的cpu,内存,网络io,磁盘io的资源消耗情况
docker cp 可以在宿主系统和容器中进行文件的拷贝
docker run 启动
-p 后端运行容器
-p 将宿主系统端口和容器端口进行映射,如果不加上这个配置,外界无法访问到容器
-v 将容器的配置文件等挂载到宿主主机,这样可以随意修改,在容器中不方便修改
–restart=always 如果容器所在系统重启后,容器将自动拉起,无需人工启动,线上环境建议加上
3.注意
- 如何进入容器: docker exec -it 容器ID/容器名称 /bin/bash
-(如果执行错误使用 docker exec -it 容器ID/容器名称 /bin/sh) - 后面持续补充
总结
docker在服务器部署应用很广泛,配合微服务,部署管理方便,提高部署效率和减少出错率