jjzjj

你以为的docker有多难,学会这些组内横着走

IDEA上的操作工 2023-11-02 原文

文章目录

一、CentOS安装docker

docker官网
1)yum安装gcc相关:

yum -y install gcc
yum -y install gcc-c++

2)安装软件包:

yum install -y yum-utils
	yum-config-manager \
    --add-repo \
    https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

3)更新yum软件包索引:

yum makecache fast

4)安装Docker CE:

yum install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

5) 启动docker:

systemctl start docker

6) 阿里云镜像加速器配置:

二、启动帮助类命令

  • 启动docker:systemctl start docker
  • 停止docker:systemctl stop docker
  • 重启docker:systemctl restart docker
  • 查看docker状态:systemctl status docker
  • 开机启动:systemctl enable docker
  • 查看docker概要信息:docker info
  • 查看docker总体帮助文档:docker --help
  • 查看docker命令帮助文档:docker具体命令 --help

三、镜像命令

1.名词概念

  • REPOSITORY:表示镜像的仓库源
  • TAG:镜像的标签版本号
  • IMAGE ID:镜像ID
  • CREATED:镜像创建的时间
  • SIZE:镜像大小

2.常用命令

2.1 镜像命令

  • 列出本地所有镜像:
docker images
REPOSITORY   TAG           IMAGE ID       CREATED         SIZE
redis        6.2.11        6fce9af058e8   2 weeks ago     113MB
mysql        8.0           3218b38490ce   15 months ago   516MB
registry     latest        b8604a3fe854   16 months ago   26.2MB
ubuntu       latest        ba6acccedd29   17 months ago   72.8MB
tomcat       8.0.15-jre7   8384f49437b3   8 years ago     355MB

  • 只显示镜像ID:
docker images -q

6fce9af058e8
3218b38490ce
b8604a3fe854
ba6acccedd29
8384f49437b3
  • 在远程库搜索镜像:docker search 镜像名称
docker search redis
NAME                                DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
redis                               Redis is an open source key-value store that…   11926     [OK]
redislabs/redisearch                Redis With the RedisSearch module pre-loaded…   56
redislabs/redisinsight              RedisInsight - The GUI for Redis                81
redislabs/rebloom                   A probablistic datatypes module for Redis       22                   [OK]
redislabs/redis                     Clustered in-memory database engine compatib…   36
redislabs/rejson                    RedisJSON - Enhanced JSON data type processi…   53
redislabs/redisgraph                A graph database module for Redis               26                   [OK]
redislabs/redismod                  An automated build of redismod - latest Redi…   33                   [OK]
redis/redis-stack                   redis-stack installs a Redis server with add…   41
redislabs/redistimeseries           A time series database module for Redis         12
redis/redis-stack-server            redis-stack-server installs a Redis server w…   21

  • 拉取镜像:docker pull 镜像名称
docker pull redis:6.0
  • 在远程库查询前n条镜像:docker search --limit n 镜像名称
docker search --limit 5 redis
  • 删除镜像:docker rmi 镜像名称(镜像ID)
docker rmi redis:6.0
docker rmi 6fce9af058e8
  • 强制删除镜像:docker rmi -f 镜像ID
docker rmi -f 6fce9af058e8
  • 删除全部镜像(慎重):docker rmi -f $(docker images -qa)
docker rmi -f $(docker images -qa)

docker虚悬镜像:仓库名、标签都是none的镜像,俗称虚悬镜像dangling inamge

2.2 容器命令

2.2.1:常用参数

–name=“容器新名字” 为容器指定一个名称
-d: 后台运行容器并返回容器ID,也即启动守护式容器(后台运行)
-i: 以交互模式运行容器,通常与-t同时使用
-t: 为容器重新分配一个伪输入终端,通常与-i同时使用
-P: 随机端口映射,大写P
-p: 指定端口映射,小写p
退出 exit

2.2.2:常用指令

  • 新建并启动容器:
交互式容器:
docker run -it --name=myu1 ubuntu  /bin/bash
守护式容器:
docker run -d redis
  • 列出当前所有正在运行的容器:
docker ps
  • 退出容器:
exit
ctrl+p+q
两者区别:exit容器停止,ctrl+p+q容器不停止
  • 启动已经停止的容器:docker start 容器ID或容器名
docker start redis
  • 重启容器:docker restart 容器ID或容器名
docker restart redis
  • 停止容器:
docker stop redis
  • 强制停止容器:
docker kill redis
  • 删除已经停止的容器:docker rm 容器ID或容器名
docker rm redis
  • 查看容器日志:docker logs 容器ID
docker logs c632a8676b73 
  • 查看容器内运行进程:docker top 容器ID
docker top c632a8676b73
  • 查看容器内部细节:docker inspect 容器ID
