首页 > 其他分享 >Docker使用

Docker使用

时间:2024-03-28 11:31:49浏览次数:22  
标签:容器 -- 使用 nginx linux 镜像 Docker docker

目录

Docker安装

Docker常用命令

找镜像

启动镜像 

修改容器内容

提交改变

推送到远程仓库

物理传输

推送远程仓库

挂载数据

docker日志

docker复制


Docker安装

移除以前的docker相关包:sudo yum remove docker*

安装yum工具类:yum install -y yum-utils

添加docker安装源地址:

yum-config-manager \
  --add-repo \
  https://download.docker.com/linux/centos/docker-ce.repo

安装docker:yum install -y docker-ce docker-ce-cli containerd.io

        docker-ce:docker社区版

        docker-ce-cli:操作docker服务器的命令行

        containerd.io:docker容器化的运行环境

启动docker:systemctl enable docker --now

配置阿里云镜像:

sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://ckdhnbk9.mirror.aliyuncs.com"],
  "exec-opts": ["native.cgroupdriver=systemd"],
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "100m"
  },
  "storage-driver": "overlay2"
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

Docker常用命令

找镜像

hub.docker.com 在网站上搜索镜像:如Nginx,使用docker下载镜像

docker pull nginx //下载最新版

docker pull nginx:1.21.1 //下载1.21.1版

docker pull redis

启动镜像 

查看下载了哪些镜像:docker images

删除镜像:docker rmi 镜像名:版本号 / 镜像id

        直接写镜像名代表删除最新版本:docker rmi nginx == docker rmi nginx:latest

启动容器:有了镜像相当于有了安装包,启动容器相当于安装

        docker run [OPTIONS] image [COMMAND] [ARG...]

        OPTIONS:设置项 

        COMMAND:镜像启动运行的命令(镜像里一般有默认,一般不用写)

        docker run --name=mynginx -d  nginx

             --name=mynginx:设置容器名,不能与在运行中的和已关闭的容器重复,除非删除容器

             -d:后台运行

查看运行中的容器:docker ps

        查看所有容器,不管是否在运行:docker ps -a

删除已经关闭的容器:docker rm name / 容器id

        name:docker run 时设置的名字 :--name = mynginx

        删除在运行的容器:docker rm name -f

停止在运行的容器:

        前台运行:ctrl+c

        后台运行:docker stop 容器id/名字

启动停止的容器:docker start 容器id/名字

应用开机自启:docker update 容器id/名字 --restart=always

端口映射:启动docker容器相当于在linux服务器中创建一个虚拟服务器,当我们想要使用linux的公网ip访问服务器时,由于虚拟服务器只在docker容器中,对应的端口也只是虚拟服务器的,无法访问,这时我们可以在linux中使用一个端口与这个虚拟服务器的端口映射,这样我们访问linux服务器的端口就能映射到对应的容器来访问

        docker run --name=mynginx -d --restart=always -p 88:80 nginx

        -p 88:80

                88:linux主机上的端口

                80:nginx启动默认的端口

需要关闭对应的防火墙


修改容器内容

docker启动一个容器相当于在linux为其创建一个小linux:小型linux完整系统+容器软件的环境,因此可以进入这个小型linux系统来修改容器内容

进入容器:docker exec -it 容器id /bin/bash

        -it :以交互模式进入容器内部

        /bin/bash:进入容器的bash控制台

这个小型linux的内容可以在下载镜像时查看。

这时在访问88端口就发现nginx内容修改了


提交改变

当我们对容器进行修改后,如果该容器挂了,我们再次通过镜像创建容器时会发现,对之前容器的修改并不会在新容器上,意味着我们可能要重新修改。

为了防止这种情况,我们可以使用以下命令把修改后的容器提交到本地镜像中,当容器挂了时使用该镜像进行容器启动,这样以前的修改就能保存下来。

命令:docker commit -a "提交者" -m "提交信息" 容器id 镜像名:版本号 

 

这时之前对首页的修改不会出现

这时对首页的修改恢复了:


推送到远程仓库

提交改变只能在本机上恢复,当不同主机需要根据提交到本机的镜像来启动容器,可以用物理传输:把该镜像打包为压缩文件在发送给其他主机;也可以将该镜像推送到远程仓库中,另一台主机在到远程仓库中拉取到自己主机上并启动容器。

物理传输

打包命令:docker save -o 压缩文件名.tar 镜像名:版本号

发送命令:scp 压缩文件 目标主机:/路径

也可以使用工具来传输:如FinalShell。

另一台主机加载该镜像:

        docker load -i 压缩文件


推送远程仓库

在docker hub中注册登录账号,创建一个新仓库

使用命令:docker tag 本地镜像名:版本号 仓库名:版本号 ,将镜像复制一份,使镜像名格式正确

登录docker hub:docker login

推送:docker push 仓库名:版本号

推送完建议退出登录:docker logout

