xshell和xftp软件下载
链接:https://pan.baidu.com/s/1G7DIw14UvOmTwU9SwtYILg
提取码:he18
--来自百度网盘超级会员V6的分享
docker相关资料:
链接:https://pan.baidu.com/s/1VcxvuJvBIKNKnUUHPlM3MA
提取码:6w5e
--来自百度网盘超级会员V6的分享
https://download.csdn.net/download/pxyp123/87216802
docker pull nginx
也可以指定版本
docker pull nginx:1.22.1
docker images
利用docker save将nginx镜像导出磁盘,然后再通过load加载回来
1)使用docker save导出镜像到磁盘。运行命令:
docker save -o nginx.tar nginx:latest
2)先删除本地的nginx镜像
docker rmi nginx:latest
3)然后运行命令,加载本地文件:
docker load -i nginx.tar
容器保护三个状态:
运行:进程正常运行
暂停:进程暂停,CPU不再运行,并不释放内存
停止:进程终止,回收进程占用的内存、CPU等资源
其中:
docker run:创建并运行一个容器,处于运行状态
docker pause:让一个运行的容器暂停
docker unpause:让一个容器从暂停状态恢复运行
docker stop:停止一个运行的容器
docker start:让一个停止的容器再次运行
docker rm:删除一个容器
docker run --name mn -p 80:80 -d nginx
命令解读:
docker run :创建并运行一个容器
--name : 给容器起一个名字,比如叫做mn
-p :将宿主机端口与容器端口映射,冒号左侧是宿主机端口,右侧是容器端口
-d:后台运行容器
nginx:镜像名称,例如nginx
1)进入刚刚创建的容器:
docker exec -it mn bash
命令解读:
docker exec :进入容器内部,执行一个命令
-it : 给当前进入的容器创建一个标准输入、输出终端,允许我们与容器交互
mn :要进入的容器的名称
bash:进入容器后执行的命令,bash是一个linux终端交互命令
2)进入nginx的HTML所在目录 /usr/share/nginx/html。
查看DockerHub网站中的nginx页面,可以知道nginx的html目录位置在/usr/share/nginx/html
cd /usr/share/nginx/html
3)修改内容
容器内没有vi命令,无法直接修改,我们用下面的命令来修改:
sed -i -e 's#Welcome to nginx#欢迎您#g' -e 's###g' index.html
在浏览器访问自己的虚拟机地址,例如:http://192.168.150.101,即可看到结果。
4)其他
查看容器日志的命令:
docker logs
docker logs -f
添加 -f 参数可以持续查看日志
查看容器状态:
docker ps
docker ps -a
docker ps -a 查看所有容器,包括已经停止的
5)删除容器
docker rm nginx
加上-f可以强制删除
docker rm -f nginx
数据卷(volume)是一个虚拟目录,指向宿主机文件系统中的某个目录。
数据卷操作的基本语法如下:
docker volume [COMMAND]
docker volume命令是数据卷操作,根据命令后跟随的command来确定下一步的操作:
create 创建一个volume
inspect 显示一个或多个volume的信息
ls 列出所有的volume
prune 删除未使用的volume
rm 删除一个或多个指定的volume
docker volume create html
docker volume ls
查看数据卷的详细信息
docker volume inspect html
可以看到,创建的html这个数据卷关联的宿主机目录为/var/lib/docker/volumes/html/_data
目录。
docker run \--name mn \-v html:/root/html \-p 8080:80nginx \
“\”表示换行。-v就是挂载数据卷的命令:
-v html:/root/htm
:把html数据卷挂载到容器内的/root/html这个目录中
需求:创建一个nginx容器,修改容器内的html目录内的index.html内容。
1)根据前面,已经知道nginx的html目录所在位置/usr/share/nginx/html
docker run --name mn -v html:/usr/share/nginx/html -p 80:80 -d nginx
2)进入html数据卷所在位置
# 查看html数据卷的位置
docker volume inspect html
# 进入该目录
cd /var/lib/docker/volumes/html/_data
3)修改
方法一:vim
# 修改文件
vim index.html
方法二:使用vscode
xshell配合打开Xftp软件,
工具,选项,高级,选择一个编辑器(比如vscode)
右键选择vscode打开
修改内容如下:
Welcome to nginx!
Welcome to nginx!欢迎您!!!
If you see this page, the nginx web server is successfully installed and
working. Further configuration is required.
For online documentation and support please refer to
nginx.org.
Commercial support is available at
nginx.com.
Thank you for using nginx.
访问nginx的结果为:
修改完毕,删除容器!
然后删除数据卷!
容器不仅仅可以挂载数据卷,也可以直接挂载到宿主机目录上。关联关系如下:
带数据卷模式:宿主机目录 --> 数据卷 ---> 容器内目录
直接挂载模式:宿主机目录 ---> 容器内目录
创建并运行一个MySQL容器,将宿主机目录直接挂载到容器
实现思路如下:
1)在将课前资料中的mysql.tar文件上传到虚拟机,通过load命令加载为镜像
2)创建目录/tmp/mysql/data
3)创建目录/tmp/mysql/conf,将课前资料提供的hmy.cnf文件上传到/tmp/mysql/conf
4)去DockerHub查阅资料,创建并运行MySQL容器,要求:
① 挂载/tmp/mysql/data到mysql容器内数据存储目录
② 挂载/tmp/mysql/conf/hmy.cnf到mysql容器的配置文件
③ 设置MySQL密码
1)通过Xftp传输mysql.tar到/tmp目录下
2)命令行转到tmp目录下,
cd /tmp/
3)load安装包
docker load -i mysql.tar
4)创建文件
mkdir -p mysql/datamkdir -p mysql/conf
5)通过Xftp添加配置文件hmy.cnf到conf目录下
cd mysql/conf
6)挂载
此处设置密码为:password
docker run \
--name mysql \
-e MYSQL_ROOT_PASSWORD=password \
-v /tmp/mysql/conf/hmy.cnf:/etc/mysql/conf.d/hmy.cnf \
-v /tmp/mysql/data:/var/lib/mysql \
-d \
mysql:5.7.25
7)通过sqlyog或者其他软件连接,密码为自己设置的密码,本文为:password
8)删除数据卷和容器(镜像不用删除哦!),然后退出即可。
步骤1:tmp目录下新建一个空文件夹docker-demo
cd /tmp
mkdir docker-demo
步骤2:使用xftp拷贝docker-demo.jar,jdk8.tar.gz,Dockerfile文件到docker-demo这个目录
Dockerfile文件内容:
# 指定基础镜像
FROM ubuntu:16.04
# 配置环境变量,JDK的安装目录
ENV JAVA_DIR=/usr/local# 拷贝jdk和java项目的包
COPY ./jdk8.tar.gz $JAVA_DIR/
COPY ./docker-demo.jar /tmp/app.jar# 安装JDK
RUN cd $JAVA_DIR \&& tar -xf ./jdk8.tar.gz \&& mv ./jdk1.8.0_144 ./java8# 配置环境变量
ENV JAVA_HOME=$JAVA_DIR/java8
ENV PATH=$PATH:$JAVA_HOME/bin# 暴露端口
EXPOSE 8090
# 入口,java项目的启动命令
ENTRYPOINT java -jar /tmp/app.jar
步骤3:构建镜像命令(一定要注意1.0后有个空格,再加一个点):
docker build -t javaweb:1.0 .
成功后查看镜像:
docker images
步骤4:运行镜像命令:
docker run --name web -p 8090:8090 -d javaweb:1.0
最后访问 http://192.168.150.101:8090/hello/count,其中的ip改成你的虚拟机ip
步骤1:vscode修改Dockerfile文件内容,然后xftp覆盖掉原来的文件
Dockerfile文件修改如下:
# 指定基础镜像
FROM java:8-alpine# 拷贝jdk和java项目的包
COPY ./docker-demo.jar /tmp/app.jar# 暴露端口
EXPOSE 8090
# 入口,java项目的启动命令
ENTRYPOINT java -jar /tmp/app.jar
步骤2:运行镜像
docker build -t javaweb:2.0 .