docker inspect c632a8676b73
  • 进入正在运行的容器并以命令行交互:
docker exec -it c632a8676b73 /bin/bash
docker attach c632a8676b73
两者区别:attach直接进入容器启动命令终端,不会启动新的进程,用exit退出,会导致容器停止。 exec是在容器中打开新的终端,并且可以启动新的进程,用exit退出,不会导致容器停止
  • 从容器内拷贝文件到主机上:docker cp 容器ID:容器内路径 目的主机路径
docker cp f400fb93b8da:/tmp/a.txt /root
  • 导入和导出容器:
docker export 容器ID > name.tar
cat name.tar | docker import - 镜像用户/镜像名:镜像版本号
  • 搭建docker本地库
docker pull registry
vim /etc/docker/daemon.json

{ 
  "insecure-registries": ["192.168.80.10:5000"], #添加此段,“,”不可少,ip是本机IP地址
  "registry-mirrors": ["https://ox6a5bka.mirror.aliyuncs.com"]
}

systemctl daemon-reload
systemctl restart docker.service
docker create -it registry /bin/bash
docker run -d -p 5000:5000 -v /data/registry:/tmp/registry registry
'//-p指定端口,一内一外;-v表示挂载,前者是宿主机,后者是容器'
 
  • commit命令生成新的镜像:
docker commit -m="安装了vim" -a="zhang" f400fb93b8da vimubuntu
  • 将镜像推到本地库:
curl -XGET http://xxx.xxx.xx.xx:5000/v2/_catalog
docker pull xxx.xxx.xx.xx:5000/ipconfigubuntu:1.2
  • 容器数据卷:
docker run -it --privileged=true -v /宿主机绝对路径目录:/容器内目录 镜像名
docker run -it --privileged=true -v /www/local_data:/tmp/docker_data:rw(ro) --name=u1 ubuntu  读写或只读

2.3 安装单机mysql、redis

docker pull mysql:8.0
docker run -d -p 3306:3306 --privileged=true -v /www/mysql/log:/var/log/mysql -v /www/mysql/data:/var/lib/mysql -v /www/mysql/conf:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=Zhang0727 --name mysql8 mysql:8.0.15
docker pull redis:6.0
docker run -p 6379:6379 --name=redis6 --privileged=true -v /www/redis/redis.conf:/etc/redis/redis.conf -v /www/redis/data:/data -d redis:6.2.11 redis-server /etc/redis/redis.conf

原创不易,还希望各位大佬支持一下 \textcolor{blue}{原创不易,还希望各位大佬支持一下} 原创不易,还希望各位大佬支持一下

👍 点赞,你的认可是我创作的动力! \textcolor{green}{点赞,你的认可是我创作的动力!} 点赞,你的认可是我创作的动力!

⭐️ 收藏,你的青睐是我努力的方向! \textcolor{green}{收藏,你的青睐是我努力的方向!} 收藏,你的青睐是我努力的方向!

✏️ 评论,你的意见是我进步的财富! \textcolor{green}{评论,你的意见是我进步的财富!} 评论,你的意见是我进步的财富!

