首页 文章 精选 留言 我的

精选列表

搜索[管理],共10008篇文章
优秀的个人博客,低调大师

集群管理

查看节点信息 root@netkiller /var/log/elasticsearch % curl -XGET localhost:9200/ { "name" : "node-1", "cluster_name" : "elasticsearch", "cluster_uuid" : "I7jirJ2yTr-f2qrBNorQYA", "version" : { "number" : "5.6.0", "build_hash" : "781a835", "build_date" : "2017-09-07T03:09:58.087Z", "build_snapshot" : false, "lucene_version" : "6.6.0" }, "tagline" : "You Know, for Search" } 8.5.1.节点健康状态 root@netkiller ~ % curl 'http://localhost:9200/_cat/health?v' epoch timestamp cluster status node.total node.data shards pri relo init unassign pending_tasks max_task_wait_time active_shards_percent 1502445967 18:06:07 my-application yellow 2 2 17 11 0 0 5 0 - 77.3% root@netkiller ~ % curl 'http://localhost:9200/_cluster/health' {"cluster_name":"my-application","status":"yellow","timed_out":false,"number_of_nodes":2,"number_of_data_nodes":2,"active_primary_shards":11,"active_shards":17,"relocating_shards":0,"initializing_shards":0,"unassigned_shards":5,"delayed_unassigned_shards":0,"number_of_pending_tasks":0,"number_of_in_flight_fetch":0,"task_max_waiting_in_queue_millis":0,"active_shards_percent_as_number":77.27272727272727} 8.5.2.节点http状态 root@netkiller ~ % curl 'localhost:9200/_nodes/stats/http?pretty' { "_nodes" : { "total" : 2, "successful" : 2, "failed" : 0 }, "cluster_name" : "my-application", "nodes" : { "-lnKCmBXRpiwExLns0jc9g" : { "timestamp" : 1502446878773, "name" : "node-1", "transport_address" : "10.104.3.2:9300", "host" : "10.104.3.2", "ip" : "10.104.3.2:9300", "roles" : [ "master", "data", "ingest" ], "http" : { "current_open" : 4, "total_opened" : 29 } }, "WVsgYi2HT8GWnZU1kUwFwA" : { "timestamp" : 1502446878782, "name" : "node-2", "transport_address" : "10.186.7.221:9300", "host" : "10.186.7.221", "ip" : "10.186.7.221:9300", "roles" : [ "master", "data", "ingest" ], "http" : { "current_open" : 0, "total_opened" : 2 } } } } 8.5.3.查看master节点 root@netkiller ~ % curl 'http://localhost:9200/_cat/nodes?v' ip heap.percent ram.percent cpu load_1m load_5m load_15m node.role master name 10.104.3.2 31 98 50 0.20 0.55 0.61 mdi - node-1 10.186.7.221 25 99 0 0.00 0.01 0.05 mdi * node-2 8.5.4.查看索引的节点分布 root@netkiller ~ % curl 'http://localhost:9200/_cat/shards?v' index shard prirep state docs store ip node logstash-api 1 p STARTED 103 342kb 10.186.7.221 node-2 logstash-api 1 r STARTED 103 342kb 10.104.3.2 node-1 logstash-api 3 p STARTED 104 404.1kb 10.186.7.221 node-2 logstash-api 3 r STARTED 104 404.1kb 10.104.3.2 node-1 logstash-api 4 p STARTED 117 349.2kb 10.186.7.221 node-2 logstash-api 4 r STARTED 117 349.2kb 10.104.3.2 node-1 logstash-api 2 p STARTED 113 405.8kb 10.186.7.221 node-2 logstash-api 2 r STARTED 113 405.8kb 10.104.3.2 node-1 logstash-api 0 p STARTED 128 488.4kb 10.186.7.221 node-2 logstash-api 0 r STARTED 128 488.4kb 10.104.3.2 node-1 .kibana 0 p STARTED 5 31.2kb 10.186.7.221 node-2 .kibana 0 r STARTED 5 31.2kb 10.104.3.2 node-1 information 1 p STARTED 10 122.3kb 10.104.3.2 node-1 information 1 r UNASSIGNED information 3 p STARTED 7 159.6kb 10.104.3.2 node-1 information 3 r UNASSIGNED information 4 p STARTED 8 86.1kb 10.104.3.2 node-1 information 4 r UNASSIGNED information 2 p STARTED 11 160kb 10.104.3.2 node-1 information 2 r UNASSIGNED information 0 p STARTED 9 202.8kb 10.104.3.2 node-1 information 0 r UNASSIGNED 8.5.5.索引的开启与关闭 POST /{index}/_close 关闭索引 POST /{index}/_open 打开索引 8.5.5.1._open root@netkiller /var/log/elasticsearch % curl 'http://localhost:9200/_cat/indices?v' health status index uuid pri rep docs.count docs.deleted store.size pri.store.size close information oygxIi-dR1eB9NoIZtJrxQ green open logstash-spring 9xXtt_L0QvKHibXFH5gjJQ 5 1 4622 0 62.9mb 31.4mb green open .kibana 9jBBaOomTO2EakZlZqnE-g 1 1 10 0 36.6kb 18.3kb root@netkiller /var/log/elasticsearch % curl -XPOST 'http://localhost:9200/information/_open' {"acknowledged":true}# root@netkiller /var/log/elasticsearch % curl 'http://localhost:9200/_cat/indices?v' health status index uuid pri rep docs.count docs.deleted store.size pri.store.size green open information oygxIi-dR1eB9NoIZtJrxQ 5 1 2417 5 34.5mb 17.3mb green open logstash-spring 9xXtt_L0QvKHibXFH5gjJQ 5 1 4622 0 62.9mb 31.4mb green open .kibana 9jBBaOomTO2EakZlZqnE-g 1 1 10 0 36.6kb 18.3kb 8.5.5.2._close root@netkiller /var/log/elasticsearch % curl -XPOST 'http://localhost:9200/information/_close' {"acknowledged":true}# 原文出处:Netkiller 系列 手札 本文作者:陈景峯 转载请与作者联系,同时请务必标明文章原始出处和作者信息及本声明。

