目录
🦐博客首页:大虾好吃吗的博客
本篇文章对你或许比较枯燥,但是学docker的前提就是要知道基础命令。一个命令往往有很多个参数,一种参数一种用途,本篇将针对常用命令重点讲解,可收藏保存以备不时之需。
学习命令前,你要先了解docker的三个概念。
打包:把服务运行所需的依赖、第三方库、打包成一个安装包。
分发:把你打包好的安装包上传到一个镜像仓库,其他人可以很方便的安装部署。
部署:使用分发下来的安装包,一条命令就可以运行起来,自动模拟出一模一样的运行环境,不管是在 Windows/Mac/Linux。
systemctl start docker #启动docker
systemctl stop docker #关闭docker
systemctl restart docker #重启docker
systemctl enable docker #开机自启
systemctl status docker #查看运行状态
docker kill 容器id #强制停止当前容器
docker pause 容器id #挂起容器
docker unpause 容器id #恢复挂起
docker commit 容器id 镜像名 #把容器制作成镜像
docker volume ls #查看 volume 列表
docker network ls #查看网络列表
docker --help #帮助命令
docker version #查看版本信息
docker info #查看版本信息
帮助文档的地址:docker
镜像:可以理解为软件安装包,方便进行传播和安装。
docker images #查看本地主机上的镜像(-a:列出所有镜像;-q:只显示镜像id;-aq:显示所有镜像的id)
docker search nginx #搜索nginx镜像(--filter=STARS=3000 搜索出来的镜像就是starts 大于等于3000的,用来过滤下载数量)
docker pull nginx #下载nginx镜像(默认为最新版,如需指定版本:docker pull nginx:1.21.0)
docker rmi {服务名|ID} #删除镜像(-f选项强制删除;删除多个镜像用空格分隔)
docker rmi -f $(docker images -aq) #删除全部镜像
下载nginx镜像并查看
[root@doc ~]# docker pull nginx
[root@doc ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
nginx latest 605c77e624dd 14 months ago 141MB
| REPOSITORY | TAG | IMAGE ID | CREATED | SIZE |
|---|---|---|---|---|
| 镜像的仓库源 | 镜像标签 | 镜像ID | 镜像创建的时间 | 镜像大小 |
容器:软件安装后的状态,每个运行环境都是独立的、隔离的。可以理解为有很多个房间,而每一个房间只有一种物品,这种物品又是独一无二的,这种称之为容器。
docker ps [参数] # 列出当前正在运行的容器(等同于docker container list)
-a # 带出历史运行过的容器
-q # 只显示容器的编号
docker run [参数] 镜像名
# 参数说明
--name="Name" 容器名字 tomcat01 tomcat02, 用来区分容器
-i 运行容器
-d 后台方式运行
-t 启动容器后自动进入命令行
-it 使用交互方式运行,进入容器查看
-id 使用守护方式运行,不进入容器查看
-p 指定容器的端口 -p 8080:8080
-p ip:主机端口:容器端口
-p 主机端口:容器端口(常用)
-p 容器端口(随机映射到外部端口,一般32000+)
-P 随机映射端口(大写)
案例:
1.创建容器my_web1、2,nginx为最新版,启动环境/bin/bash
docker run -it --name=my_web1 nginx:latest /bin/bash #创建并启动容器(交互式)使用exit退出容器,从容器中退回主机,容器关闭(想要容器持续运行,添加参数-d)
docker run -id --name=my_web2 nginx:latest /bin/bash #创建容器但不启动(守护式)
docker exec -it my_web2 /bin/bash #登录容器
2.创建容器,指定端口和随机端口映射
docker run -d --name web1 -p 8080:80 nginx /bin/bash #指定端口映射
docker run -d --name web2 -p 8081:80 nginx /bin/bash #指定端口映射
docker run -d --name web3 -p 80 nginx /bin/bash #随机映射端口
docker run -d --name web4 -P nginx /bin/bash #随机映射端口
docker rm {容器id|容器名} # 删除指定容器,不能删除正在运行的容器,如果要强制删除添加-f选项
docker rm -f $(docker ps -aq) # 删除所有的容器
docker ps -a -q | xargs docker rm -f # 删除所有的容器
docker cp 需要拷贝的文件或目录 容器名称:容器目录 #把宿主机的文件拷贝到容器里
docker cp 容器名称:容器目录 需要拷贝的文件或目录 #从容器中拷贝文件到宿主机
docker inspect 容器id
要求:使用centos安装nginx等,并制作成镜像。
[root@doc ~]# docker search centos #搜索镜像
[root@doc ~]# docker pull centos:7 #拉取镜像
下图内容提示下载镜像成功。

使用命令查看下载的镜像、版本、ID等信息。
守护式创建名为nginx1的容器,映射端口号80。
[root@doc ~]# docker run -itd --name nginx1 -p 80:80 centos:7 /bin/bash
0d97dd210fd5cd151560744694dcc09d5d56ac960741bb91109d9fad4788ff9e
[root@doc ~]# docker exec -it nginx1 /bin/bash
[root@c280bd02a56b /]# #登录成功
创建好容器后,下载nginx服务,以及所需的工具,通过commit命令制作成镜像,下次需要使用nginx服务使用nginx_v1镜像,直接就可以创建了。
[root@c280bd02a56b /]# yum -y install epel-release #下载epel源
[root@c280bd02a56b /]# yum -y install vim net-tolls nginx #下载工具及网站服务
[root@doc ~]# docker commit nginx1 nginx_v1 #把nginx1容器制作成镜像,镜像名为nginx_v1
sha256:8ac8aab96ad07a4d75852ebd96adf8622b2045aa263c94b35be44e6b11485180
system-view进入系统视图quit退到系统视图sysname交换机命名vlan20创建vlan(进入vlan20)displayvlan显示vlanundovlan20删除vlan20displayvlan20显示vlan里的端口20Interfacee1/0/24进入端口24portlink-typeaccessvlan20把当前端口放入vlan20undoporte1/0/10删除当前VLAN端口10displaycurrent-configuration显示当前配置02配置交换机支持TELNETinterfacevlan1进入VLAN1ipaddress192.168.3.100
1.错误信息:Errorresponsefromdaemon:Gethttps://registry-1.docker.io/v2/:net/http:requestcanceledwhilewaitingforconnection(Client.Timeoutexceededwhileawaitingheaders)或者:Errorresponsefromdaemon:Gethttps://registry-1.docker.io/v2/:net/http:TLShandshaketimeout2.报错原因:docker使用的镜像网址默认为国外,下载容易超时,需要修改成国内镜像地址(首先阿里
目录SpringBootStarter是什么?以前传统的做法使用SpringBootStarter之后starter的理念:starter的实现: 创建SpringBootStarter步骤在idea新建一个starter项目、直接执行下一步即可生成项目。 在xml中加入如下配置文件:创建proterties类来保存配置信息创建业务类:创建AutoConfiguration测试如下:SpringBootStarter是什么? SpringBootStarter是在SpringBoot组件中被提出来的一种概念、简化了很多烦琐的配置、通过引入各种SpringBootStarter包可以快速搭建出一
我正在尝试使用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
我在Heroku上构建了一个必须在Docker容器内运行的RoR应用程序。为此,我使用officialDockerfile.因为它在Heroku中很常见,所以我需要一些附加组件才能使这个应用程序完全运行。在生产中,变量DATABASE_URL在我的应用程序中可用。但是,如果我尝试其他一些使用环境变量(在我的例子中是Mailtrap)的加载项,变量不会在运行时复制到实例中。所以我的问题很简单:如何让docker实例在Heroku上执行时知道环境变量?您可能会问,我已经知道我们可以在docker-compose.yml中指定一个environment指令。我想避免这种情况,以便能够通过项目
我在开发和生产中都使用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上遇到了
开门见山|拉取镜像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,直接右键新建即可如上图所示依次类推创建
测试环境对于任何一个软件公司来讲,都是核心基础组件之一。转转的测试环境伴随着转转的发展也从单一的几套环境发展成现在的任意的docker动态环境+docker稳定环境环境体系。期间环境系统不断的演进,去适应转转集群扩张、新业务的扩展,走了一些弯路,但最终我们将系统升级到了我们认为的终极方案。下面我们介绍一下转转环境的演进和最终的解决方案。1测试环境演进1.1单体环境 转转在2017年成立之初,5台64G内存的机器,搭建5个完整的测试环境。就满足了转转的日常所需。一台分给开发,几台分给测试。通过沟通协调就能解决多分支并行开发下冲突问题。1.2动态环境+稳定环境 随着微服务化的进
我在/usr/local/lib中安装了一些本地库。我现在正在尝试安装一个需要这些的gem,以便正确构建,但是gem构建失败,因为它找不到图书馆。gem的extconf.rb文件试图确认它可以找到库have_library()但由于某种原因失败了。我尝试设置一堆环境变量,但似乎没有任何效果:irb(main):003:0>require'mkmf'=>trueirb(main):004:0>have_library('gecodesearch')checkingformain()in-lgecodesearch...no=>falseirb(main):005:0>ENV['LD_LI
文章目录Kubernetes(k8s)工作负载一、Workloads二、Pod三、Deployment四、RC、RS、DaemonSet、StatefulSet五、Job、CronJob1、Job2、CronJob六、GCKubernetes(k8s)工作负载一、Workloads什么是工作负载(Workloads)工作负载是运行在Kubernetes上的一个应用程序。一个应用很复杂,可能由单个组件或者多个组件共同完成。无论怎样我们可以用一组Pod来表示一个应用,也就是一个工作负载Pod又是一组容器(Containers)所以关系又像是这样工作负载(Workloads)控制一组PodPod控制