有关你以为的docker有多难,学会这些组内横着走的更多相关文章

  1. Get https://registry-1.docker.io/v2/: net/http: request canceled while waiting - 2

    1.错误信息:Errorresponsefromdaemon:Gethttps://registry-1.docker.io/v2/:net/http:requestcanceledwhilewaitingforconnection(Client.Timeoutexceededwhileawaitingheaders)或者:Errorresponsefromdaemon:Gethttps://registry-1.docker.io/v2/:net/http:TLShandshaketimeout2.报错原因:docker使用的镜像网址默认为国外,下载容易超时,需要修改成国内镜像地址(首先阿里

  2. ruby - 为什么这些方法没有解决? - 2

    这个问题在这里已经有了答案:WhydoRubysettersneed"self."qualificationwithintheclass?(3个答案)关闭29天前。给定这段代码:classSomethingattr_accessor:my_variabledefinitialize@my_variable=0enddeffoomy_variable=my_variable+3endends=Something.news.foo我收到这个错误:test.rb:9:in`foo':undefinedmethod`+'fornil:NilClass(NoMethodError)fromtes

  3. python - 这些脚本语言中哪种更适合渗透测试? - 2

    关闭。这个问题是opinion-based.它目前不接受答案。想要改进这个问题?更新问题,以便editingthispost可以用事实和引用来回答它.关闭9年前。Improvethisquestion首先,我想避免一场关于语言的口水战。可供选择的语言有Perl、Python和Ruby。我想提一下,我对所有这些都很满意,但问题是我不能只专注于一个。例如,如果我看到一个很棒的Perl模块,我必须尝试一下。如果我看到一个不错的Python应用程序,我必须知道它是如何制作的。如果我看到RubyDSL或一些Ruby巫术,我就会迷上Ruby一段时间。目前我是一名Java开发人员,但计划在不久的将来

  4. ruby-on-rails - 私有(private) gem 没有安装在 docker 中 - 2

    我正在尝试使用docker运行一个Rails应用程序。通过github的sshurl安装的gem很少,如下所示:Gemfilegem'swagger-docs',:git=>'git@github.com:xyz/swagger-docs.git',:branch=>'my_branch'我在docker中添加了keys,它能够克隆所需的repo并从git安装gem。DockerfileRUNmkdir-p/root/.sshCOPY./id_rsa/root/.ssh/id_rsaRUNchmod700/root/.ssh/id_rsaRUNssh-keygen-f/root/.ss

  5. ruby-on-rails - 将 Heroku 环境变量传输到 Docker 实例 - 2

    我在Heroku上构建了一个必须在Docker容器内运行的RoR应用程序。为此,我使用officialDockerfile.因为它在Heroku中很常见,所以我需要一些附加组件才能使这个应用程序完全运行。在生产中,变量DATABASE_URL在我的应用程序中可用。但是,如果我尝试其他一些使用环境变量(在我的例子中是Mailtrap)的加载项,变量不会在运行时复制到实例中。所以我的问题很简单:如何让docker实例在Heroku上执行时知道环境变量?您可能会问,我已经知道我们可以在docker-compose.yml中指定一个environment指令。我想避免这种情况,以便能够通过项目

  6. ruby - 更新 gem 时 Docker 包安装缓存问题 - 2

    我在开发和生产中都使用docker,真正困扰我的一件事是docker缓存的简单性。我的ruby​​应用程序需要bundleinstall来安装依赖项,因此我从以下Dockerfile开始:添加GemfileGemfile添加Gemfile.lockGemfile.lock运行bundleinstall--path/root/bundle所有依赖项都被缓存,并且在我添加新gem之前效果很好。即使我添加的gem只有0.5MB,从头开始安装所有应用程序gem仍然需要10-15分钟。由于依赖项文件夹的大小(大约300MB),然后再花10分钟来部署它。我在node_modules和npm上遇到了

  7. 【详解】Docker安装Elasticsearch7.16.1集群 - 2

    开门见山|拉取镜像dockerpullelasticsearch:7.16.1|配置存放的目录#存放配置文件的文件夹mkdir-p/opt/docker/elasticsearch/node-1/config#存放数据的文件夹mkdir-p/opt/docker/elasticsearch/node-1/data#存放运行日志的文件夹mkdir-p/opt/docker/elasticsearch/node-1/log#存放IK分词插件的文件夹mkdir-p/opt/docker/elasticsearch/node-1/plugins若你使用了moba,直接右键新建即可如上图所示依次类推创建

  8. 转转测试环境docker化实践 - 2

        测试环境对于任何一个软件公司来讲,都是核心基础组件之一。转转的测试环境伴随着转转的发展也从单一的几套环境发展成现在的任意的docker动态环境+docker稳定环境环境体系。期间环境系统不断的演进,去适应转转集群扩张、新业务的扩展,走了一些弯路,但最终我们将系统升级到了我们认为的终极方案。下面我们介绍一下转转环境的演进和最终的解决方案。1测试环境演进1.1单体环境    转转在2017年成立之初,5台64G内存的机器,搭建5个完整的测试环境。就满足了转转的日常所需。一台分给开发,几台分给测试。通过沟通协调就能解决多分支并行开发下冲突问题。1.2动态环境+稳定环境    随着微服务化的进

  9. ruby-on-rails - 这些 Ruby 版本中存在 heroku 命令吗? - 2

    在我使用rbenv更新我的Ruby版本后,我无法使用Heroku命令行工具。我收到此错误:>herokurbenv:heroku:commandnotfoundThe`heroku'commandexistsintheseRubyversions:2.0.0-p195从toolbelt.heroku.com重新安装工具带没有帮助。 最佳答案 我切换到我以前的Ruby版本2.0.0p195并卸载了gem'heroku'rbenvglobal2.0.0p195gemuninstallheroku然后我切换到最新的Ruby版本2.0.0p

  10. ruby-on-rails - 为什么我在运行 "gem pristine --all"后不断收到这些错误 - 2

    我尝试运行gempristine--all并且我不断在控制台中获取它。当我运行gempristine--all我得到这个:权限被拒绝....我什至尝试为每个gem执行geminstall并且仍然得到这个:`Ignoringbinding_of_caller-0.7.2becauseitsextensionsarenotbuilt.Try:gempristinebinding_of_caller--version0.7.2Ignoringbyebug-5.0.0becauseitsextensionsarenotbuilt.Try:gempristinebyebug--version5.

随机推荐