优秀的个人博客,低调大师

管理

166.5.1.列出卷 docker volume ls # docker volume ls DRIVER VOLUME NAME local dbac41b6de88c75d2932d5949367b17f347f482977d508195375dbc71518ab27 166.5.2.创建卷 # docker volume create --name WebVolume1 WebVolume1 # docker volume ls DRIVER VOLUME NAME local WebVolume1 local dbac41b6de88c75d2932d5949367b17f347f482977d508195375dbc71518ab27 166.5.3.挂在镜像 # docker run -ti --rm -v WebVolume1:/www ubuntu # docker run -ti --rm -v WebVolume1:/www docker.io/centos:7 查看卷的挂载情况 # df | grep /www /dev/vda1 20510332 7943940 11501484 41% /www 创建测试文件 # mkdir -p /www/netkiller.cn/www.netkiller.cn # echo Helloworld > /www/netkiller.cn/www.netkiller.cn/index.html # cat /www/netkiller.cn/www.netkiller.cn/index.html Helloworld # exit exit 166.5.4.检查卷 # docker volume inspect WebVolume1 [ { "Driver": "local", "Labels": {}, "Mountpoint": "/var/lib/docker/volumes/WebVolume1/_data", "Name": "WebVolume1", "Options": {}, "Scope": "local" } ] 166.5.5.删除卷 # docker volume create AppVolume1 # docker volume rm AppVolume1 166.5.6.销毁所有未使用的卷 # docker volume prune WARNING! This will remove all volumes not used by at least one container. Are you sure you want to continue? [y/N] y Deleted Volumes: WebVolume1 3fd379f8c2cf8727d2e83e84e434ea1f122016957bd7cf78a0f05b6e5a69cf2b app Total reclaimed space: 11 B 166.5.7.在多个容器间共享卷 容器一 # docker run -ti --name=Container1 -v DataVolume1:/opt/data ubuntu 容器二 # docker run -ti --name=Container2 --volumes-from Container1 ubuntu 进入容器一中查看数据 # docker start -ai Container1 容器三,挂在只读卷 # docker run -ti --name=Container3 --volumes-from Container2:ro ubuntu 删除上面三个测试容易和卷 # docker rm Container1 Container2 Container3 # docker volume rm DataVolume1 166.5.8.容器绑定本地文件系统 Bind mount a volume (default []) # docker run -it --name mycentos1 -v /www:/tmp/test docker.io/centos:7 /bin/bash # docker run -d -v ~/logs:/var/log/nginx -p 80:80 -i nginx 原文出处:Netkiller 系列 手札 本文作者:陈景峯 转载请与作者联系,同时请务必标明文章原始出处和作者信息及本声明。

优秀的个人博客,低调大师

android 中resources管理

