首页 > 其他分享 >Docker的使用记录

Docker的使用记录

时间:2022-09-24 14:33:58浏览次数:50  
标签:容器 记录 -- apt 使用 镜像 Docker my docker

开始

这是第一个尝试在Leanote上面编写文章,我觉得最重要的事情就是能够保证md文件是能够移植的,否则如果这个软件不靠谱的话,我还能把文章移动到别的地方去。所以先写一篇文章看看效果如何,方便不方便移动。


一直听说docker很好用,但是并没有把他作为一个主力使用的工具,因为看它的命令还是很繁琐的,,,说起来,,确实是因为我没有耐心的去看它的使用方式。那么接下来就通过文字的方式简单的记忆一下docker的使用方式,以及简单的工作原理。


基本原理

实际上docker就是容器,类似于proot的存在。对于proot的文件系统来说,就是docker的镜像(image)。这个镜像可以通过docker pull的方式从镜像源拉取,类似于apt或者yum的工作方式,非常方便,当然还是需要换源的。想要知道本地有什么已经下载的镜像可以通过docker images命令查看。
把镜像运行起来之后,就称之为容器。当前有什么正在运行的容器可以通过docker ps命令查看。
容器之间都是相互独立的存在,彼此是不能相见的,这也对安全了些保障,如果是正常情况下直接在主机上面运行一个网站,那么可能会出现文件上传漏洞这样的问题,进而被控制整个主机。但是如果是通过docker来运行网站,那么就不需要担心这个问题了,数据库和网站都在容器里面,别的什么东西都没有,也是完全不用担心的。
如果想要让两个容器互相通讯,使用--link参数就可以了,方法是https://www.cnblogs.com/vincenshen/p/8724584.html

命令记录

安装

建议直接通过apt安装,不添加仓库,因为会导致每次apt upgrade都得去官方仓库会非常慢。
通过sudo apt install dockersudo apt install docker.io安装就行了

换源

编辑/etc/docker/daemon.json
替换成如下

{"registry-mirrors" : [
    "https://registry.docker-cn.com",
    "https://docker.mirrors.ustc.edu.cn",
    "http://hub-mirror.c.163.com",
    "https://cr.console.aliyun.com/"
    ]}

然后重启服务就好了 service docker restart 或者新版ubuntu使用systemctl restart docker

运行

通过docker run命令就可以运行了,例如使用下面的命令
docker run -d --name my_nextcloud -v /data/nextcloud:/data/data -p 8080:80 -e ENV1=11 nextcloud
上面的命令含义是
运行 nextcloud容器,如果本地没有这个镜像就去仓库拉取

  • -d参数表示后台运行,不会在控制台有输出
  • --name my_nextcloud表示给这个容器取了一个别称
  • -v表示与宿主机共享目录:前面是宿主机,后者是容器
  • -p 表示端口映射,:前面是宿主机,后者是容器,运行后访问宿主的8080相当于访问容器的80端口
  • -e 设置环境变量,多个变量多个-e这个选项一定要在容器名之后

更多参数看https://www.cnblogs.com/yfalcon/p/9044246.html
如果使用-d启动失败了,可以通过docker logs 容器id看到输出

查看镜像或容器

查看所有镜像docker images
查看运行中的容器docker ps
查看所有容器docker ps -a

删除镜像或容器

删除镜像

删除镜像需要保证这个镜像没有对应容器在运行,删除时如果说不能删除,可以通过添加-f参数强制删除例如
docker rmi -f 容器id或容器名

删除容器

docker rm 容器id或容器名
删除所有退出的容器
docker rm $(docker ps -a | grep Exited | awk '{print $1}')

停止容器

docker stop 容器id或者容器名
需要注意每次运行容器的时候id是会变化的,但是镜像id是不变的

启动停止的容器

docker start 容器

连接两个容器例子

例如此时需要使用一个数据库容器,还有一个ubuntu容器,需要在ubuntu中连接数据库容器中的数据库

  • docker run -d --name="my" -e MYSQL_ROOT_PASSWORD="123456" mysql
    • 启动一个名称为mymysql容器,指定密码是123456 且是后台运行
  • docker ps能够看到mysql容器运行起来了,如果没有通过docker logs my看到输出,就知道错误原因了
  • docker run -it --link my ubuntu 启动一个ubuntu容器,并且通过--link参数连接my,其中-it是两个参数,但综合使用效果就是进入容器并且获得里面的shell控制台
  • 进入ubuntu控制台之后
    • 通过apt update 更新软件列表否则不能apt东西
    • apt install mysql-client安装mysql客户端
    • mysql -h my -uroot -p 然后输入密码123456应该就能连接上了

此时通过cat /etc/hosts就能看到 172.17.0.2 my 18f749131a95 这样的东西,可见上面通过-h参数指定的主机my对应的就是另一个容器的ip地址

注意

  • 如果不通过--name参数指定容器名则删除或者启动操作不能使用容器,注意区分容器名和仓库名
  • 如果没有必要,那么操作的时候把容器名或者镜像名放到命令的最后能避免很多错误 (docker的参数对顺序敏感)

标签:容器,记录,--,apt,使用,镜像,Docker,my,docker
From: https://www.cnblogs.com/cjdty/p/16725595.html

相关文章

  • ffmpeg 使用记录
    这周周末尝试把我硬盘上面的视频文件压缩了一下,但是效果并不理想。其中主要有两个原因,视频本来就是h264的编码,再重新编码也没啥用,因为限制大小的主要是码率ffmpegGPU加......
  • Pycharm安装使用
    下载链接地址:https://www.jetbrains.com/pycharm/download/#section=windows根据自己的系统需要安装对应的版本,我的是windows系统,因此安装如下版本,链接参考:https://down......
  • Nacos 注册中心简单使用
    config-service配置相关naming-service服务相关Nacos也基地版获取host下服务......
  • 使用 MLBox 探索 AutoML
    使用MLBox探索AutoML作为数据科学家或机器学习工程师,有时我们想要自动化我们的一些任务。这就是AutoML的用武之地。AutoML只是从ML过程开始到结束运行的过程,并使......
  • docker 安装redis 并设置密码
    拉取镜像dockerpullredis运行容器并设置密码端口号dockerrun-d--namemyredis-p6379:6379redis--requirepass"123456" ......
  • 使用Consul做注册中心简示
    基地版同一个地点不同的风景......
  • java正则表达式简单使用
    Stringemail="13072558368";email=email.replaceAll("(\\d{3})\\d{6}(\\d{2})","$1****$2");System.out.println("email="+email);email=130****68从第......
  • 使用 Python 3 开发聊天机器人
    使用Python3开发聊天机器人我最近登陆了一个小项目,使用Python3开发了一个在Telegram平台上使用的聊天机器人。您可以查看机器人帐户@https://t.me/AI_12_Bot.......
  • 使用 CSS 从头开始​​编写时间线效果
    我报名了GoldstoneProjectPhase1Challenge——瓜分100,000奖池,这是我的第7篇文章,点击查看活动详情时间线效果介绍在前端开发中,我们会遇到一些特别适合用时间轴显示......
  • 使用 RainbowKit 和 React 制作漂亮的 Connect Wallet 按钮
    使用RainbowKit和React制作漂亮的ConnectWallet按钮Web3中的身份验证非常简单,但支持所有钱包并制作漂亮的UI可能会很痛苦且耗时。值得庆幸的是,有许多库也使这......