本文章是基于Linux centos系统的,如果你是window,可以:
1 买一个阿里云ecs
2 用virtualBox在你的电脑上装一个linux系统
强烈建议买一个ecs,可以少走很多弯路,docker搭配linux简直是神器~~相见恨晚啊
所谓镜像,就是一个涵盖了运行服务所需要的软件以及运行环境
- docker images --查看现有的镜像
- docker search xxx --搜索镜像
- docker pull redis:版本 (若不跟版本号,默认最新版本)
再次输入docker images:
- docker rmi imageId
输入docker images查看imageId
输入:
法二 :docker rmi 名称+版本号
docker rmi redis:5.0
容器是由镜像创建出来的实例,那么关注点就在如何创建
- 创建容器
docker -it --name=xxx 镜像:版本 /bin/bash
此时的终端已经不再是linux操作终端,而是进入了软件的操作终端
- 退出
exit
- 查看容器状态
docker ps
docker ps -a (查看存在以及已经退出的容器)
- 创建容器第二种方法
第一种方法创建容器,在exit后就会自动关闭,现在只想让其运行,不想进入终端
docker run -id --name=c1 镜像:版本
此时就不会再进入终端,而是再后台运行
- 查看容器状态后进入容器
此时就算再通过exit退出容器,容器也不会关闭
- 启动停止容器
- 删除容器
docker search mysql
docker pull mysql:8.0
现在根目录下创建mysql目录
mkdir /my/mysql/{conf,data,logs}
创建容器以及相关配置
docker run \
--name mysql \
-p 3306:3306 \
-v /my/mysql/conf:/etc/mysql/mysql.conf.d \
-v /my/mysql/data:/var/lib/mysql \
-v /my/mysql/logs:/logs \
-e MYSQL_ROOT_PASSWORD=123456 \
-d mysql:8.0 \
--character-set-server=utf8 --collation-server=utf8_unicode_ci
mysql:8.0
docker exec -it mysql env LANG=C.UTF-8 /bin/bash
mysql -uroot -p123456
注意这个时候连的是3307端口(上面创建容器时映射的端口号)!!!不是3306
docker pull tomcat
mkdir ~/tomcat
cd ~/tomcat
docker run -id --name=c_tomcat \
-p 8080:8080\
-v ~/tomcat:/user/local/tomcat/webapps \
tomcat
mkdir /nginx
cd /nginx
mkdir /conf
cd /conf
vim nginx.conf
user root;
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
二docker镜像原理
可以这样理解,现在要拉取tomcat镜像,而tomcat依赖于jdk,所以连jdk一并拉取,但是用户看到的是一个整体,只知道拉取了tomcat镜像.像这样一层一层贴加,好处就是能让之前已经下载过的镜像,被后来下载的镜像重复使用
- 容器转镜像
制作镜像:
docker commit 容器Id 镜像名:版本
压缩镜像:
docker save -o 文件名 镜像版本
还原文件为镜像:
centos 镜像创建的容器无法使用vim,默认的根目录是
需求:
1 默认登录路径为/user
2 可以使用vim
FROM centos:7
MAINTAINER hzh
RUN yum install -y vim
WORKDIR /user
cmd /bin/bash
docker build -f ./centos-dockerfile -t hzh_centos:1 .
- 上传jar到服务器