Docker
组成部分
镜像 image 只读的模板 可以用来创建Docker容器
容器 container 独立运行的一个或一组应用。容器是用镜像创建的运行实例。
仓库 repository 是集中存放镜像文件的场所
$sudo 暂时拥有root用户权限
安装
卸载旧版本
yum -y remove docker docker-common docker-selinux docker-engine
安装需要的软件包
yum install -y yum-utils device-mapper-persistent-data lvm2
设置stable镜像仓库
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
更新yum软件包索引
yum makecache fast
安装DOCKER CE
yum -y install docker-ce
查看版本
docker -v
启动docker
systemctl start docker
测试
docker version
docker run hello-worlddo
卸载
systemctl stop docker
yum -y remove docker-ce
rm -rf /var/lib/docker
配置阿里云镜像仓库加速器
配置镜像加速CentOS7版本
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://sd7sgxrc.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
直接运行即可
服务命令
启动 systemctl start docker
状态 systemctl status docker
停止 systemctl stop docker
重启 systemctl restart docker
自启 systemctl enable docker
帮助命令
帮助命令
docker version
docker info
docker help
镜像命令
查看镜像
docker images -a :列出本地所有的镜像(含中间映像层)
-q :只显示镜像ID。
--digests :显示镜像的摘要信息
--no-trunc :显示完整的镜像信息
查找镜像
docker search 某个XXX镜像名字
--no-trunc : 显示完整的镜像描述
-s : 列出收藏数不小于指定值的镜像。
--automated : 只列出 automated build类型的镜像;
下载镜像
docker pull 镜像名字:版本号
删除镜像
删除单个
docker rmi -f 镜像ID
删除多个
docker rmi -f 镜像名1:版本号 镜像名2:版本号
删除全部
docker rmi -f $(docker images -q)
容器命令
新建并启动容器
docker run -it --name=xx 镜像名:版本号 /bin/bash
i:交互 t:终端 /bin/bash为进入容器的初始化指令
新建并启动守护式容器 不需要加/bin/bash
docker run -id --name=XX 镜像名:版本号
i:交互 d:守护进程
查看正在运行的容器 查看历史运行的容器
docker ps docker ps -a
进入正在运行的容器并以命令行交互
docker exec -it 容器名 /bin/bash
重新进入docker attach 容器ID
attach 直接进入容器启动命令的终端,不会启动新的进程
exec 是在容器中打开新的终端,并且可以启动新的进程
退出容器 -id创建的容器用exit退出不会停止容器
exit 容器停止退出 ctrl+P+Q 容器不停止退出
启动容器
docker start 容器ID或者容器名
重启容器
docker restart 容器ID或者容器名
停止容器
docker stop 容器ID或者容器名
强制停止容器
docker kill 容器ID或者容器名
删除已停止的容器
docker rm 容器ID
删除多个容器
docker rm -f $(docker ps -aq)
重要
docker run -it -p 8080:8080 tomcat
-p 主机端口:docker容器端口
-P 随机分配端口
查看容器日志
docker logs -ft --tail 容器ID
* -t 是加入时间戳
* -f 跟随最新的日志打印
* --tail 数字 显示最后多少条
查看容器内运行的进程
docker top 容器ID
重新进入docker attach 容器ID
上述两个区别
attach 直接进入容器启动命令的终端,不会启动新的进程
exec 是在容器中打开新的终端,并且可以启动新的进程
容器的数据卷
1.作用
容器数据持久化
外部及其和容器的简介通信
容器之间的数据交换
2.配置数据卷
创建容器时 使用-v参数 设置数据卷
docker run ...-v 宿主机目录(文件):容器内目录(文件)
目录必须是绝对路径
如果目录不存在自动创建 可以挂在多个数据卷
数据卷容器
1.创建数据卷容器 docker run -it --name=c3 -v /volume centos:7 /bin/bash
2.创建启动c1 c2容器,使用 --volumes-from参数 设置数据卷
docker run -it --name=c1 --volumes-from c3 centos:7 /bin/bash
docker run -it --name=c2 --volumes-from c3 centos:7 /bin/bash
Docker 应用部署
一、部署MySQL
- 搜索mysql镜像
docker search mysql
- 拉取mysql镜像
docker pull mysql:5.6
- 创建容器,设置端口映射、目录映射
# 在/root目录下创建mysql目录用于存储mysql数据信息
mkdir ~/mysql
cd ~/mysql
docker run -id \
-p 3307:3306 \
--name=c_mysql \
-v $PWD/conf:/etc/mysql/conf.d \
-v $PWD/logs:/logs \
-v $PWD/data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=123456 \
mysql:5.6
- 参数说明:
- -p 3307:3306:将容器的 3306 端口映射到宿主机的 3307 端口。
- -v $PWD/conf:/etc/mysql/conf.d:将主机当前目录下的 conf/my.cnf 挂载到容器的 /etc/mysql/my.cnf。配置目录
- -v $PWD/logs:/logs:将主机当前目录下的 logs 目录挂载到容器的 /logs。日志目录
- -v $PWD/data:/var/lib/mysql :将主机当前目录下的data目录挂载到容器的 /var/lib/mysql 。数据目录
- **-e MYSQL_ROOT_PASSWORD=123456:**初始化 root 用户的密码。
- 进入容器,操作mysql
docker exec –it c_mysql /bin/bash
- 使用外部机器连接容器中的mysql
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-bmQ1Nor6-1584842218447)(F:/HM349/5.阶段五-流行框架/6.docker/文档/imgs/1573636765632.png)]
二、部署Tomcat
- 搜索tomcat镜像
docker search tomcat
- 拉取tomcat镜像
docker pull tomcat
- 创建容器,设置端口映射、目录映射
# 在/root目录下创建tomcat目录用于存储tomcat数据信息
mkdir ~/tomcat
cd ~/tomcat
docker run -id --name=c_tomcat \
-p 8080:8080 \
-v $PWD:/usr/local/tomcat/webapps \
tomcat
-
参数说明:
-
**-p 8080:8080:**将容器的8080端口映射到主机的8080端口
**-v $PWD:/usr/local/tomcat/webapps:**将主机中当前目录挂载到容器的webapps
-
- 使用外部机器访问tomcat
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-WjQ1TFAw-1584842218450)(F:/HM349/5.阶段五-流行框架/6.docker/文档/imgs/1573649804623.png)]
三、部署Nginx
- 搜索nginx镜像
docker search nginx
- 拉取nginx镜像
docker pull nginx
- 创建容器,设置端口映射、目录映射
# 在/root目录下创建nginx目录用于存储nginx数据信息
mkdir ~/nginx
cd ~/nginx
mkdir conf
cd conf
# 在~/nginx/conf/下创建nginx.conf文件,粘贴下面内容
vim nginx.conf
user nginx;
worker_processes 1;
error_log /var/log/nginx/error.log warn;
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;
}
docker run -id --name=c_nginx \
-p 80:80 \
-v $PWD/conf/nginx.conf:/etc/nginx/nginx.conf \
-v $PWD/logs:/var/log/nginx \
-v $PWD/html:/usr/share/nginx/html \
nginx
- 参数说明:
- -p 80:80:将容器的 80端口映射到宿主机的 80 端口。
- -v $PWD/conf/nginx.conf:/etc/nginx/nginx.conf:将主机当前目录下的 /conf/nginx.conf 挂载到容器的 :/etc/nginx/nginx.conf。配置目录
- -v $PWD/logs:/var/log/nginx:将主机当前目录下的 logs 目录挂载到容器的/var/log/nginx。日志目录
- 使用外部机器访问nginx
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-SJKH2o63-1584842218451)(F:/HM349/5.阶段五-流行框架/6.docker/文档/imgs/1573652396669.png)]
四、部署Redis
- 搜索redis镜像
docker search redis
- 拉取redis镜像
docker pull redis:5.0
- 创建容器,设置端口映射
docker run -id --name=c_redis -p 6379:6379 redis:5.0
- 使用外部机器连接redis
./redis-cli.exe -h 192.168.149.135 -p 6379
s 目录挂载到容器的/var/log/nginx。日志目录
- 使用外部机器访问nginx
[外链图片转存中…(img-SJKH2o63-1584842218451)]
四、部署Redis
- 搜索redis镜像
docker search redis
- 拉取redis镜像
docker pull redis:5.0
- 创建容器,设置端口映射
docker run -id --name=c_redis -p 6379:6379 redis:5.0
- 使用外部机器连接redis
./redis-cli.exe -h 192.168.149.135 -p 6379