以下基于CentOS系统进行记录,防止日后忘了查看的。
不知道命令怎么使用
用 --help 可以查看命令的解释。
#例如
docker --help #可以查看 docker 的所有详细命令和解释
一、Docker
一、基本知识
Docker解决依赖兼容问题:
- 将应用的Libs(函数库)、Deps(依赖)、配置与应用一起打包,形成可移植镜像。
- 将各应用放到一个隔离容器去运行,避免互相干扰。沙箱机制,相互隔离。
二、安装Docker
2.1 卸载(可选)
如果之前安装过旧版本的Docker,可以先卸载:
yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-selinux \
docker-engine-selinux \
docker-engine \
docker-ce
2.2 yum安装
- 安装yum工具(如果没有的话)
yum install -y yum-utils \
device-mapper-persistent-data \
lvm2 --skip-broken
- 更新本地镜像源:
# 设置docker镜像源
yum-config-manager \
--add-repo \
https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
sed -i 's/download.docker.com/mirrors.aliyun.com\/docker-ce/g' /etc/yum.repos.d/docker-ce.repo
yum makecache fast
- 输入命令安装:
yum install -y docker-ce
2.3 启动docker
systemctl start docker # 启动docker服务
systemctl stop docker # 停止docker服务
systemctl restart docker # 重启docker服务
测试,查看docker 版本:
docker -v
三、Docker基本操作
镜像:
- 镜像名称两部分组成: [repository]:[tag]。
- 没有指定tag时,默认时latest,最新版本镜像。
- ex: mysql:5.7
3.1 镜像操作命令
docker images #查看本地所有镜像
docker rmi #删除本地镜像
docker save #保存一个镜像为压缩包
docker load # 加载一个压缩包为镜像
docker build # 构建镜像
docker push # 推送镜像到服务
docker pull # 从服务拉取镜像
3.2 例子:从DockerHub拉去一个nginx镜像并查看
- 1、去镜像库搜索nginx,比如 DockerHub
- 2、拉取镜像: docker pull nginx
- 3、查看镜像: docker images
3.3 容器相关命令
docker run # 运行一个容器
docker pause #暂停一个容器
docker unpause # 让暂停的容器继续运行
docker start # 开始一个容器
docker stop #停止一个容器
docker exec #进入容器执行命令
docker logs # 查看容器运行日志
docker ps #查看所有运行的容器和状态
docker rm #删除运行的容器
3.4 案例:
# 创建运行一个nginx容器
docker run --name mn -p 80:80 -d nginx
# 进入nginx容器,修改HTML文件内容
# 一:进入容器
docker exec -it mn bash
# 二: 进入HTML所在目录
cd /usr/share/nginx/html
#三: 修改index.html的内容
sed -i 's#原本内容#新内容#g' index.html
#创建并运行一个redis容器,并且支持数据持久化
#一到dockerhub搜索redis,二查看文档,三docker run
docker run --name redis -p 6379:6379 -d redis redis-server --appendonly yes
3.5 创建mysql容器,同时挂载目录
#一、dockerhub找到想要的mysql版本镜像
#二、导入镜像到本地docker
#三、运行,并挂在文件目录
docker run \
--name mysql \
-e MYSQL_ROOT_PASSWORD=123 \
-p 3306:3306 \
-v /root/tmp/mysql/conf/hmy.cnf:/etc/mysql/conf.d/hmy.cnf \
-v /root/tmp/mysql/data:/var/lib/mysql \
-d \
mysql:5.7.25
四、Dockerfile自定义镜像
五、Dokcer compose
二、Docker启动nginx服务,并挂载目录和文件
步骤:
1、获取nginx镜像
去dockerhub查找并查看文档,下载镜像
2、准备要挂载的文件和目录
主要是2个配置文件,2个目录
- nginx.conf
- default.conf
- html文件
- logs文件
我的结构如下、参照第三步的启动命令,自行修改自己的目录
├── root
│ ├── soft
│ │ ├── nginx
│ │ │ ├──conf ├──nginx.conf
│ │ │ ├──conf.d ├──default.conf
│ │ │ ├──html
│ │ │ ├──logs
解释:前两个是配置文件,方便修改配置; html,放前端项目,logs日志文件;
比如部署vue项目:将dist文件里的东西 放到html即可。
注意:windows版本的nginx.conf 和 docker下的nginx.conf有些许区别,我之前用windows的nginx.conf放到centos的挂载目录下,是不能运行nginx的; 解决:用docker下的nginx.conf
但是我没读文档,对配置文件的配置项不是特别了解,先列一个可行的nginx.conf,不一定适用别人:
user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log notice;
pid /var/run/nginx.pid;
events {
worker_connections 1024;
}
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
sendfile on;
#tcp_nopush on;
keepalive_timeout 65;
#gzip on;
include /etc/nginx/conf.d/*.conf;
#下面是我加的,本质没有什么区别,还可以配置反向代理等等;
server{
listen 80;
server_name localhost;
location / {
root /;
try_files $uri $uri/ /index.html; # 解决刷新报404的问题
index index.html index.htm;
}
}
}
3、启动容器
注意中间-v的挂载文件,替换成自己的就行
docker run --name mn -p 80:80 \
-v /root/soft/nginx/html:/usr/share/nginx/html \
-v /root/soft/nginx/conf/nginx.conf:/etc/nginx/nginx.conf \
-v /root/soft/nginx/conf.d/default.conf:/etc/nginx/conf.d/default.conf \
-v /root/soft/nginx/logs:/var/log/nginx \
-d nginx