主要存在于res/value文件夹中 定义: dimen.xml:主要用于设置像素默认值 <resources> res/values/dimens.xml <dimen name="sp_12">12sp</dimen> <dimen name="sp_13">13sp</dimen> <dimen name="dip_40">40dip</dimen> <dimen name="dip_45">45dip</dimen> </resources> 代码使用: int width=getContext().getResources().getDimension(R.dimen.tab_width); xml文件使用: android:layout_width="@dimen/tab_width" color.xml设置颜色 <?xml version="1.0" encoding="utf-8"?> <resources> <item type="drawable" name="main_background">#FFE7E7E7</item> <item type="drawable" name="newslist_item_background">#FFE7E7E7</item> <item type="color" name="white">#FFFFFFFF</item> <item type="color" name="category_title_normal_background">#FFADB2AD</item> <item type="color" name="gold">#b89766</item> <item type="color" name="transparent">#000000</item> <item type="color" name="textcolor">#FFFFFF</item> <item type="color" name="bgcolor">#000000</item> </resources> 或 <?xml version="1.0" encoding="UTF-8"?> <resources> <color name="contents_text">#ff000000</color> <color name="encode_view">#ffffffff</color> <color name="possible_result_points">#c0ffff00</color> <color name="result_points">#c000ff00</color> <color name="result_text">#ffffffff</color> <color name="result_view">#b0000000</color> <color name="share_text">#ff000000</color> <color name="status_view">#50000000</color> <color name="status_text">#ffffffff</color> <color name="transparent">#00000000</color> <color name="viewfinder_frame">#ff000000</color> <color name="viewfinder_laser">#ffff0000</color> <color name="viewfinder_mask">#60000000</color> <color name="red">#ffff0000</color> <color name="blue">#ff3590c4</color> <color name="green">#7700ff00</color> <color name="yellow">#ffff7000</color> <color name="screen_background_white">#00ffffff</color> <color name="translucent_background">#00000000</color> <color name="white_background">#00ffffff</color> <color name="gray_background">#fff7f7f7</color> <color name="solid_red">#ffff0000</color> <color name="solid_while">#ff888888</color> <color name="solid_saffron">#ffff6414</color> <color name="solid_blue">#ff0000ff</color> <color name="solid_green">#ff00ff00</color> <color name="solid_yellow">#ffffff00</color> <color name="saffron">#ffffa649</color> <color name="titlebackgroundcolor">#fffe8625</color> <color name="listitem_divide">#ffd4d3d3</color> <color name="gray">#ff666664</color> <color name="deep_gray">#ff555555</color> <color name="light_gray">#ff757575</color> <color name="btn_focused_color_yellow">#fffdfdfd</color> <color name="btn_pressed_color_light">#fffdfdfd</color> <color name="btn_default_color_light">#ffff5f11</color> <color name="rounded_container_border">#ffb7babb</color> <color name="base_start_color_default">#ffffffff</color> <color name="base_end_color_default">#ffffffff</color> <color name="base_start_color_pressed">#ffff7a13</color> <color name="base_center_color_pressed">#ffff8c2f</color> <color name="base_end_color_pressed">#ffffa254</color> <color name="text_color_default">#ff000000</color> <color name="text_color_pressed">#ffffffff</color> </resources> 调用color标签:android:background="@color/red"@color/是调用res/下的匹配的color标签 也可以将color标签嵌入到selector的item标签中使用 <?xml version="1.0" encoding="utf-8"?><selector xmlns:android="http://schemas.android.com/apk/res/android"><item android:state_pressed="true"android:color="@color/red"/><item android:color="@color/green" /></selector> 代码设置color方法: testview.setTextColor(Color.parseColor("FFFFFF")); testview.setTextColor(Color.GRAY); tv.setTextColor(Color.rgb(255,255,255)); testview.setTextColor(getContext().getResources().getColor(R.color.my_color)); array.xml <resources> <declare-styleable name="DragSort"> <attr name="collapsed_height" format="dimension" /> <attr name="drag_scroll_start" format="float" /> <attr name="max_drag_scroll_speed" format="float" /> <attr name="float_background_color" format="color" /> <attr name="remove_mode"> <enum name="clickRemove" value="0" /> <enum name="flingRemove" value="1" /> </attr> <attr name="track_drag_sort" format="boolean" /> <attr name="float_alpha" format="float" /> <attr name="slide_shuffle_speed" format="float" /> <attr name="remove_animation_duration" format="integer" /> <attr name="drop_animation_duration" format="integer" /> <attr name="drag_enabled" format="boolean" /> <attr name="sort_enabled" format="boolean" /> <attr name="remove_enabled" format="boolean" /> <attr name="drag_start_mode"> <enum name="onDown" value="0" /> <enum name="onMove" value="1" /> <enum name="onLongPress" value="2" /> </attr> <attr name="drag_handle_id" format="integer" /> <attr name="fling_handle_id" format="integer" /> <attr name="click_remove_id" format="integer" /> <attr name="use_default_controller" format="boolean" /> </declare-styleable> </resources> 代码使用: TypedArray array = getContext().obtainStyledAttributes(attrs, R.styleable.DragSort, 0, 0); mItemHeight = Math.max(1, array.getDimensionPixelSize(R.styleable.DragSortListView_collapsed_height, 1)); mTrackDragSort = array.getBoolean( R.styleable.DragSortListView_track_drag_sort, false); xml使用: <ListPreference android:title="@string/page_animation" android:defaultValue="@string/default_page_animation" android:entries="@array/page_animation_labels" android:entryValues="@array/page_animations" android:key="pageAnimation" /> strings.xml:主要设置文本 <resources> <string name="button_confirm">确定</string> <string name="button_cancel">取消</string> <string-array name="page_animations"> <item>100</item> <item>0</item> <item>1</item> <item>2</item> <item>3</item> </string-array> </resources> 代码使用: testview.setText(getString(R.string.button_confirm)); xml使用: android:text="@string/button_confirm" 风格style与主题theme区别: 1:style主要用于View,theme主要用于Activity以及Application 2、style主要用于设置View的属性,theme主要用设置Activity的样式如是:否全屏 3、style与theme都是以<style><item>文本</item></style>创建,只是item的内容不一样 style定义: style.xml文件 <resources xmlns:android="http://schemas.android.com/apk/res/android"> <style name="TitleStyle"> <item name="android:textSize">18sp</item> <item name="android:textColor">#ec9237</item> </style> <style name="Title" parent="@style/TitleStyle">(继承TitleStyle属性) <item name="android:textSize">5sp</item> </style> </resources> 代码使用: xml使用: <EditText android:layout_height="wrap_content" android:text="EditText" style="@style/Title" android:layout_width="fill_parent" android:id="@+id/editText1" /> ----------------------------------------------- theme: style.xml 1.<?xml version="1.0" encoding="utf-8"?> <resources> <style name="theme1"> <item name="android:windowNoTitle">true</item> <item name="android:windowFullscreen">?android:windowNoTitle</item> </style> <style name="theme2.a"> <item name="android:windowNoTitle">true</item> <item name="android:windowFullscreen">?android:windowNoTitle</item> </style> </resources> 代码使用: 注意:setTheme应该在setContentView之前调用。 setTeme(R.theme.theme1);/setTeme(R.style.theme1) setContentView(R.layout.main); xml使用主题: <application android:icon="@drawable/icon" android:label="@string/app_name" android:theme="@style/theme1"> <activity android:name=".MessageShowActivity" android:label="@string/app_name" android:windowSoftInputMode="adjustPan" android:screenOrientation="portrait" android:theme="@style/theme2"> </activity> </application> --------------------------------- android的selector是在drawable/xxx.xml中创建的: selector:主要用设置view点击选中显示效果 <selector xmlns:android="http://schemas.android.com/apk/res/android"><item android:color="hex_color" android:state_pressed=["true" | "false"] android:state_focused=["true" | "false"] android:state_selected=["true" | "false"] android:state_checkable=["true" | "false"] android:state_checked=["true" | "false"] android:state_enabled=["true" | "false"] android:state_window_focused=["true" | "false"] /></selector>android:drawable 放一个drawable资源 android:state_pressed 是否按下,如一个按钮触摸或者点击。 android:state_focused 是否取得焦点,比如用户选择了一个文本框。 android:state_hovered 光标是否悬停,通常与focused state相同,它是4.0的新特性 android:state_selected 被选中,它与focus state并不完全一样,如一个list view 被选中的时候,它里面的各个子组件可能通过方向键,被选中了。 android:state_checkable 组件是否能被check。如:RadioButton是可以被check的。 android:state_checked 被checked了,如:一个RadioButton可以被check了。 android:state_enabled 能够接受触摸或者点击事件 android:state_activated 被激活(这个麻烦举个例子,不是特明白) android:state_window_focused 应用程序是否在前台,当有通知栏被拉下来或者一个对话框弹出的时候应用程序就不在前台了-------<selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_window_focused="false" android:drawable="@drawable/pic1" /><!-- 没有焦点时的背景图片--> <item android:state_focused="true" android:state_pressed="true" android:drawable="@drawable/pic2" /><!-- 非触摸模式下获得焦点并单击时的背景图片--> <item android:state_focused="false" android:state_pressed="true" android:drawable="@drawable/pic3" /><!-- 触摸模式下单击时的背景图片--> <item android:state_selected="true" android:drawable="@drawable/pic4" /><!--选中时的图片背景--> <item android:state_focused="true" android:drawable="@drawable/pic5" /><!--获得焦点时的图片背景--> </selector> 在xml中使用示例: res/color/button_text.xml <?xml version="1.0" encoding="utf-8"?><selectorxmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_pressed="true" android:color="#ffff0000"/><!-- pressed --> <item android:state_focused="true" android:color="#ff0000ff"/><!-- focused --> <itemandroid:color="#ff000000"/><!-- default --></selector> <Button android:layout_width="fill_parent" android:layout_height="wrap_content"android:text="@string/button_text"android:textColor="@color/button_text"/> 参考:http://www.cnblogs.com/navy-wang/p/3314034.html 本文转自欢醉博客园博客,原文链接http://www.cnblogs.com/zhangs1986/p/3624482.html如需转载请自行联系原作者 欢醉

