Docker使用
创始人
2024-03-03 14:49:01
0

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

一、镜像

1.去镜像仓库搜索需要的镜像

2.拉取镜像,比如nginx(默认是最新版本)

docker pull nginx

也可以指定版本

docker pull nginx:1.22.1

3.查看镜像

docker images

 4.保存、导入镜像

利用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:删除一个容器

1.创建并运行nginx容器的命令:

docker run --name mn -p 80:80 -d nginx

命令解读:

  • docker run :创建并运行一个容器

  • --name : 给容器起一个名字,比如叫做mn

  • -p :将宿主机端口与容器端口映射,冒号左侧是宿主机端口,右侧是容器端口

  • -d:后台运行容器

  • nginx:镜像名称,例如nginx

2.进入Nginx容器,修改HTML文件内容,添加“欢迎您”

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

1.创建和查看数据卷

docker volume create html
docker volume ls

查看数据卷的详细信息

docker volume inspect html

可以看到,创建的html这个数据卷关联的宿主机目录为/var/lib/docker/volumes/html/_data目录。

2.挂载数据卷格式(不要运行)

docker run \--name mn \-v html:/root/html \-p 8080:80nginx \

“\”表示换行。-v就是挂载数据卷的命令:

  • -v html:/root/htm :把html数据卷挂载到容器内的/root/html这个目录中

3.给nginx挂载数据卷

需求:创建一个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的结果为: 

修改完毕,删除容器!

 然后删除数据卷!

 4.给MySQL挂载本地目录

容器不仅仅可以挂载数据卷,也可以直接挂载到宿主机目录上。关联关系如下:

  • 带数据卷模式:宿主机目录 --> 数据卷 ---> 容器内目录

  • 直接挂载模式:宿主机目录 ---> 容器内目录

创建并运行一个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)删除数据卷和容器(镜像不用删除哦!),然后退出即可。

四、自定义docker镜像

1.基于Ubuntu镜像构建一个新镜像,运行一个java项目

步骤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

 

 2.基于java:8-alpine镜像,将一个Java项目构建为镜像

步骤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 .

 

 

 

 

相关内容

热门资讯

美国2年期国债收益率上涨15个... 原标题:美国2年期国债收益率上涨15个基点 美国2年期国债收益率上涨15个基...
汽车油箱结构是什么(汽车油箱结... 本篇文章极速百科给大家谈谈汽车油箱结构是什么,以及汽车油箱结构原理图解对应的知识点,希望对各位有所帮...
嵌入式 ADC使用手册完整版 ... 嵌入式 ADC使用手册完整版 (188977万字)💜&#...
重大消息战皇大厅开挂是真的吗... 您好:战皇大厅这款游戏可以开挂,确实是有挂的,需要了解加客服微信【8435338】很多玩家在这款游戏...
盘点十款牵手跑胡子为什么一直... 您好:牵手跑胡子这款游戏可以开挂,确实是有挂的,需要了解加客服微信【8435338】很多玩家在这款游...
senator香烟多少一盒(s... 今天给各位分享senator香烟多少一盒的知识,其中也会对sevebstars香烟进行解释,如果能碰...
终于懂了新荣耀斗牛真的有挂吗... 您好:新荣耀斗牛这款游戏可以开挂,确实是有挂的,需要了解加客服微信8435338】很多玩家在这款游戏...
盘点十款明星麻将到底有没有挂... 您好:明星麻将这款游戏可以开挂,确实是有挂的,需要了解加客服微信【5848499】很多玩家在这款游戏...
总结文章“新道游棋牌有透视挂吗... 您好:新道游棋牌这款游戏可以开挂,确实是有挂的,需要了解加客服微信【7682267】很多玩家在这款游...
终于懂了手机麻将到底有没有挂... 您好:手机麻将这款游戏可以开挂,确实是有挂的,需要了解加客服微信【8435338】很多玩家在这款游戏...