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中有几个重要的概念:

镜像(Image):Docker将应用程序及其所需的依赖、函数库、环境、配置等文件打包在一起,称为镜像。

容器(Container):镜像中的应用程序运行后形成的进程就是容器,只是Docker会给容器进程做隔离,对外不可见。

一切应用最终都是代码组成,都是硬盘中的一个个的字节形成的文件。只有运行时,才会加载到内存,形成进程。

而镜像,就是把一个应用在硬盘上的文件、及其运行环境、部分系统函数库文件一起打包形成的文件包。这个文件包是只读的。

容器呢,就是将这些文件中编写的程序、函数加载到内存中允许,形成进程,只不过要隔离起来。因此一个镜像可以启动多次,形成多个容器进程。例如你下载了一个QQ,如果我们将QQ在磁盘上的运行文件及其运行的操作系统依赖打包,形成QQ镜像。然后你可以启动多次,双开、甚至三开QQ。

一、镜像

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.挂载数据卷格式(不要运行)

在创建容器时,可以通过 -v 参数来挂载一个数据卷到某个容器内目录,命令格式如下:

docker run \

--name mn \

-v html:/root/html \

-p 8080:80

nginx \

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

-v html:/root/html :把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/data

mkdir -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 .

 

参考链接

评论可见,请评论后查看内容,谢谢!!!评论后请刷新页面。