优秀的个人博客,低调大师

Android RingtoneManager铃声管理

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 package com.Aina.Android; import java.io.File; import android.app.Activity; import android.content.Intent; import android.media.RingtoneManager; import android.net.Uri; import android.os.Bundle; import android.os.Environment; import android.view.View; import android.widget.Button; public class Test extends Activity { /** Called when the activity is first created. */ private Button btn1 = null ; private Button btn2 = null ; private Button btn3 = null ; private static final int Ringtone = 0 ; private static final int Alarm = 1 ; private static final int Notification = 2 ; private static final String FileRingtone = Environment .getExternalStorageDirectory() + "/music/ringtones" ; private static final String FileAlarm = Environment .getExternalStorageDirectory() + "/music/alarms" ; private static final String FileNotification = Environment .getExternalStorageDirectory() + "/music/notifications" ; @Override public void onCreate(Bundle savedInstanceState) { super .onCreate(savedInstanceState); setContentView(R.layout.main); btn1 = (Button) this .findViewById(R.id.Button01); btn2 = (Button) this .findViewById(R.id.Button02); btn3 = (Button) this .findViewById(R.id.Button03); btn1.setOnClickListener( new Button.OnClickListener() { public void onClick(View arg0) { // TODO Auto-generated method stub if (isFile(FileRingtone)) { // 打开系统铃声设置 Intent intent = new Intent( RingtoneManager.ACTION_RINGTONE_PICKER); // 设置类型为来电 intent.putExtra(RingtoneManager.EXTRA_RINGTONE_TYPE, RingtoneManager.TYPE_RINGTONE); // 设置显示的标题 intent.putExtra(RingtoneManager.EXTRA_RINGTONE_TITLE, "设置来电铃声" ); startActivityForResult(intent, Ringtone); } } }); btn2.setOnClickListener( new Button.OnClickListener() { public void onClick(View v) { // TODO Auto-generated method stub if (isFile(FileAlarm)) { Intent intent = new Intent( RingtoneManager.ACTION_RINGTONE_PICKER); intent.putExtra(RingtoneManager.EXTRA_RINGTONE_TYPE, RingtoneManager.TYPE_ALARM); intent.putExtra(RingtoneManager.EXTRA_RINGTONE_TITLE, "设置闹钟铃声" ); startActivityForResult(intent, Alarm); } } }); btn3.setOnClickListener( new Button.OnClickListener() { public void onClick(View v) { // TODO Auto-generated method stub if (isFile(FileNotification)) { Intent intent = new Intent( RingtoneManager.ACTION_RINGTONE_PICKER); intent.putExtra(RingtoneManager.EXTRA_RINGTONE_TYPE, RingtoneManager.TYPE_NOTIFICATION); intent.putExtra(RingtoneManager.EXTRA_RINGTONE_TITLE, "设置通知铃声" ); startActivityForResult(intent, Notification); } } }); } /** * 设置铃声之后的回调函数 */ @Override protected void onActivityResult( int requestCode, int resultCode, Intent data) { super .onActivityResult(requestCode, resultCode, data); if (resultCode != RESULT_OK) { return ; } else { // 得到我们选择的铃声 Uri uri = data .getParcelableExtra(RingtoneManager.EXTRA_RINGTONE_PICKED_URI); if (uri != null ) { switch (requestCode) { case Ringtone: RingtoneManager.setActualDefaultRingtoneUri( this , RingtoneManager.TYPE_RINGTONE, uri); break ; case Alarm: RingtoneManager.setActualDefaultRingtoneUri( this , RingtoneManager.TYPE_ALARM, uri); break ; case Notification: RingtoneManager.setActualDefaultRingtoneUri( this , RingtoneManager.TYPE_NOTIFICATION, uri); break ; default : break ; } } } } /** * 判断文件是否存在,不存在则创建. * * @param path * @return */ private boolean isFile(String path) { boolean b = false ; File f = new File(path); if (f.exists()) { b = true ; } else { if (f.mkdirs()) { b = true ; } else { b = false ; } } return b; } } 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 <? xml version="1.0" encoding="utf-8"?> < LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent"> < TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/hello" /> < Button android:text="设置来电铃声" android:id="@+id/Button01" android:layout_width="fill_parent" android:layout_height="wrap_content"> </ Button > < Button android:text="设置闹钟铃声" android:id="@+id/Button02" android:layout_width="fill_parent" android:layout_height="wrap_content"> </ Button > < Button android:text="设置通知铃声" android:id="@+id/Button03" android:layout_width="fill_parent" android:layout_height="wrap_content"> </ Button > </ LinearLayout > 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 <? xml version="1.0" encoding="utf-8"?> < manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.Aina.Android" android:versionCode="1" android:versionName="1.0"> < application android:icon="@drawable/icon" android:label="@string/app_name"> < activity android:name=".Test" android:label="@string/app_name"> < intent-filter > < action android:name="android.intent.action.MAIN" /> < category android:name="android.intent.category.LAUNCHER" /> </ intent-filter > </ activity > </ application > < uses-permission android:name="android.permission.INTERNET" /> < uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" /> </ manifest > 本文转自java豆子博客园博客,原文链接:http://www.cnblogs.com/error404/archive/2011/08/04/2127233.html,如需转载请自行联系原作者

优秀的个人博客,低调大师

Docker数据管理

Docker的数据卷是可以绕过文件系统的,而且数据卷是可以共享,可重用的 查看数据卷: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 [root@docker~] #dockerinspect-f``.`Volumes`volume-test1 map[ /data : /var/lib/docker/volumes/9f36c1a9b7728974566268a2beebb0b917226952280c96107388469659bfcfe5/_data ] [root@docker~] #cd/var/lib/docker/ [root@dockerdocker] #ls containersdevicemappergraphinitlinkgraph.dbrepositories-devicemappertmptrustvolumes [root@dockerdocker] #cdvolumes/ [root@dockervolumes] #ls-lrt total8 drwxr-xr-x3rootroot4096Feb2409:2963ccf5d524567c835c6d542cfc74d1a28d28fdf48a0bca0c517cb8dedf46b632 drwxr-xr-x3rootroot4096Feb2409:309f36c1a9b7728974566268a2beebb0b917226952280c96107388469659bfcfe5 [root@dockervolumes] #cd9f36c1a9b7728974566268a2beebb0b917226952280c96107388469659bfcfe5/ [root@docker9f36c1a9b7728974566268a2beebb0b917226952280c96107388469659bfcfe5] # [root@docker~] #dockerrun-it--namevolume-test1-hnginx-v/datacentos [root@nginx/] #ls/data 测试: 1、系统随机生成的目录,进行挂载 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 容器的宿主机: [root@docker9f36c1a9b7728974566268a2beebb0b917226952280c96107388469659bfcfe5] #ls _data [root@docker9f36c1a9b7728974566268a2beebb0b917226952280c96107388469659bfcfe5] #cd_data/ [root@docker_data] #ls passwd [root@docker_data] #ddif=/dev/zeroof=test.isobs=1Mcount=10 10+0records in 10+0recordsout 10485760bytes(10MB)copied,0.00956288s,1.1GB /s [root@docker_data] #ls passwd test .iso 容器内: [root@nginx/] #cd/data/ [root@nginxdata] #ls [root@nginxdata] #cp/etc/passwd. [root@nginxdata] #ls passwd [root@nginxdata] #ls passwd test .iso 说明:容器的宿主机的目录已共享给容器使用(删除容器后,原有的数据卷目录中的文件仍旧是存在的) 2、系统指定的目录,进行挂载 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 宿主机的操作: [root@docker~] #mkdir-p/volume-test2-data [root@docker~] #dockerrun-it-d--namevolume-test2-hcentos7--restart=always-v/volume-test2-data:/centos-datacentos 29e9a41e563d514c8b9f14d14a0426af955651b28109c4851cfec40a186244d0 [root@docker~] #dockerps-l CONTAINERIDIMAGECOMMANDCREATEDSTATUSPORTSNAMES 29e9a41e563dcentos "/bin/bash" 7secondsagoUp5secondsvolume-test2 [root@docker~] #cp-r/usr/share/doc/abrt-2.0.8//volume-test2-data/ [root@docker~] #ls-l/volume-test2-data/ total4 drwxr-xr-x2rootroot4096Feb2409:58abrt-2.0.8 容器内的操作: [root@docker~] #./in.sh29e9a41e563d [root@centos7/] #df-h FilesystemSizeUsedAvailUse%Mountedon /dev/mapper/docker-8 :3-8388750-29e9a41e563d514c8b9f14d14a0426af955651b28109c4851cfec40a186244d09.8G230M9.0G3%/ tmpfs1.9G01.9G0% /dev shm64M064M0% /dev/shm /dev/sda3 193G11G173G6% /etc/hosts [root@centos7/] #cd/centos-data/ [root@centos7centos-data] #ls abrt-2.0.8 [root@centos7centos-data] #cp/etc/passwd. [root@centos7centos-data] #ls abrt-2.0.8 passwd [root@docker_data] #ls/volume-test2-data/ abrt-2.0.8 passwd 3、系统指定的目录,进行挂载(可挂载多个,并设置权限,默认为rw权限) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 宿主机的操作: 先删除原有的容器 [root@docker~] #dockerps CONTAINERIDIMAGECOMMANDCREATEDSTATUSPORTSNAMES 29e9a41e563dcentos "/bin/bash" 11minutesagoUp11minutesvolume-test2 8884fc392971nginx"nginx-g'daemonof13hoursagoUp51minutes80 /tcp ,443 /tcp nginxdocker 14caa9ab03a9dockerui /dockerui "/dockerui" 46hoursagoUp51minutes0.0.0.0:9000->9000 /tcp dockerui_qinwen e278cabec91ecentos "/bin/bash" 47hoursagoUp51minutescentos_aways 删除正在允许的容器时,会有报错信息: [root@docker~] #dockerrm29e9a41e563d-f Errorresponsefromdaemon:Cannotdestroycontainer29e9a41e563d:Conflict,Youcannotremovearunningcontainer.Stopthecontainerbeforeattemptingremovaloruse-f Errorresponsefromdaemon:nosuch id :-f Error:failedtoremovecontainers:[29e9a41e563d-f] [root@docker~] #dockerps CONTAINERIDIMAGECOMMANDCREATEDSTATUSPORTSNAMES 29e9a41e563dcentos "/bin/bash" 11minutesagoUp11minutesvolume-test2 8884fc392971nginx"nginx-g'daemonof13hoursagoUp52minutes80 /tcp ,443 /tcp nginxdocker 14caa9ab03a9dockerui /dockerui "/dockerui" 46hoursagoUp52minutes0.0.0.0:9000->9000 /tcp dockerui_qinwen e278cabec91ecentos "/bin/bash" 47hoursagoUp52minutescentos_aways 先停止容器,然后再进行删除: [root@docker~] #dockerstop29e9a41e563d 29e9a41e563d [root@docker~] #dockerrm29e9a41e563d 29e9a41e563d [root@docker~] #dockerps CONTAINERIDIMAGECOMMANDCREATEDSTATUSPORTSNAMES 8884fc392971nginx"nginx-g'daemonof13hoursagoUp52minutes80 /tcp ,443 /tcp nginxdocker 14caa9ab03a9dockerui /dockerui "/dockerui" 46hoursagoUp52minutes0.0.0.0:9000->9000 /tcp dockerui_qinwen e278cabec91ecentos "/bin/bash" 47hoursagoUp52minutescentos_aways 运行一个基于centos镜像的容器,容器名称为volume-test2,并设置容器中的主机名为centos7(仅对容器有效),挂载本地的 /volume-test2-data 以及 /opt 目录,并且指定 /opt 目录对容器是只读的 [root@docker~] #dockerrun-it-d--namevolume-test2-hcentos7--restart=always-v/volume-test2-data:/centos-data-v/opt:/opt:rocentos 37652d4601948fe8421c0371278e9bee8c5cbb35f16c7bf755764d56ddafa304 [root@docker~] #dockerps-l CONTAINERIDIMAGECOMMANDCREATEDSTATUSPORTSNAMES 37652d460194centos "/bin/bash" 16secondsagoUp15secondsvolume-test2 [root@docker~] #./in.sh37652d460194 容器内的操作: [root@centos7/] #cd/opt/ [root@centos7opt] #ls rh [root@centos7opt] #ls opt.isorh [root@centos7opt] #touch123.txt touch :cannot touch ‘123.txt’:Read-only file system --volume-from: 继承容器数据卷的操作: [root@docker~] #dockerrun-it-d--restart=always--namevolume-test04--volumes-fromvolume-test2centos 94ea720a2c418286d26068d126df35523742e2f910685863f876c3ba9c09638c [root@docker~] #dockerps-l CONTAINERIDIMAGECOMMANDCREATEDSTATUSPORTSNAMES 94ea720a2c41centos "/bin/bash" 6secondsagoUp4secondsvolume-test04 [root@docker~] #./in.sh94ea720a2c41 [root@94ea720a2c41/] #ls/ anaconda-post.logcentos-dataetcliblost+foundmntprocrunsrvtmpvar bindevhomelib64mediaoptrootsbinsysusr [root@94ea720a2c41/] #cd/opt/ [root@94ea720a2c41opt] #ls opt.isorh [root@94ea720a2c41opt] #cd/centos-data/ [root@94ea720a2c41centos-data] #ls abrt-2.0.8 passwd [root@94ea720a2c41centos-data] #touch12345.txt [root@94ea720a2c41centos-data] #cd/opt [root@94ea720a2c41opt] #ls opt.isorh [root@94ea720a2c41opt] #touch111 touch :cannot touch ‘111’:Read-only file system 拥有volume-test2的容器的操作: [root@docker~] #dockerps CONTAINERIDIMAGECOMMANDCREATEDSTATUSPORTSNAMES 94ea720a2c41centos "/bin/bash" 45secondsagoUp43secondsvolume-test04 37652d460194centos "/bin/bash" AboutanhouragoUpAboutanhourvolume-test2 8884fc392971nginx"nginx-g'daemonof14hoursagoUpAboutanhour80 /tcp ,443 /tcp nginxdocker 14caa9ab03a9dockerui /dockerui "/dockerui" 47hoursagoUpAboutanhour0.0.0.0:9000->9000 /tcp dockerui_qinwen e278cabec91ecentos "/bin/bash" 2daysagoUpAboutanhourcentos_aways [root@docker~] #./in.sh37652d460194 [root@centos7/] #ls anaconda-post.logcentos-dataetcliblost+foundmntprocrunsrvtmpvar bindevhomelib64mediaoptrootsbinsysusr [root@centos7/] #cd/centos-data/ [root@centos7centos-data] #ls abrt-2.0.8 passwd [root@centos7centos-data] #ls 12345.txtabrt-2.0.8 passwd 进一步进行测试: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 [root@docker~] #dockerrun-it-d--restart=always--namevolume-test04--volumes-fromvolume-test2centos 94ea720a2c418286d26068d126df35523742e2f910685863f876c3ba9c09638c 宿主机上的操作: [root@docker~] #dockerps CONTAINERIDIMAGECOMMANDCREATEDSTATUSPORTSNAMES 94ea720a2c41centos "/bin/bash" 14minutesagoUp14minutesvolume-test04 37652d460194centos "/bin/bash" AboutanhouragoUpAboutanhourvolume-test2 8884fc392971nginx"nginx-g'daemonof14hoursagoUp2hours80 /tcp ,443 /tcp nginxdocker 14caa9ab03a9dockerui /dockerui "/dockerui" 47hoursagoUp2hours0.0.0.0:9000->9000 /tcp dockerui_qinwen e278cabec91ecentos "/bin/bash" 2daysagoUp2hours [root@docker~] #dockerstop37652d460194 37652d460194 [root@docker~] #dockerps CONTAINERIDIMAGECOMMANDCREATEDSTATUSPORTSNAMES 94ea720a2c41centos "/bin/bash" 14minutesagoUp14minutesvolume-test04 8884fc392971nginx"nginx-g'daemonof14hoursagoUp2hours80 /tcp ,443 /tcp nginxdocker 14caa9ab03a9dockerui /dockerui "/dockerui" 47hoursagoUp2hours0.0.0.0:9000->9000 /tcp dockerui_qinwen e278cabec91ecentos "/bin/bash" 2daysagoUp2hourscentos_aways [root@docker_data] #cd/volume-test2-data [root@dockervolume-test2-data] #ls 12345.txtabrt-2.0.8 passwd [root@dockervolume-test2-data] #ls-lrt total8 drwxr-xr-x2rootroot4096Feb2409:58abrt-2.0.8 -rw-r--r--1rootroot692Feb2410:01 passwd -rw-r--r--1rootroot0Feb2411:1612345.txt 容器内的操作: [root@94ea720a2c41opt] #cd/centos-data/ [root@94ea720a2c41centos-data] #ls-lrt total8 drwxr-xr-x2rootroot4096Feb2401:58abrt-2.0.8 -rw-r--r--1rootroot692Feb2402:01 passwd -rw-r--r--1rootroot0Feb2403:1612345.txt [root@94ea720a2c41centos-data] # 说明: 1、验证后可以发现,ro权限是正常的 2、这种映射在Dockerfile里面是没法使用的 3、这里我们不管volume-test2 所属的容器是否正在允许,在新主机中均能够继承 本文转自 冰冻vs西瓜 51CTO博客,原文链接:http://blog.51cto.com/molewan/1744570,如需转载请自行联系原作者

优秀的个人博客,低调大师

docker镜像、容器管理

Docker优势 1)更高效的利用系统资源 无论是应用执行速度、内存损耗或者文件存储速度,都要比传 统虚拟机技术更高效。 2)更快速的启动时间 Docker容器应用,由于直接 运行于宿主内核,无需启动完整的操作系统,因此可以做到秒级、甚至毫秒级的启 动时间。 3)一致的运行环境 Docker的镜像提供了除内核外完整的运行时环境,确保了应用运行环境一致性 4)持续交付和部署 使用Docker可以通过定制应用镜像来实现持续集成、持续交付、部署。 二:为什么要使用Docker 不仅仅开发团队可以理解应用运行环 境,也方便运维团队理解应用运行所需条件,帮助更好的生产环境中部署该镜像 5)更轻松的迁移 Docker可以在很多平台上运行,无论是物理机、虚拟机、公有云、私有云,甚至是笔记本,其运行结果是一致的,不用担心运行环境的变化导致应用无法正常运行的情况。 6)更轻松的维护和扩展 Docker使用的分层存储以及镜像的技术,使得应用重复部分的复用更为容易,也 使得应用的维护更新更加简单。 7)对比传统虚拟机 特性 容器 虚拟机 硬盘使用 一般为MB 一般为GB 系统支持量 单机支持上千个容器 一般为几十个 首先使用yum安装docker 查看docker版本信息 或者使用docker info俩种办法 显示本机images PEPOSITORY——来自哪个仓库TAG——标记IMAGE ID——镜像ID号CREATED——创建时间SIZE——镜像大小 查找images镜像 获取下载images镜像 查看文件镜像 或者俩种办法 使用docker commit来扩展一个image 在容器种添加mariadb 需要yum 查看结果 1)从dockerfile来创建image #this is a comment FROM docker.io/jdeathe/centos-ssh:latest MAINTAINER tom <tom@example.com> RUN yum -q -y install apr apr-util RUN yum -q -y install httpd 然后生成镜像 修改镜像标签 从本地镜像导入 上传镜像登录用户名密码 二移除本地镜像 存出镜像 载入 从本地镜像导入镜像库 三容器 Docker包括三个概念 镜像(lmage) 容器(Container) 仓库(Repository) 1)Docker镜像 对于Linux而言,内核启动后,会挂载root文件系统为其提供用户空间支持。而Docker镜像(Image),就相当于是一个root文件系统。 2)Docker镜像是一个特殊的文件系统,除了提供容器运行时所需的程序、库、资 源、配置等文件外,还包含了一些为运行时准备的一些配置参数(如匿名卷、环境 变量、用户等)。 3)镜像不包含任何动态数据,其内容在构建之后也不会被改变。 4)镜像构建时,会一层层构建,前一层是后一层的基础。每一层构建完就不会再发生 改变,后一层上的任何改变只发生在自己这一层 如,删除前一层文件的操作,实际不是真的删除前一层的文件,而是仅在当前层标记为该文件已删除。在最终容器运行的时候,虽然不会看到这个文件,但是实际上该文件会一直跟随镜像。 1镜像容器 命令使用 命令输出 查看容器帮助docker ps -h 容器启动 容器停止 容器进程守护 查看容器信息ID容器名等 进入容器 删除处于UP的容器 批量删除多个容器 本文转自柴鑫旺 51CTO博客,原文链接:http://blog.51cto.com/chaixinwang/1956900,如需转载请自行联系原作者

