Docker学习第二天-容器
Docker 容器
容器是 Docker 又一核心概念。
简单的说,容器是独立运行的一个或一组应用,以及它们的运行态环境。对应的,虚拟机可以理解为模拟运行的一整套操作系统(提供了运行态环境和其他系统环境)和跑在上面的应用。
本片文章将具体介绍围绕容器的重要操作,包括创建一个容器、启动容器、终止一个容器、进入容器内执行操作、删除容器和通过导入导出容器来实现容器的迁移。
启动容器
启动容器有两种方式,一种是基于镜像新建一个容器并启动,另外一个是将在终止状态(stopped)的容器重新启动。
因为 Docker 的容器实在太轻量级了,很多时候用户都是随时删除和新创建容器。
新建并启动
所需要的命令主要为 docker run
。
例如,下面的命令输出一个 “Hello World”,之后终止容器。
[root@MSJTVL-MJSP-A35 docker]# docker run unbutn:02.09 /bin/echo 'Hello World'
Hello World
[root@MSJTVL-MJSP-A35 docker]#
这跟本地直接执行/bin/echo 'Hello World'几乎感觉没有任何区别。
下面的命令则启动一个bash终端,允许用户进行交互。
[root@MSJTVL-MJSP-A35 docker]# docker run -t -i unbutn:02.09 /bin/bash
root@797bce48e2ac:/#
其中,-t选项让Docker分配一个伪终端(pseudo-tty)并绑定到容器的标准输入上,-i则让容器的标准输入保持打开。
在交互模式下,用户可以通过所创建的终端输入命令,例如
root@797bce48e2ac:/# pwd
/
root@797bce48e2ac:/# ls
bin boot dev etc home lib lib64 media mnt opt proc root run sbin selinux srv sys tmp usr var
root@797bce48e2ac:/# cd /etc/
当利用 docker run
来创建容器时,Docker 在后台运行的标准操作包括:
- 检查本地是否存在指定的镜像,不存在就从公有仓库下载
- 利用镜像创建并启动一个容器
- 分配一个文件系统,并在只读的镜像层外面挂载一层可读写层
- 从宿主主机配置的网桥接口中桥接一个虚拟接口到容器中去
- 从地址池配置一个 ip 地址给容器
- 执行用户指定的应用程序
- 执行完毕后容器被终止
启动已终止容器
可以利用 docker start
命令,直接将一个已经终止的容器启动运行。
容器的核心为所执行的应用程
root@797bce48e2ac:~# ps
PID TTY TIME CMD
? :: bash
? :: ps
root@797bce48e2ac:~#
可见,容器中仅运行了指定的bash应用。这种特点使得Docker对资源的利用率极高,是货真价实的轻量级虚拟化。
守护态运行
更多的时候,需要让Docker容器在后台以守护(Daemonized)形式运行。此时,可以通过添加 -d参数来实现。
例如下面的命令会在后台运行容器。
[root@MSJTVL-MJSP-A35 docker]# docker run -d ubuntu:12.04 /bin/sh -c "while true;do echo hello world;sleep 1;done"
dd94131ba7cce93cffd1987095082160da1be8b13205ebb418782b89c88ec21a
容器启动之后会返回一个唯一的ID,也可以通过docker ps 命令来查看容器的信息。
[root@MSJTVL-MJSP-A35 docker]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
dd94131ba7cc ubuntu:12.04 "/bin/sh -c 'while t 23 seconds ago Up 21 seconds happy_morse
要获取容器的输出信息,可以通过docker logs命令。
[root@MSJTVL-MJSP-A35 docker]# docker logs happy_morse
hello world
hello world
hello world
hello world
hello world
hello world
hello world
hello world
hello world
hello world
······
终止容器
可以使用docker stop 来终止一个运行中的容器。
[root@MSJTVL-MJSP-A35 ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
dd94131ba7cc ubuntu:12.04 "/bin/sh -c 'while t About an hour ago Up 2 seconds happy_morse
[root@MSJTVL-MJSP-A35 ~]# docker stop happy_morse
happy_morse
[root@MSJTVL-MJSP-A35 ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
[root@MSJTVL-MJSP-A35 ~]#
此外,当docker容器中指定的应用终结时,容器也自动终止。例如对于上面启动了一个终端的容器,用户通过exit命令或是ctrl + d 来退出终端时,所创建的容器会立刻终止。
终止状态的容器也用docker ps -a 命令看到。例如
[root@MSJTVL-MJSP-A35 docker]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
dd94131ba7cc ubuntu:12.04 "/bin/sh -c 'while t 10 minutes ago Up 10 minutes happy_morse
0f627067205b centos:14.04 "/bin/bash" minutes ago Exited () minutes ago serene_poitras
797bce48e2ac unbutn:02.09 "/bin/bash" minutes ago Exited () minutes ago stupefied_mclean
6ef0c8e046d9 unbutn:02.09 "/bin/echo 'Hello Wo 43 minutes ago Exited (0) 43 minutes ago boring_elion
64641a698106 unbutn:02.09 "/bin/echo 'Hello Wo 43 minutes ago Exited (0) 43 minutes ago berserk_feynman
5b098fe766ca ubuntu:12.04 "/bin/bash" hours ago Exited () hours ago cranky_einstein
c8c413078420 ubuntu:12.04 "/bin/bash" hours ago Exited () hours ago compassionate_colden
d67d32057f1c ubuntu:12.04 "/bin/bash" hours ago Exited () hours ago high_lovelace
[root@MSJTVL-MJSP-A35 docker]#
处于终止状态的容器,可以通过 docker start
命令来重新启动。
此外,docker restart
命令会将一个运行态的容器终止,然后再重新启动它。
进入容器
在使用-d 参数时,容器启动后会进入后台。某些时候需要进入容器进行操作,有很多种方式,包括使用docker attach命令或nsenter 工具等。
attach命令
docker attach 是Docker自带的命令。下面示例如何使用该命令。
[root@MSJTVL-MJSP-A35 docker]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
dd94131ba7cc ubuntu:12.04 "/bin/sh -c 'while t About an hour ago Up About an hour happy_morse
[root@MSJTVL-MJSP-A35 docker]# docker attach happy_morse
hello world
hello world
hello world
hello world
hello world
···
但是使用attach命令有时候并不方便。当多个窗口同时attach到同一个容器的时候,所有窗口都会同步显示。当某个窗口因为命令阻塞时,其他窗口也无法执行操作了。
exec命令
Docker自1.3版本起,提供了一个更加方便的工具exec,可以直接在容器内运行命令。例如进入到刚创建的容器中,并启动一个bash:
[root@MSJTVL-MJSP-A35 ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
dd94131ba7cc ubuntu:12.04 "/bin/sh -c 'while t About an hour ago Exited (137) 9 minutes ago happy_morse
0f627067205b centos:14.04 "/bin/bash" About an hour ago Exited () About an hour ago serene_poitras
797bce48e2ac unbutn:02.09 "/bin/bash" hours ago Exited () About an hour ago stupefied_mclean
6ef0c8e046d9 unbutn:02.09 "/bin/echo 'Hello Wo 2 hours ago Exited (0) 2 hours ago boring_elion
64641a698106 unbutn:02.09 "/bin/echo 'Hello Wo 2 hours ago Exited (0) 2 hours ago berserk_feynman
5b098fe766ca ubuntu:12.04 "/bin/bash" hours ago Exited () hours ago cranky_einstein
c8c413078420 ubuntu:12.04 "/bin/bash" hours ago Exited () hours ago compassionate_colden
d67d32057f1c ubuntu:12.04 "/bin/bash" hours ago Exited () hours ago high_lovelace
[root@MSJTVL-MJSP-A35 ~]# docker start 0f627067205b
0f627067205b
[root@MSJTVL-MJSP-A35 ~]# docker exec -ti 0f627067205b /bin/bash
[root@0f627067205b /]#
nsenter命令
安装
nsenter 工具在util-linux包2.23版本后包含。如果系统中没有util-linux包没有该命令,可以按照如下的方式从源码安装。
[root@MSJTVL-MJSP-A35 tmp]# cd /tmp; curl https://www.kernel.org/pub/linux/utils/util-linux/v2.24/util-linux-2.24.tar.gz | tar -zxf-; cd util-linux-2.24;
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
7451k 7451k :: :: --:--:--
[root@MSJTVL-MJSP-A35 util-linux-2.24]# ./configure --without-ncurses
[root@MSJTVL-MJSP-A35 util-linux-2.24]# make nsenter && cp nsenter /usr/local/bin
使用
nsenter可以访问另一个进程的名字空间。nsenter要正常工作需要有root权限。
为了使用nsenter连接到容器,还需要找到容器进程的PID,可以通过下面的命令获取:
PID=$(docker inspect --format "{{ .State.Pid }}" <container>)
通过这个PID可以连接到这个容器:
$ nsenter --target $PID --mount --uts --ipc --net --pid
下面一个完整的例子:
[root@MSJTVL-MJSP-A35 bin]# docker run -idt ubuntu:12.04
ef321bb21bb77b6dc9cf9c1069c400552631d776b607cb8beb07e0db81f65bdf
[root@MSJTVL-MJSP-A35 bin]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
ef321bb21bb7 ubuntu:12.04 "/bin/bash" seconds ago Up seconds gloomy_ardinghelli
0f627067205b centos:14.04 "/bin/bash" hours ago Up minutes serene_poitras
[root@MSJTVL-MJSP-A35 bin]# PID=$(docker-pid ef321bb21bb7)
-bash: docker-pid: command not found
尝试这种方式好多次一直没有执行处理,具体操作如下,大家要是发现哪有问题还请多多指点,谢谢。
鉴于上面的方式不能查出容器的ID,那么咱换一直方式:
[root@MSJTVL-MJSP-A35 ~]# docker top ef321bb21bb7
UID PID PPID C STIME TTY TIME CMD
root : pts/ :: /bin/bash
查出容器的ID是26205,接下来用nsenter登录
[root@MSJTVL-MJSP-A35 ~]# nsenter --target --mount --uts --ipc --net --pid
root@ef321bb21bb7:/#
感觉好像登录成功。
退出之后查看容器还在,个人感觉跟attach相比就是退出之后容器不会关闭,大家有什么其他发现可以给我留言,我会不定期的更新。
root@ef321bb21bb7:/# logout
[root@MSJTVL-MJSP-A35 ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
ef321bb21bb7 ubuntu:12.04 "/bin/bash" minutes ago Up minutes gloomy_ardinghelli
0f627067205b centos:14.04 "/bin/bash" hours ago Up About an hour serene_poitras
导出和导入容器
导出容器
导出容器是指导出一个已经创建的容器到一个文件,不管此时这个容器是否处于运行状态,可以使用docker export 命令,该命令格式为docker export CONTAINER
查看所有的容器如下所示:
[root@MSJTVL-MJSP-A35 ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
ef321bb21bb7 ubuntu:12.04 "/bin/bash" minutes ago Up seconds gloomy_ardinghelli
dd94131ba7cc ubuntu:12.04 "/bin/sh -c 'while t 3 hours ago Exited (137) 2 hours ago happy_morse
0f627067205b centos:14.04 "/bin/bash" hours ago Exited () seconds ago serene_poitras
797bce48e2ac unbutn:02.09 "/bin/bash" hours ago Exited () hours ago stupefied_mclean
6ef0c8e046d9 unbutn:02.09 "/bin/echo 'Hello Wo 4 hours ago Exited (0) 4 hours ago boring_elion
64641a698106 unbutn:02.09 "/bin/echo 'Hello Wo 4 hours ago Exited (0) 4 hours ago berserk_feynman
5b098fe766ca ubuntu:12.04 "/bin/bash" hours ago Exited () hours ago cranky_einstein
c8c413078420 ubuntu:12.04 "/bin/bash" hours ago Exited () hours ago compassionate_colden
d67d32057f1c ubuntu:12.04 "/bin/bash" hours ago Exited () hours ago high_lovelace
[root@MSJTVL-MJSP-A35 ~]#
分别导出ef321bb21bb7和dd94131ba7cc容器到test_for_run.tar文件和test_for_stop.tar文件:
[root@MSJTVL-MJSP-A35 docker]# docker export gloomy_ardinghelli >test_for_run.tar
[root@MSJTVL-MJSP-A35 docker]# docker export happy_morse >test_for_stop.tar
[root@MSJTVL-MJSP-A35 docker]# ll
total
-rw-r--r-- root root Feb : centos--x86-minimal.tar.gz
-rw-r--r-- root root Feb : test_for_run.tar
-rw-r--r-- root root Feb : test_for_stop.tar
-rw-r--r-- root root Feb : ubuntu_12..tar
[root@MSJTVL-MJSP-A35 docker]#
可以将这些文件传输到其他机器上,在其他机器上通过导入命令实现容器的迁移。
导入容器
导出的文件又可以使用docker import 命令导入,成为镜像,例如:
[root@MSJTVL-MJSP-A35 docker]# cat test_for_run.tar |docker import - test/ubuntu:v1.
2c9f598772e33b68a2b58b05afc020b03cb289348257538bc62e9a3ae27b829b
[root@MSJTVL-MJSP-A35 docker]# docker images
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
test/ubuntu v1.0 2c9f598772e3 23 seconds ago 83.56 MB
centos 14.04 2197ed1032f7 hours ago 512.1 MB
test latest 1a67c55ea394 hours ago 103.6 MB
ubuntu latest 6aa0b6d7eb90 weeks ago 129.5 MB
ubuntu 12.04 8ea067ad7a27 weeks ago 103.6 MB
unbutn 02.09 8ea067ad7a27 weeks ago 103.6 MB
大家可能会记得,在之前的章节曾介绍过使用docker load命令来导入一个镜像文件。
实际上,既可以使用docker load命令来导入镜像存储文件到本地的镜像库,又可以使用docker import命令来导入一个容器快照到本地镜像库。这两者的区别在于容器快照文件将丢弃所有的历史记录和元数据信息(即仅保存容器当时的快照状态),而镜像存储文件将保存完整记录,体积也要大。此外,从容器快照文件导入时可以重新指定标签等元数据信息。
删除容器
可以使用docker rm命令删除处于终止状态的容器,命令格式为docker rm[OPTIONS] CONTAINER[CONTAINER...]。
支持的选项包括:
·-f,--force=false强行终止并删除一个运行中的容器。
·-l,--link=false删除容器连接,但保留容器。
·-v,--volumes=false删除容器挂载的数据卷。
例如,查看处于终止状态的容器并删除如下表示:
[root@MSJTVL-MJSP-A35 docker]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
ef321bb21bb7 ubuntu:12.04 "/bin/bash" About an hour ago Up minutes gloomy_ardinghelli
dd94131ba7cc ubuntu:12.04 "/bin/sh -c 'while t 3 hours ago Exited (137) 2 hours ago happy_morse
0f627067205b centos:14.04 "/bin/bash" hours ago Exited () minutes ago serene_poitras
797bce48e2ac unbutn:02.09 "/bin/bash" hours ago Exited () hours ago stupefied_mclean
6ef0c8e046d9 unbutn:02.09 "/bin/echo 'Hello Wo 4 hours ago Exited (0) 4 hours ago boring_elion
64641a698106 unbutn:02.09 "/bin/echo 'Hello Wo 4 hours ago Exited (0) 4 hours ago berserk_feynman
5b098fe766ca ubuntu:12.04 "/bin/bash" hours ago Exited () hours ago cranky_einstein
c8c413078420 ubuntu:12.04 "/bin/bash" hours ago Exited () hours ago compassionate_colden
d67d32057f1c ubuntu:12.04 "/bin/bash" hours ago Exited () hours ago high_lovelace [root@MSJTVL-MJSP-A35 docker]# docker rm 6ef0c8e046d9
6ef0c8e046d9
[root@MSJTVL-MJSP-A35 docker]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
ef321bb21bb7 ubuntu:12.04 "/bin/bash" About an hour ago Up minutes gloomy_ardinghelli
dd94131ba7cc ubuntu:12.04 "/bin/sh -c 'while t 3 hours ago Exited (137) 2 hours ago happy_morse
0f627067205b centos:14.04 "/bin/bash" hours ago Exited () minutes ago serene_poitras
797bce48e2ac unbutn:02.09 "/bin/bash" hours ago Exited () hours ago stupefied_mclean
64641a698106 unbutn:02.09 "/bin/echo 'Hello Wo 4 hours ago Exited (0) 4 hours ago berserk_feynman
5b098fe766ca ubuntu:12.04 "/bin/bash" hours ago Exited () hours ago cranky_einstein
c8c413078420 ubuntu:12.04 "/bin/bash" hours ago Exited () hours ago compassionate_colden
d67d32057f1c ubuntu:12.04 "/bin/bash" hours ago Exited () hours ago high_lovelace
[root@MSJTVL-MJSP-A35 docker]#
如果删除一个运行中的容器,可以添加-f参数。Docker会发送SIGKILL信号给容器,终止其中的应用
[root@MSJTVL-MJSP-A35 docker]# docker run -d ubuntu:12.04 /bin/sh -c "while true;do echo hello world;sleep 1;done"
d677c7bb29203e770c23a745b7a5ac4dbb3891c467908fd1ab999e4b54e8a25e
[root@MSJTVL-MJSP-A35 docker]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
d677c7bb2920 ubuntu:12.04 "/bin/sh -c 'while t 5 seconds ago Up 3 seconds backstabbing_mayer
ef321bb21bb7 ubuntu:12.04 "/bin/bash" About an hour ago Up minutes gloomy_ardinghelli
dd94131ba7cc ubuntu:12.04 "/bin/sh -c 'while t 4 hours ago Exited (137) 2 hours ago happy_morse
0f627067205b centos:14.04 "/bin/bash" hours ago Exited () minutes ago serene_poitras
797bce48e2ac unbutn:02.09 "/bin/bash" hours ago Exited () hours ago stupefied_mclean
64641a698106 unbutn:02.09 "/bin/echo 'Hello Wo 4 hours ago Exited (0) 3 minutes ago berserk_feynman
5b098fe766ca ubuntu:12.04 "/bin/bash" hours ago Exited () hours ago cranky_einstein
c8c413078420 ubuntu:12.04 "/bin/bash" hours ago Exited () hours ago compassionate_colden
d67d32057f1c ubuntu:12.04 "/bin/bash" hours ago Exited () hours ago high_lovelace
[root@MSJTVL-MJSP-A35 docker]# docker rm backstabbing_mayer
Error response from daemon: Cannot destroy container backstabbing_mayer: Conflict, You cannot remove a running container. Stop the container before attempting removal or use -f
Error: failed to remove containers: [backstabbing_mayer]
[root@MSJTVL-MJSP-A35 docker]# docker rm -f backstabbing_mayer
backstabbing_mayer
[root@MSJTVL-MJSP-A35 docker]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
ef321bb21bb7 ubuntu:12.04 "/bin/bash" About an hour ago Up minutes gloomy_ardinghelli
dd94131ba7cc ubuntu:12.04 "/bin/sh -c 'while t 4 hours ago Exited (137) 2 hours ago happy_morse
0f627067205b centos:14.04 "/bin/bash" hours ago Exited () minutes ago serene_poitras
797bce48e2ac unbutn:02.09 "/bin/bash" hours ago Exited () hours ago stupefied_mclean
64641a698106 unbutn:02.09 "/bin/echo 'Hello Wo 4 hours ago Exited (0) 4 minutes ago berserk_feynman
5b098fe766ca ubuntu:12.04 "/bin/bash" hours ago Exited () hours ago cranky_einstein
c8c413078420 ubuntu:12.04 "/bin/bash" hours ago Exited () hours ago compassionate_colden
d67d32057f1c ubuntu:12.04 "/bin/bash" hours ago Exited () hours ago high_lovelace
[root@MSJTVL-MJSP-A35 docker]#
Docker学习第二天-容器的更多相关文章
- Docker学习之3——容器
容器(Container) 容器介绍: docker是通过容器来运行业务的,就像运行一个kvm虚拟机是一样的.容器其实就是从镜像创建的一个实例. 我们可以对容器进行增删改查,容器之间也是相互隔离的.和 ...
- Docker学习笔记——制作容器与容器概念
Docker能做些什么? 1.docker能够解决虚拟机能够解决的问题 2.隔离应用依赖 3.创建应用镜像并复制 4.创建容易分发的即启即用的应用 5.docker的想法是创建软件程序可移植的轻量容器 ...
- Docker学习第二天
CentOS 系列安装 Docker Docker 支持 CentOS6 及以后的版本. CentOS6 对于 CentOS6,可以使用 EPEL 库安装 Docker,命令如下 [root@MSJT ...
- 【转】Docker学习_本地/容器文件互传(5)
将容器内文件拷贝到宿主机 docker cp <containerId>:/导出文件的位置/xxx.sql /宿主机的位置 示例:docker cp bf4c4fff338c:/root/ ...
- Docker学习第二天(Docker容器管理)
简介 emmmm Docker 容器管理 推荐文章:容器技术概述 run里面的子选项 1.使用run命令创建容器 docker container run -it ubuntu /bin/bash / ...
- docker学习笔记:容器的网络设置
创建一个docker容器,docker系统会自动为该容器分配一个ip地址,通常是172.17开头. 我们可以在主机上用 docker inspect 命令 或者进入容器用ifconfig命令来查看容器 ...
- 优秀的云计算工程师需要学什么?云计算Docker学习路线
云计算工程师要学什么?随着互联网的快速发展,云计算这个词大家并不陌生,但是云计算究竟是做什么的,想要从事云计算要学习什么,很多都不知道,那么今天就给大家讲一下云计算. 云计算是基于互联网的相关服务的增 ...
- Docker 入门 第二部分: 容器
目录 Docker 入门 第二部分: 容器 先决条件 介绍 你的新开发环境 使用 Dockerfile 定义一个容器 Dockerfile 应用本身 requirements.txt app.py 构 ...
- Docker学习笔记 - Docker容器内部署redis
Docker学习笔记(2-4)Docker应用实验-redist server 和client的安装使用 一.获取redis容器(含客户端和服务端) 二.创建服务端容器 1.在终端A中运行redis- ...
随机推荐
- php判断是否是移动设备
function isMobile() { // 如果有HTTP_X_WAP_PROFILE则一定是移动设备 if (isset($_SERVER['HTTP_X_WAP_PROFILE'])) { ...
- HTTP请求(GET与POST区别)和响应(get是从服务器上获取数据,post是向服务器传送数据,格式与举例都非常清楚)
HTTP有两部分组成:请求与响应,下面分别整理. 一.HTTP请求 1.HTTP请求格式: <request line> <headers> <blank line> ...
- 【转】微信退款时候报”请求被中止: 未能创建 SSL/TLS 安全通道“或”The request was aborted: Could not create SSL/TLS secure channel“的错误
退款测试在我本机测试一切都是正常的,但是发布到了服务器就报这样的一个错啦 但是无论百度或者google或者bing,你能够搜索到的结果都很类似,综合起来就是加这样一些代码,如下 ServicePoin ...
- ArcGIS for Desktop入门教程_第三章_Desktop软件安装 - ArcGIS知乎-新一代ArcGIS问答社区
原文:ArcGIS for Desktop入门教程_第三章_Desktop软件安装 - ArcGIS知乎-新一代ArcGIS问答社区 1 软件安装 1.1 安装前准备 请确认已经收到来自Esri中国( ...
- 规则“Microsoft Visual Studio 2008 的早期版本”失败。此计算机上安装了 Microsoft Visual Studio 2008 的早期版本。请在安装 SQL Server 2008 前将 Microsoft Visual Studio 2008 升级到 SP1。
今天重装了一下系统后,需要装开发工具,我用的开发工具是Visual Studio2008 和SQL Server2008R2,装完Visual Studio2008的时候在装数据库的时候却出现这样的问 ...
- Windows下配置Redis,并修改密码
原文:Windows下配置Redis,并修改密码 Windows下配置Redis,并修改密码 下载 Redis Windows版本的GitHub链接,直接下载zip文件解压到指定文件夹下或者下载msi ...
- Advanced Installer 中测试数据库连接提示“未发现数据源名称并且未指定默认驱动程序”的解决办法
原文:Advanced Installer 中测试数据库连接提示"未发现数据源名称并且未指定默认驱动程序"的解决办法 最近需要制作一个安装包,安装包的要求如下: 1.用户手工填写M ...
- 中国自主X86处理器工艺跃进:国产28nm升级16nm(上海兆芯)
提到X86处理器,世人皆知Intel.AMD,殊不知还有个VIA(威盛),在Intel反垄断世纪大战中VIA公司作为Intel霸权的受害者也最终确认了X86授权,不过VIA与前面两家的实力相差太远,X ...
- Delphi 编写ActiveForm窗体工程知识和样例(开发浏览器客户端应用程序)(有详细步骤)
一.基础知识介绍: 1.ActiveForm的基础知识介绍: 在Delphi中,ActiveForm是封装了Delphi Form的一种ActiveX控件.ActiveForm其实是一种标准的Delp ...
- windows和linux双系统,重新分区后修复grub
我电脑里装的是 windows 7 profressional 和 fedora 12 ,本来给 C 盘分了 50G ,原本以为够了,结果50G 瞬间用完,于是乎开始重新分区. PQ 是不能用了,上网 ...