|
目录🌊1.什么是Docker?🌊2.Docker安装🌊3.Docker基本指令🌊4.Docker创建示例【联网情况】🌍4.1示例:HTML🌍4.2 示例:Python脚本🌍4.3 示例:C++程序🌊5.Docker创建C++示例【无网情况】🌍5.1 示例:Ubuntu环境🌍5.2 示例:公司桌面云内🌊6. DockerHub之上传与下载🌍6.1 DockerHub之上传🌍6.2 DockerHub之下载运行🌊7.结论🌊1.什么是Docker?Docker是一个开源平台,专为简化开发、部署和运行应用程序而设计。通过使用称为“容器”(Container)的轻量级虚拟化技术,将应用程序及其依赖环境打包到一个独立的单元中,使应用程序能够在任何环境中一致地运行。Docker的核心概念镜像(Image):镜像是一个只读模板,包含了运行应用程序所需的所有内容【类似一个软件包,包含操作系统、应用程序代码、运行时、库和依赖项】。镜像可以从DockerHub或其他镜像仓库中获取,也可以自己创建。例子:如果你有 ython应用程序,则可以创建一个包含Python解释器和应用程序代码的镜像。容器(Container):容器是镜像的一个可运行实例,包含了运行应用程序的所有必要环境。容器是独立的、可移植的,并且可以在任何支持Docker的系统上运行【可认为是一个轻量级的、独立的虚拟机】。例子:使用前面创建的Python镜像,你可以启动一个容器来运行你的应用程序。这个容器就像一个轻量级的虚拟机,里面有你的应用程序及其依赖项。Dockerfile:Dockerfile是一个脚本文件,包含了一系列指令,用于定义如何创建Docker镜像。每条指令在Docker镜像中创建一个新的层(Layer)。例子:一个简单的Dockerfile可能包含以下内容: #使用Python3.8作为基础镜像FROMpython:3.8-slim#设置工作目录WORKDIR/app#复制当前目录下的所有文件到工作目录COPY..#安装依赖包RUNpipinstallflask#暴露容器内的5000端口EXPOSE5000#运行应用程序CMD["python","app.py"]DockerHub:DockerHub是一个公共的镜像仓库,允许用户存储和分享Docker镜像。用户可以从DockerHub下载已有的镜像,或者上传自己的镜像。例子:你可以从DockerHub拉取官方的Python镜像,使用命令 dockerpullpython:3.8-slim🌊2.Docker安装传送门:【服务器】安装Docker环境_在服务器上安装docker🌊3.Docker基本指令#1.列出正在运行的容器,包括停止的容器:dockerps-a#如果查找名为shuym-centos-container的容器,可以执行以下命令:dockerps-a|grepshuym-centos-container#2.使用dockerstop命令停止容器。容器ID是container_iddockerstopcontainer_id#或者,容器name是container_namedockerstopcontainer_name#3.删除指定容器。假设容器ID是container_id,执行以下命令删除容器:dockerrmcontainer_id#或者,容器name是container_namedockerrmcontainer_name#4.列出所有本地镜像:dockerimages#5.删除Docker镜像:假设镜像ID是image_id,执行以下命令删除镜像:dockerrmiimage_id#6.关闭Docker容器:停止容器而不删除它dockerstopcontainer_id#7.启动指定容器:dockerstartcontainer_id🌊4.Docker创建示例【联网情况】🌍4.1示例:HTML创建一个简单的HTML文件,作为 Web服务器要提供的内容。1.创建 index.html的文件:vimindex.html内容如下:
HellofromDocker!
ThisisasimpleDockerexample.2.创建 Dockerfile文件该文件描述了如何构建 Docker镜像:vimDockerfile内容如下:#使用基础镜像FROMnginx:latest#将本地文件复制到容器中的指定路径COPYindex.html/usr/share/nginx/html#暴露容器的端口EXPOSE80该Dockerfile使用了Nginx的官方镜像作为基础,然后将我们的index.html文件复制到Nginx的默认网站目录,并暴露了容器的80端口。3.构建Docker镜像。在项目文件夹中执行以下命令:dockerbuild-tmy-docker-example.这将根据Dockerfile中的描述构建一个名为my-docker-example的Docker镜像。4.运行Docker容器。执行以下命令:dockerrun-d-p8080:80my-docker-example这将在后台运行我们的Docker容器,并将主机的8080端口映射到容器的80端口。现在,可以打开浏览器访问http://localhost:8080,将看到一个简单的网页,显示"HellofromDocker!"。如果不支持浏览器可以输入命令:curlhttp://localhost:8080可以看到对应内容。测试完记得清理该docker容器与模板。🌍4.2 示例:Python脚本创建一个简单的Python脚本。1.创建一个名为app.py的文件:vimapp.py内容如下:#app.pyprint("HellofromDocker!")2.创建一个Dockerfile用于描述如何构建我们的Docker镜像。在项目文件夹中创建一个名为Dockerfile的文件:vimDockerfile内容如下:#使用基础镜像FROMpython:3.9-slim#将本地文件复制到容器中的指定路径COPYapp.py/app/app.py#设置工作目录WORKDIR/app#运行Python应用程序CMD["python","app.py"]该Dockerfile使用了Python官方镜像作为基础,然后将我们的app.py文件复制到容器的/app目录,并设置了工作目录为/app,最后通过CMD指令运行了Python应用程序。3.构建Docker镜像。在项目文件夹中执行以下命令:dockerbuild-tmy-python-app.这将根据Dockerfile中的描述构建一个名为my-python-app的Docker镜像。4.运行Docker容器。执行以下命令:dockerrunmy-python-app这将运行 Docker容器,并在控制台上打印"HellofromDocker!"。测试完记得清理该docker容器与模板。🌍4.3 示例:C++程序1.创建C++程序vimhello.cpp内容如下:#includeintmain(){std::cout<< "Hello from Docker and C++!" << std::endl; return 0;}
2. 创建 Dockerfile
用于描述如何构建我们的 Docker 镜像。
vim Dockerfile
内容如下:
# 使用基础镜像FROM gcc:latest # 将本地文件复制到容器中的指定路径COPY hello.cpp /usr/src/hello.cpp # 设置工作目录WORKDIR /usr/src # 编译 C++ 程序RUN g++ -o hello hello.cpp # 运行可执行文件CMD ["./hello"]
这个 Dockerfile 使用了 GCC 官方镜像作为基础,然后将我们的 hello.cpp 文件复制到容器的 /usr/src 目录,并在容器中编译它。最后通过 CMD 指令运行了编译后的可执行文件。
3. 构建 Docker 镜像。
在项目文件夹中执行以下命令:
docker build -t my-cpp-app .
这将根据 Dockerfile 中的描述构建一个名为 my-cpp-app 的 Docker 镜像。
4. 运行 Docker 容器。
执行以下命令:
docker run my-cpp-app
这将运行 Docker 容器,并在控制台上打印 "Hello from Docker and C++!"。
测试完记得清理该docker容器与模板。
🌊5. Docker 创建C++示例【无网情况】
在没有网络的情况下,可以通过在联网环境中提前下载好所需的 Docker 镜像,并将其传输到无网络的环境中进行部署。
🌍5.1 示例:Ubuntu环境
步骤 1:在有网络环境中准备
1. 下载 GCC Docker 镜像
docker pull gcc:latest
2. 保存 Docker 镜像到文件:将下载的 Docker 镜像保存为一个 tar 文件
docker save -o gcc_latest.tar gcc:latest
将 gcc_latest.tar 拷贝到无法联网的主机。
步骤 2:在无网络环境中构建和运行 Docker 镜像
1. 创建C++程序
vim hello.cpp
内容如下:
#include intmain(){std::cout<< "Hello from Docker and C++!" << std::endl; return 0;}
2. 创建 Dockerfile
用于描述如何构建我们的 Docker 镜像。
vim Dockerfile
内容如下:
# 使用基础镜像FROM gcc:latest # 将本地文件复制到容器中的指定路径COPY hello.cpp /usr/src/hello.cpp # 设置工作目录WORKDIR /usr/src # 编译 C++ 程序RUN g++ -o hello hello.cpp # 运行可执行文件CMD ["./hello"]
这个 Dockerfile 使用了 GCC 官方镜像作为基础,然后将我们的 hello.cpp 文件复制到容器的 /usr/src 目录,并在容器中编译它。最后通过 CMD 指令运行了编译后的可执行文件。
3. 加载 Docker 镜像
在无联网环境中,将之前传输的 gcc_latest.tar 文件加载到 Docker:
docker load -i gcc_latest.tar
4. 构建 Docker 镜像
在项目文件夹中执行以下命令:
docker build -t my-cpp-app .
这将根据 Dockerfile 中的描述构建一个名为 my-cpp-app 的 Docker 镜像。
5. 运行 Docker 容器
docker run my-cpp-app
这将运行 Docker 容器,并在控制台上打印 "Hello from Docker and C++!"。
测试完记得清理该docker容器与模板。
🌍5.2 示例:公司桌面云内
1. 创建并运行 Docker 容器 创建并运行容器,指定共享内存大小,并挂载本地目录到容器目录。假设本地需要挂载的目录是 /home/shuym/,在容器内访问路径是 /root/host:
docker run -it --privileged --name shuym-centos-container --shm-size=1g -v /home/shuym/my_test:/root/host centos:7.4.1708 /bin/bash
命令解释
docker run:这是用来创建并启动一个新的容器的命令。 -it:
-i(interactive):保持标准输入打开,即使没有附加到容器上。-t(tty):分配一个伪终端。通常与 -i 一起使用,以便用户能够以交互模式使用容器。 --privileged:授予容器扩展权限。这允许容器内的进程执行更多的系统操作,例如挂载设备、修改网络设置等。使用该标志可以让容器拥有更高的权限,但也存在安全风险。 --name shuym-centos-container:为容器指定一个名称 shuym-centos-container,便于后续管理和识别。 --shm-size=1g:设置容器的 /dev/shm 共享内存的大小为 1GB。默认值通常是 64MB。 -v /home/shuym/my_test:/root/host:
-v(volume):挂载一个主机目录到容器中。这是一个数据卷的映射,用于在主机和容器之间共享文件。/home/shuym/my_test:主机上的目录。/root/host:容器中的目录。在容器中,这个目录会映射到主机上的 /home/shuym/my_test 目录,因此你可以在容器中访问和操作主机上的这些文件。 centos:7.4.1708:指定使用的 Docker 镜像。这表示基于 CentOS 7.4.1708 版本的镜像来创建容器。 /bin/bash:容器启动时执行的命令。在这种情况下,它启动一个 Bash shell,这样你可以在容器中进行交互式操作。
2. 进入创建的目录
cd /root/host
即可将原目录内容创建到docker 容器当前目录下。
🌊6. Docker Hub 之上传与下载
🌍6.1 Docker Hub之上传
首先,需要在 Docker Hub 上创建一个帐户。
在终端登录你的 Docker Hub 帐户:
docker login
输入你的 Docker Hub 用户名和密码。
接下来,需要给 Docker 镜像一个标签,以便将其上传到 Docker Hub。使用以下命令:
docker tag my-docker-example your-docker-hub-username/my-docker-example:latest
确保将 your-docker-hub-username 替换为你在 Docker Hub 上的用户名。
最后,使用以下命令将标记过的镜像上传到 Docker Hub:
docker push your-docker-hub-username/my-docker-example:latest
这会将你的 Docker 镜像上传到 Docker Hub。
🌍6.2 Docker Hub之下载运行
使用以下命令从 Docker Hub 下载你的 Docker 镜像:
docker pull your-docker-hub-username/my-docker-example:latest
这会从 Docker Hub 下载你的 Docker 镜像到本地机器。
下载完成后,你可以运行该镜像:
docker run -d -p 8080:80 your-docker-hub-username/my-docker-example:latest
这将在后台运行从 Docker Hub 下载的 Docker 镜像,并将主机的 8080 端口映射到容器的 80 端口。
现在,你可以在浏览器中打开 http://localhost:8080,你应该能够看到与之前相同的简单网页,显示 "Hello from Docker!"。
🌊7. 结论
Docker 通过容器化技术简化了应用程序的开发、测试和部署过程,使得在不同环境中的应用程序运行更加一致。通过上述示例,可以看到如何编写 Dockerfile 构建镜像并运行容器。掌握 Docker,可以大大提升开发和运维的效率。
|
|