docker 容器导出,载入,运行
docker
·
容器导出(导出的是镜像)
docker save 镜像名:版本号 -o /路径/保存的包名.tar
例 docker save mysql -0 mysql.tar
镜像载入
docker load -i /路径/载入的包名.tar
例 docker load -i mysql.tar
容器运行
docker images 查看镜像名称
docker run --name 设置容器名 -d 镜像名:TAG标签 -d后台运行
例 docker run --name mysql -d mysql:5.7
或 docker run --name mysql -d mysql (未指定标签,有可能会自动拉取新的镜像)
查看容器运行状态
docker ps -a
STATUS 为 Up 则 容器运行成功; 为Exited 则容器运行失败
查看容器运行失败日志
查看十条
docker logs -f --tail 10 f750f56ba1a3
查看一天中的日志
docker logs -f --since "2022-12-8" f750f56ba1a3
镜像配置mysql,并生成容器启动
docker run -p 3306:3306 \
--name mysql \
--privileged=true \
-v $PWD/conf:/data/mysql/conf.d \
-v $PWD/logs:/data/mysql/log \
-v $PWD/data:/data/mysql/lib/ \
-e MYSQL_ROOT_PASSWORD=root -d mysql:5.7
-p 3306:3306 暴露端口 将容器内3306端口映射到服务器端口
--name mysql 设置容器名称
--privileged=true 给容器加上特定权限
-v PWD/conf:/var/data/mysql/conf.d \ 将主机当前目录下的 conf/ 挂载到容器的 /data/mysql (conf目录为mysql的配置文件,不挂载也没问题)
-v PWD/logs:/var/log/mysql \ 将主机当前目录下的 log 目录挂载到容器的 /logs (logs目录为mysql的日志目录,不挂载也没影响)
-v $PWD/data:/var/lib/mysql 挂载容器文件目录到服务器文件目录 data目录为mysql配置的数据文件存放路径,这个还是建议挂载,是存储数据的,容器down掉,还能再次挂载数据
-e MYSQL_ROOT_PASSWORD=123456 设置root用户密码
-d mysql:5.7 后台运行
容器开机自启动
docker update --restart=always 容器id
例
docker update --restart=always e8b5e0344fd0
进入容器
docker exec -t -i mysql /bin/bash
mysql -uroot -p
linux命令
查找包
find / -name mysql
查看进程
ps -ef|grep 3306
关闭服务:service mysql stop、kill -9 1824
kill -9 1824
解压 tar文件 到指定目录
tar -xvf /var/ftp/test/nginx1.tar -C /data
将一个文件夹下的所有内容复制到另一个文件夹下
cp -r /data/nginx/html/nginx/html/* /data/nginx/html/
删除目录下的所有文件
rm -rf /data/nginx/html/*
远程连接docker的mysql
进入docker中的mysql
docker exec -it mysql bash
输入密码
mysql -uroot -p
显示数据库
show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sys |
+--------------------+
4 rows in set (0.00 sec)
进入mysql表
use mysql
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Database changed
查询用户
select user,host from user;
+---------------+-----------+
| user | host |
+---------------+-----------+
| root | % |
| mysql.session | localhost |
| mysql.sys | localhost |
| root | localhost |
+---------------+-----------+
4 rows in set (0.00 sec)
查询权限 带有%则表示允许所有访问
select host,user,plugin,authentication_string from mysql.user;
+-----------+---------------+-----------------------+-------------------------------------------+
| host | user | plugin | authentication_string |
+-----------+---------------+-----------------------+-------------------------------------------+
| localhost | root | mysql_native_password | *-----|
| localhost | mysql.session | mysql_native_password | *------|
| localhost | mysql.sys | mysql_native_password | *------|
| % | root | mysql_native_password | *-----|
+-----------+---------------+-----------------------+-------------------------------------------+
4 rows in set (0.00 sec)
数据库远程连接不上 修改一次root账户的密码
ALTER user 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';
Query OK, 0 rows affected (0.00 sec)
ALTER user 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'root';
数据库远程连接不上,linux关闭防火墙
1:查看防火状态
systemctl status firewalld
service iptables status
2:暂时关闭防火墙
systemctl stop firewalld
service iptables stop
3:永久关闭防火墙
systemctl disable firewalld
chkconfig iptables off
4:重启防火墙
systemctl enable firewalld
service iptables restart
5:永久关闭后重启
//暂时还没有试过
chkconfig iptables on
docker配置nginx
创建挂载目录
mkdir -p /data/nginx/conf
mkdir -p /data/nginx/log
mkdir -p /data/nginx/html
将容器nginx.conf文件复制到宿主机
docker cp nginx:/etc/nginx/nginx.conf /data/nginx/conf/nginx.conf
将容器conf.d文件夹下内容复制到宿主机
docker cp nginx:/etc/nginx/conf.d /data/nginx/conf/conf.d
将容器中的html文件夹复制到宿主机
docker cp nginx:/usr/share/nginx/html /data/nginx/
创建文件夹 static 静态文件夹 logs 日志 conf 配置文件目录
mkdir -p /data/nginx/static /data/nginx/logs /data/nginx/conf
docker run -p 8080:8080 --name nginx \
-v /data/nginx/html:/usr/share/nginx/html \
-v /data/nginx/conf/conf.d:/etc/nginx/conf.d \
-v /data/nginx/conf/nginx.conf:/etc/nginx/nginx.conf \
-v /data/nginx/log:/var/log/nginx \
-d nginx
说明 -p端口映射 data/nginx挂载到 etc/nginx
docker run -d -p 8080:8080 --name nginx -v
-v /data/nginx/html:/usr/share/nginx/html \
-v /data/nginx/conf/conf.d:/etc/nginx/conf.d \
-v /data/nginx/conf/nginx.conf:/etc/nginx/nginx.conf \
-v /data/nginx/log:/var/log/nginx \
-d nginx
修改 data/nginx/conf/nginx.conf 文件 server 部分
server {
listen 8080;
listen [::]:8080;
server_name 0.0.0.0;
#access_log /var/log/nginx/host.access.log main;
location / {
root /usr/share/nginx/html;
index index.html index.htm;
}
查看ftp状态
查看ftp状态
service vsftpd status
启动ftp服务器
service vsftpd start
修改ftp密码
passwd ftptest
spring 打包
点击package生成jar包
在target中找到jar包
docker中运行
--------------
构建镜像
创建Dockerfile文件
# 指定基础镜像
FROM openjdk:8
# 指定容器里的挂载点
VOLUME ["/data/app"]
# 将文件复制到容器里指定的路径中
COPY xxx.jar /data/app/app.jar
# 暴露端口
EXPOSE 8081
# 入口,java项目的启动命令 /data/app/app.jar 宿主机的jar包存放位置
> /logs/app.log 生成日志 路径必须为双引号 单引号找不到文件
"--spring.profiles.active=test","--server.port=8081" springboot测试环境 如.yml配置文件所示
ENTRYPOINT ["java","-jar","/data/app/app.jar","--spring.profiles.active=test","--server.port=8081","> /logs/app.log"]
-------------------
docker build命令构建镜像
docker build -t music-java:1.0 .
music-java为镜像名 1.0为镜像版本号
不要后面忘了加 .表示Dockerfile文件在当前目录下
---------------------
运行镜像
docker run --name music -it -v /data/app:/data/app -d -p 8081:8081 music-java:1.0 --privileged=true
--name music为给容器命一个名为music
-v宿主机目录(/data/app/)关联容器里的目录(/data/app/)
-p将docker容器端口与主机端口映射
-d表示后台运行
music-java:1.0表示镜像的名称以及版本号
此时若/data/app/中没有jar包,容器会启动失败
热更新
将最新的jar包上传到目录: /data/app 执行以下命令:
docker run --name music -it -v /data/app:/data -d -p 8081:8081 music-java:1.0 --privileged=true
重新启动该容器
docker restart 容器id
部署redis
docker run -p 6379:6379 --name redis -v /data/redis/redis.conf:/etc/redis/redis.conf -v /data/redis/data:/data -d redis redis-server /etc/redis/redis.conf --appendonly yes
# -p 6379:6379:把容器内的6379端口映射到宿主机6379端口
# -v /data/redis/redis.conf:/etc/redis/redis.conf:把宿主机配置好的redis.conf放到容器内的这个位置中
# -v /data/redis/data:/data:把redis持久化的数据在宿主机内显示,做数据备份
# redis-server /etc/redis/redis.conf:这个是关键配置,让redis不是无配置启动,而是按照这个redis.conf的配置启动
# -appendonly yes:redis启动后数据持久化
docker
删除悬空镜像
docker rmi $(docker images -f "dangling=true" -q)
进入容器
sudo docker attach 44fc0f0582d9
更多推荐
已为社区贡献1条内容
所有评论(0)