别的主机拉取:docker pull 仓库名:版本号


挂载数据

修改容器内容需要进入容器的虚拟服务器中,但可以将本机服务器的一个文件夹与虚拟服务器的文件夹关联,这样只需要修改本机服务器下文件夹就能修改容器内容。

docker run --name=mynginx \
-d --restart=always \
-p 88:80 -v /data/html:/usr/share/nginx/html:ro \
nginx

        -v:本机文件夹:容器文件夹:操作方式

               操作方式:ro:容器里边不能改

                                 rw:容器里边能改(默认)

如果本机文件夹为空,容器也为空(相当于覆盖)


docker日志

命令:docker logs 容器名/id


docker复制

将docker容器中的文件复制到本机或把本机文件复制到容器

命令:docker cp 容器id:容器文件路径   本机文件路径

标签:容器,--,使用,nginx,linux,镜像,Docker,docker
From: https://blog.csdn.net/abcd661054026/article/details/137030432

相关文章

  • Alfred使用AppleScript来实现一键隐藏功能(老板键)
    setappNamesto{"WeChat","QQ"}--将要隐藏的进程名称放入数组中tellapplication"SystemEvents"repeatwithappNameinappNamessetappProcesstofirstprocesswhosenameisappNamesetappIdtoidofappProcess......
  • sqlite安装及sqlite3对Data Base File的简单使用
    一、环境:操作系统Windows11家庭中文版64位  二、sqlite下载地址及版本https://www.sqlite.org/download.html三、安装1.下载后解压到文件夹如:D:\tools\sqlite3 2.配置sqlite环境:我的电脑-右键-属性      四、简单使用win+rcmd打开命令行工具......
  • Docker expose指令和-p 指令指定的端口区别
    expose指令用法该 EXPOSE 指令通知Docker容器在运行时侦听指定的网络端口,可以指定端口是侦听TCP还是UDP,如果未指定协议,则默认为TCP。EXPOSE80/tcpEXPOSE80/udpEXPOSE 指令实际上不会发布端口。它充当构建映像的人员和运行容器的人员之间的一种文档,用于发布要......
  • (GPT) Windows 下使用 cmd 删除文件夹
    在Windows命令提示符(CMD)中删除文件夹(也称为目录)可以使用rmdir或rd命令。这里有几个例子说明如何使用这些命令:删除空文件夹:rmdir"文件夹路径"或者rd"文件夹路径"这里的"文件夹路径"应该替换为你想删除的文件夹的实际路径。如果文件夹名或路径包含空格,请确保将路径放在双......
  • 软件测试技术分享丨uiautomator2详细使用方法
    本文转自测试人社区,原文链接:https://ceshiren.com/t/topic/53961.简介uiautomator2是一个自动化测试开源工具,仅支持android平台的自动化测试,其封装了谷歌自带的uiautomator2测试框架,可以运行在支持Python的任一系统上,目前版本为2.10.2开源库地址:https://github.com/ope......
  • 【前端面试题-13】目前主流的几种图片格式以及特性和使用场景
    目前主流的图片格式及其特性和使用场景包括:JPEG(.jpg):特性:JPEG是一种有损压缩格式,能够大幅度减少文件大小,但压缩过程中会有一定的图像质量损失。它支持渐进式显示,即先呈现低质量预览再逐渐加载高清晰度版本。使用场景:JPEG适用于需要较小文件尺寸的照片、网页图片、......
  • 使用 OpenCV 添加(混合)两个图像
    返回:OpenCV系列文章目录(持续更新中......)上一篇:OpenCV4.9的是如何进行图像操作下一篇:引言:我们将学习如何混合两个图像!目标在本教程中,您将学习:什么是线性混合以及它为什么有用;如何使用 addWeighted()添加两张图片 理论注意下面的解释属于RichardSzeliski的《......
  • CSS的使用——常用选择器的用法
    CSS选择器用于选择要样式化的HTML元素。下面介绍常见的CSS选择器用法。1.通配选择器*{margin:0;padding:0;}2.元素选择器h1{color:blue;}3.类选择器.my-class{font-size:16px;}4.ID选择器#my-id{background-color:ligh......
  • Yarn 的安装和使用
    在前端开发中,包管理工具是必不可少的利器,而Yarn就是其中一个备受欢迎的选择。本文将介绍如何安装和使用Yarn,并解决可能遇到的一些常见问题,让你更高效地管理项目依赖。什么是Yarn?Yarn是由Facebook、Google、Exponent和Tilde联合推出的JavaScript包管理工具。相......
  • CommandBuffer使用1
    是用来干嘛的?在渲染的某个步骤,插入额外的渲染处理。比如:在渲染不透明物体前,渲染一个正方体;在渲染不透明物体后,渲染一个球体。CommandBuffer支持的可插入点还是很多的,加在Camera上时,支持的可插入点在CameraEvent枚举上;加在Light上时,支持的可插入点在LightEvent枚举上。 和G......