1.Docker概念
• Docker 是一个开源的应用容器引擎
• 诞生于 2013 年初,基于 Go 语言实现, dotCloud 公司出品(后改名为Docker Inc)
• Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上。
• 容器是完全使用沙箱机制,相互隔离
• 容器性能开销极低。
• Docker 从 17.03 版本之后分为 CE(Community Edition: 社区版) 和 EE(Enterprise Edition: 企业版)
2.安装Docker
1 2 3 4 5 6 7 8 9 10
| # 1、yum 包更新到最新 yum update # 2、安装需要的软件包, yum-util 提供yum-config-manager功能,另外两个是devicemapper驱动依赖的 yum install -y yum-utils device-mapper-persistent-data lvm2 # 3、 设置yum源 yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo # 4、 安装docker,出现输入的界面都按 y yum install -y docker-ce # 5、 查看docker版本,验证是否验证成功 docker -v
|
3.配置Docker镜像加速器
提升下载速度
第一步:登录阿里云获取镜像加速地址
每个人的加速器地址不一样
第二步:Linux命令行执行如下命令
直接将阿里云上提供的命令直接粘贴到命令行即可
第三步:查看是否配置成功
1 2
| # 查看刚才配置的文件是否存在 cat /etc/docker/daemon.json
|
出现下图所示的内容表示配置成功
4.Docker相关命令
4.1 Docker进程相关的命令
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| # 启动docker服务: systemctl start docker
# 停止docker服务: systemctl stop docker
#重启docker服务: systemctl restart docker
# 查看docker服务状态: systemctl status docker
# 设置开机启动docker服务: systemctl enable docker
|
4.2 Docker镜像相关的命令
查看镜像对应版本号的网站: https://hub.docker.com/
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| # 查看镜像: 查看本地所有的镜像 docker images docker images –q # 查看所用镜像的id
# 搜索镜像:从网络中查找需要的镜像 docker search 镜像名称
# 拉取镜像:从Docker仓库下载镜像到本地,镜像名称格式为 名称:版本号,如果版本号不指定则是最新的版本。 # 如果不知道镜像版本,可以去docker hub 搜索对应镜像查看。 docker pull 镜像名称 # 默认下载的是latest版本的镜像 docker pull 镜像名称:版本号 #下载指定版本的镜像
# 删除镜像: 删除本地镜像 docker rmi 镜像id # 删除指定本地镜像 docker rmi 镜像名称:版本号 #删除指定版本的镜像 docker rmi `docker images -q` # 删除所有本地镜像
|
4.3 容器相关的命令
1 2 3 4 5 6 7 8 9
| # 查看容器 docker ps # 查看正在运行的容器 docker ps –a # 查看所有容器
# 创建并启动容器 docker run 参数
#删除所有的容器 docker rm $(docker ps -a -q)
|
参数说明:
• -i:保持容器运行。通常与 -t 同时使用。加入it这两个参数后,容器创建后自动进入容器中,退出容器后,容器自动关闭。
• -t:为容器重新分配一个伪输入终端,通常与 -i 同时使用。
• -d:以守护(后台)模式运行容器。创建一个容器在后台运行,需要使用docker exec 进入容器。退出后,容器不会关闭。
• -it 创建的容器一般称为交互式容器,-id 创建的容器一般称为守护式容器
• –name:为创建的容器命名。
1 2 3 4 5 6 7 8 9 10 11 12
| # 进入容器 docker exec 参数 # 退出容器,容器不会关闭 # 停止容器 docker stop 容器名称 # 启动容器 docker start 容器名称 # 删除容器:如果容器是运行状态则删除失败,需要停止容器才能删除 docker rm 容器名称 # 查看容器信息 docker inspect 容器名称 #查看容器的日志信息 docker logs 容器名称
|
5.Docker 应用部署
开发环境的搭建 | The Blog (qingling.icu)
5.1、部署MySQL
- 搜索mysql镜像
- 拉取mysql镜像
- 创建容器,设置端口映射、目录映射
1 2 3
| # 在/root目录下创建mysql目录用于存储mysql数据信息 mkdir ~/mysql cd ~/mysql
|
1 2 3 4 5 6 7 8
| 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
1
| docker exec –it c_mysql /bin/bash
|
- 使用外部机器连接容器中的mysql
5.2、部署Tomcat
- 搜索tomcat镜像
- 拉取tomcat镜像
- 创建容器,设置端口映射、目录映射
1 2 3
| # 在/root目录下创建tomcat目录用于存储tomcat数据信息 mkdir ~/tomcat cd ~/tomcat
|
1 2 3 4
| docker run -id --name=c_tomcat \ -p 8080:8080 \ -v $PWD:/usr/local/tomcat/webapps \ tomcat
|
- 使用外部机器访问tomcat
5.3 部署Nginx
- 搜索nginx镜像
- 拉取nginx镜像
- 创建容器,设置端口映射、目录映射
1 2 3 4 5 6 7
| # 在/root目录下创建nginx目录用于存储nginx数据信息 mkdir ~/nginx cd ~/nginx mkdir conf cd conf # 在~/nginx/conf/下创建nginx.conf文件,粘贴下面内容 vim nginx.conf
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
| 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; }
|
1 2 3 4 5 6
| 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
5.4 部署Redis
- 搜索redis镜像
- 拉取redis镜像
- 创建容器,设置端口映射
1
| docker run -id --name=c_redis -p 6379:6379 redis:5.0
|
- 使用外部机器连接redis
1
| ./redis-cli.exe -h 192.168.149.135 -p 6379
|