资源下载

更多资源
腾讯云软件源

腾讯云软件源

为解决软件依赖安装时官方源访问速度慢的问题,腾讯云为一些软件搭建了缓存服务。您可以通过使用腾讯云软件源站来提升依赖包的安装速度。为了方便用户自由搭建服务架构,目前腾讯云软件源站支持公网访问和内网访问。

Nacos

Nacos

Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service 的首字母简称,一个易于构建 AI Agent 应用的动态服务发现、配置管理和AI智能体管理平台。Nacos 致力于帮助您发现、配置和管理微服务及AI智能体应用。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据、流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。

Spring

Spring

Spring框架(Spring Framework)是由Rod Johnson于2002年提出的开源Java企业级应用框架,旨在通过使用JavaBean替代传统EJB实现方式降低企业级编程开发的复杂性。该框架基于简单性、可测试性和松耦合性设计理念,提供核心容器、应用上下文、数据访问集成等模块,支持整合Hibernate、Struts等第三方框架,其适用范围不仅限于服务器端开发,绝大多数Java应用均可从中受益。

Rocky Linux

Rocky Linux

Rocky Linux(中文名:洛基)是由Gregory Kurtzer于2020年12月发起的企业级Linux发行版,作为CentOS稳定版停止维护后与RHEL(Red Hat Enterprise Linux)完全兼容的开源替代方案,由社区拥有并管理,支持x86_64、aarch64等架构。其通过重新编译RHEL源代码提供长期稳定性,采用模块化包装和SELinux安全架构,默认包含GNOME桌面环境及XFS文件系统,支持十年生命周期更新。

用户登录
用户注册