环境:aliyun centos7.14
安装Docker
- 安装
yum install docker
- 检查
docker -v
- 服务
systemctl status docker // docker状态
systemctl stop docker // 停止
systemctl start docker // 启动
systemctl restart docker // 重启
systemctl enable docker // 开机启动
- 检查
docker run hello-world
常用命令
与常用的linux命令一样,使用
docker --help
即可查看docker COMMAND,下面是即将用到的几个命令
- 从注册中心拉取镜像或仓库
dokcer pull [image/repository name]:[verson]
- 查看本地所有的镜像
docker images
- 查看运行的容器
docker ps
- 查看所有容器
docker ps -a
- 启动容器
docker start [container]
- 停止容器
docker stop [container]
- 安装容器,详细命令可查看,docker run --help
docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
-d
:在后台运行一个容器
-i
: 运行容器
-t
: 进入命令行模式,及伪终端
-name
: 给容器取名
-v
: 目录映射,宿主机与容器之间的目录映射
-p
: 端口映射,宿主机与容器之间的端口映射
- 退出容器
exit
实战: 容器部署
配置镜像源
Docker 镜像仓库配置国内镜像源,同maven一样,docker hub的远程仓库在国外,拉取速度慢,因此可以配置一个国内的镜像源
- 编辑文件
vim /etc/docker/daemon.json
- 配置如下:
{
"registry-mirrors": [
"https://docker.mirrors.ustc.edu.cn",
"http://hub-mirror.c.163.com",
"https://registry.docker-cn.com"
]
}
这4个地址分别对应中国国防科技,网易,docker中国
也可以配置aliyun的docker仓库,具体可参考官网进行配置属于自己的仓库
- 配置完成后,重启docker服务
systemctl restart docker
MySql使用
安装
- 拉取MySql镜像
docker pull mysql:5.7
具体版本可参考官网
- 创建容器-简易版
docker run -di --name docker_mysql -p 33306:3306 -e MYSQL_ROOT_PASSWORD=1234 mysql:5.7
- 创建容器-目录挂载版
docker run --name docker_mysql -p 3306:3306 \
-v /root/mydocker/mysql/log:/var/log/mysql \
-v /root/mydocker/mysql/data:/var/lib/mysql \
-v /root/mydocker/mysql/conf:/etc/mysql \
-e MYSQL_ROOT_PASSWORD=1234 \
-d mysql:5.7
log:日志
lib:持久化数据文件
etc:配置文件
精简配置
[client]
default-character-set = utf8mb4
[mysql]
#auto-rehash
default-character-set = utf8mb4
[mysqld]
port=3306
# 禁用主机名解析
skip-name-resolve
# 默认的数据库引擎
default-storage-engine = InnoDB
### 字符集配置
character-set-client-handshake = FALSE
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci
init_connect='SET NAMES utf8mb4'
#行级日志
binlog_format = row
说明:
-di
: 创建一个守护式容器,创建后在后台运行
--name docker_mysql
: 容器命名为docker_mysql
-p 33306:3306
: 端口映射,宿主机端口端口33306对应docker中3306端口
-e MYSQL_ROOT_PASSWORD=1234
: 添加环境变量,mysql的root用户密码为1234
-mysql:5.7
: 指定运行的镜像名称及其版本
- 查看容器中mysql运行
docker ps | grep docker_mysql
- 查看docker_mysql信息
docker inspect docker_mysql
- 进入docker_mysql容器,并登录mysql
[root@chet01 ~]# docker exec -it docker_mysql bash
root@8cda7c791c74:/# mysql -uroot -p
远程连接
这里使用navicat作为图形化工具远程连接,效果如下
Nginx使用
映射目录
- 在宿主机中创建目录
mkdir ~/mydocker/nginx/log
mkdir ~/mydocker/nginx/conf
mkdir ~/mydocker/nginx/html
三个目录分别对应nginx中日志位置(/var/log/nginx/
),配置文件位置(/etc/nginx/
),项目位置(/usr/share/nginx/html
)
安装
- 拉取镜像
docker pull nginx
- 运行容器
docker run -di --name docker_nginx -d -p 80:80
-v /root/mydocker/nginx/log:/var/log/nginx
-v /root/mydocker/nginx/conf:/etc/nginx/conf.d
-v /root/mydocker/nginx/nginx.conf:/etc/nginx/nginx/conf
-v /root/mydocker/nginx/html:/lx/html nginx
- 重启docker中nginx
docker exec -it docker_nginx nginx -s reload
- 验证nginx的配置
docker exec -it docker_nginx nginx -t
- 查看nginx挂载情况
docker inspect docker_nginx | grep Mounts -A 20
修改映射文件
- 修改宿主机中nginx的配置文件
vim ~/mydocker/nginx/conf/app.conf
内容如下:
server {
listen 80;
server_name 127.0.0.1;
#charset koi8-r;
#access_log /var/log/nginx/host.access.log main;
location / {
root /lx/html;
index index.html index.htm;
}
#error_page 404 /404.html;
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
# proxy the PHP scripts to Apache listening on 127.0.0.1:80
#
#location ~ \.php$ {
# proxy_pass http://127.0.0.1;
#}
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
#location ~ \.php$ {
# root html;
# fastcgi_pass 127.0.0.1:9000;
# fastcgi_index index.php;
# fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
# include fastcgi_params;
#}
# deny access to .htaccess files, if Apache's document root
# concurs with nginx's one
#
#location ~ /\.ht {
# deny all;
#}
}
- 配置访问页面
vim ~/mydocker/nginx/html/index.html
简要内容:
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
</head>
<body>
<h1>hello nginx</h1>
</body>
</html>
重启docker中的nginx,浏览器访问服务器地址
配置端口转发
现在希望用户访问我的80端口时,直接跳转到我的hexo博客端口4000,只需要简单修改配置文件即可
- 修改app.conf
改动如下:
重启nginx,重新访问即可
如果你的aliyun配置了域名解析,访问域名也可以直接访问
Redis使用
安装
docker pull redis
启动
docker run --name docker_redis -p 6379:6379 \
-v /root/mydocker/redis/conf/redis.conf:/etc/redis/redis.conf \
-d redis:latest redis-server /etc/redis/redis.conf
conf说明
参考官网配置文件
主要修改:
#bind 127.0.0.1
protected-mode no
requirepass [password]
daemonize yes
进入客服端
docker exec -it docker_redis redis-cli -a [password]
连接测试如图