容器导出(导出的是镜像)

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 
Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