创建容器
这是创建容器的格式
Usage: docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
对于一些选项我们可以使用命令来进行查看
docker run --help
创建nginx容器
–restart是机器重启他也会直接运行
我们指定的端口号是 外部访问的是9001端口映射到nginx本身的端口80.
我们要记得再阿里云的安全组中添加相应的端口
docker run --name=mynginx -d -p 9001:80 --restart=always nginx:1.20.0
docker rm -f 名字 强制删除正在运行的容器
docker update 修改已经创建的容器选项
修改首页的显示
使用交互模式进入容器
docker exec -it mynginx /bin/bash
找到index.html
/usr/share/nginx/html
写入并覆盖
echo "hello
" > index.html
打包镜像
我们可以把我们自己修改好的容器打包成一个进行,等我们在需要使用的时候可以直接拿来使用。
docker commit --help 查看相关的参数
格式
docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]
Options:
-a, --author string Author (e.g., "John Hannibal Smith ")
-c, --change list Apply Dockerfile instruction to the created image
-m, --message string Commit message
-p, --pause Pause container during commit (default true)
修改的首页
docker commit -a "阿威" -m "修改首页" mynginx updateNginx:v1.0
镜像的传输
1 将镜像打包成压缩包
docker save --help
Usage: docker save [OPTIONS] IMAGE [IMAGE...]
Save one or more images to a tar archive (streamed to STDOUT by default)
Options:
-o, --output string Write to a file, instead of STDOUT
docker save -o aa.tar updatenginx:v1.0
[root@iZ2ze8qk0bio1j3bgylosgZ ~]# ls
aa.tar softwares
我们可以使用传输工具进行传输,也可以直接用命令进行复制
拷贝到root目录下
scp aa.tar root@ip:/root
加载镜像
docker load --help
Usage: docker load [OPTIONS]
Load an image from a tar archive or STDIN
Options:
-i, --input string Read from tar archive file, instead of STDIN
-q, --quiet Suppress the load output
直接加载镜像
docker load -i aa.tar
镜像上传
首先是在我们的dockerhub中创建一个仓库
docker tag local-image:tagname new-repo:tagname
docker push new-repo:tagname
先将我们本地的将重新打包成一个新的带有用户名的镜像
docker tag updatenginx:v1.0 awdockerhub/mynginx:v1.0
然后登录
docker login
push上传
docker push awdockerhub/myngingx:v1.0
数据挂载
ro表示只读,rw表示读写
他会自动给我们创建本地文件,但是不会创建挂载文件夹里面的文件,这个需要我们自己创建
docker run --name "mynginx" -p 9001:80 -v /usr/nginx/index.html:/usr/share/nginx/html:ro -d nginx:1.20.0
创建文件并写入
echo "挂载
" > index.html
查看容器执行的日志
docker logs 容器id
如果我们这样设置挂载目录他会默认的把nginx.conf看成文件夹,所以我们要提前创建好这个文件,
docker run --name "mynginx" -p 9001:80 \
-v /usr/nginx/nginx.conf:/etc/nginx/nginx.conf \
-d nginx:1.20.0
我们通过上面的挂载,会发现很麻烦,我们可以在已经启动的容器中直接复制文件
docker cp mynginx:/etc/nginx/nginx.conf /usr/nginx/nginx.conf
同样还可以反向复制
docker cp /usr/nginx/nginx.conf mynginx:/etc/nginx/nginx.conf
首先是我么需要先去dockerhub上面查找redis
我们可以他看到他的容器创建
$ docker run -v /myredis/conf:/usr/local/etc/redis --name myredis redis redis-server /usr/local/etc/redis/redis.conf
我们需要先创建本地挂载文件,data、redis.conf
我们需要在配置文件中添加
appendonly yes #开启持久化存储
requirepass root #设置密码
自定义创建 还是那句话要开启阿里云安全组
docker run --name "myredis" -p 6379:6379 \
-v /usr/redis/redis.conf:/usr/local/etc/redis/redis.conf \
-v /usr/redis/data:/data \
redis:6.2 \
redis-server /usr/local/etc/redis/redis.conf #服务启动指定对应的文件
测试连接成功
测试环境是统计访问的人数,这中动态的我们要把他存储到redis中。
创建java项目
测试接口
@RestController
public class H {
@Autowired
private StringRedisTemplate stringRedisTemplate;
@RequestMapping("/hello")
public String hello(){
//每次调用这个方法他就会默认+1
Long count = stringRedisTemplate.opsForValue().increment("count");
return "有"+count+"人访问了这个网站";
}
}
配置文件
spring.redis.host=k12code.online
spring.redis.password=root
maven
org.springframework.boot
spring-boot-starter-web
org.springframework.boot
spring-boot-starter-data-redis
org.springframework.boot
spring-boot-starter-test
test
首先是本地测试 成功
上传
首先是我们把项目打包成jar
Dockerfile
FROM openjdk:8-jdk-oracle #基础环境
LABEL maintainer=aw #作者
COPY target/*.jar /app.jar #拷贝新文件
ENTRYPOINT ["java","-jar","/app.jar"] #执行命令
我们把它放到一个新的文件中
上传至服务器
在test文件夹中执行命令
docker build -t java-demo:v1.0 -f Dockerfile .
运行容器
docker run -d -p 8080:8080 java-demo:v1.0
查看容器的状态 如果文件有问题容器会启动不成功 阿里云端口开放
docker ps