Docker入门,如何部署Django uwsgi nginx应用
有关docker的介绍啊,为什么 要使用docker啊这些就不说了,因为当你点开这篇作文的时候,你自己心里已经有了答案。那么我们现在就打开电脑,撸起袖子开始docker入门吧。
相关名词
- 镜像(image): 一个打包好的应用,还有应用运行的系统、资源、配置文件等;
- 容器(container):镜像的实例。你可以这么理解,我们使用对象(镜像)可以alloc出来一个或者多个实例(容器);
- 仓库:我们管理代码有github,每个项目创建一个repository,管理镜像也是一样的。
安装docker
在这里下载相应的docker安装就好。
docker下载页面
我们构建自己的镜像是需要基础镜像的,比如CentOS,获取镜像直接从Docker Hubpull就好,类似git clone操作。但是访问国外网站速度慢,可以到阿里云下载,或者是配置阿里云加速器
常用命令
这尼玛太多了,建议瞅瞅就直接略过吧。需要操作的时候回过来再查找相关命令就好。
搜索镜像:docker search centos
获取镜像:docker pull registry.cn-hangzhou.aliyuncs.com/1hpc/centos
查看镜像:
iMac:~ yetongxue$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
registry.cn-hangzhou.aliyuncs.com/yetongxue/docker_test 1.2 f7d570f13f0a 7 days ago 515 MB
yetongxue/docker_test 1.2 f7d570f13f0a 7 days ago 515 MB
mysql 5.7 c73c7527c03a 3 weeks ago 412 MB
centos 7 3bee3060bfc8 2 months ago 193 MB
查看镜像id:docker images -q
删除镜像:docker rmi image_id
删除所有镜像:docker rmi $(docker images -q)
创建容器:docker run --name <container_name> centos:7
,container_name是自己定义的容器名
查看所有容器:docker ps -a
查看运行容器:docker ps
查看容器id:docker ps -q
进入容器:docker exec -it <container_id> bash
退出容器:exit
删除容器:docker rm <container_id>
删除所有容器:docker rm $(docker ps -aq)
端口映射:docker run -d -p 8080:80 hub.c.163.com/library/nginx
,说明:-d 表示后台运行,-p 8080:80 表示将宿主机的8080端口映射到容器端口80。容器开放的端口在镜像说明里面会有,nginx开放80,mysql开放3306,一般本来他们监听什么端口,容器就开放什么端口。
启动/停止/重启容器:docker start/stop/restart <container_id>
获取容器/镜像的元数据:docker inspect <container_id>
挂载数据卷:docker run -v host/machine/dir :container/path/dir --name volume_test_container centos:7
,说明:数据卷的挂载相当于在宿主机的目录与容器目录创建了一个链接,你修改任何一方的内容,另一方的内容也会同步修改。创建数据卷的作用:当容器被删除的时候,容器内的数据也一起被删除。像数据库、媒体资源等文件我们通常都会使用 -v 将容器中的内容链接到宿主机,这样我们重新创建容器的时候再次-v,数据又回来了。
启动mysql容器:docker run --name some-mysql -e MYSQL_ROOT_PASSWORD=qwerasdf -d mysql:5.7
,默认用户为root,密码qwerasdf
mysql容器启动后,其他容器就可以来连接使用了,方法如下:
容器连接:docker run --name some-app --link some-mysql:mysql -d application-that-uses-mysql
###Dockerfile
以前上学的时候,好多课程学起来感觉没劲,那是因为我们不知道学习它除了考试之外还能做什么。一件事情,我们先有个宏观的认识,然后再分解成很多步骤,那么在每一步的时候,我们才知道这一步我们在做什么,这一步对于整体所具有的意义是什么。那样才会心里有数,做起来也更带感。
所以Dockerfile指令就不一一说明了,我们直接来整体感受下。
当然,下面说的都是假设你已经有了常规应用部署的经验了。本次demo采用的是django+uwsgi+nginx的一个搭配,数据库使用mysql。
如果你还不太熟悉常规部署,请参照Django uwsgi nginx 应用部署
获取demo:git clone https://github.com/shiyeli/docker_test.git
Dockerfile内容详解
#当你写下FROM centos:7的时候,你就要想着,在这以后的每一步操作都是在centos 7系统镜像中进行的操作,
#你以前是怎么部署应用的,那么请按照你以前的步骤一步一步来就好。
FROM centos:7
#声明镜像制作者
MAINTAINER yetongxue <yeli.studio@qq.com>
#设置时区
ENV TZ "Asia/Shanghai"# 设置系统环境变量DOCKER_SRC
ENV DOCKER_SRC=mysite
# 设置系统环境变量DOCKER_HOME
ENV DOCKER_HOME=/root
# 设置系统环境变量DOCKER_PROJECT
ENV DOCKER_PROJECT=/root/project#这句指令相当与:cd /root
WORKDIR $DOCKER_HOME
#紧接着在root目录下面创建了两个文件夹
RUN mkdir media static#安装应用运行所需要的工具依赖pip,git好像没用上,mysql客户端,
#nc是一个网络工具,端口检测脚本wait-for-it.sh里面有使用这个软件
RUN yum -y install epel-release && \yum -y install python-pip && \yum -y install git nginx gcc gcc-c++ python-devel && yum -y install mysql && \ yum -y install mysql-devel && yum install nc -y && yum clean all && \pip install --upgrade pip# cd $DOCKER_PROJECT
WORKDIR $DOCKER_PROJECT
# . 表示当前目录,一是Dockerfile所在的目录,二是刚刚设置的DOCKER_PROJECT目录,
#这一步操作将会把项目中application目录下的所有文件拷贝到镜像目录DOCKER_PROJECT=/root/project下面
COPY ./ ./
#这一步安装python依赖软件django、Pillow、mysql-python、uwsgi、django-ckeditor。
#补充,-i 是修改pip源,默认的源速度很慢,经常卡在这里。
RUN pip install -i https://pypi.tuna.tsinghua.edu.cn/simple -r requirements.txt
#暴露端口8000,到时候执行docker run 的时候才好把宿主机端口映射到8000
EXPOSE 8000
#赋予start_script执行权限
RUN chmod u+x start_script
#容器启动后要执行的命令
ENTRYPOINT ["./start_script"]
以上就是我们构建一个镜像所要进行的操作,有了这个Dockerfile,我们就可以进入Dockerfile所在的目录了,执行:docker build -t yetongxue/docker_test:1.2 ./
构建我们的镜像了。
我知道,现在你心里已经有很多疑问了:
这个容器启动后能工作吗?
我数据库上哪儿连啊?
还有nginx配置,python manage.py migrate 刷新数据库都还没有做,uwsgi还没启动咧!
是的是的,咋们继续分解分解…
启动脚本start_script
我们刚刚忽略了容器启动后还有执行的命令了。咋们一起来看看start_script里面在做什么。
#!/bin/bash#sed是一个Linux编辑器吧,此命令的作用是查找文件/etc/nginx/nginx.conf中包含user的行,并将此行的nginx替换成root
sed -i '/user/{s/nginx/root/}' /etc/nginx/nginx.conf
#将项目nginx配置连接到nginx配置
ln -s /root/project/mysite_nginx.conf /etc/nginx/conf.d/
#启动nginx
nginx
#赋予wait-for-it.sh可执行权限
chmod u+x wait-for-it.sh
#判断数据库端口是否可用,因为数据库未准备好的话接下来的数据库刷新操作将失败。
#其实,假如我们事先启动好了一个数据库容器的话,此操作也可以省略。
#这样做是因为最后我们会使用docker-compose来一起管理两个或者多个容器,
#docker-compose里面三个关键字:link、depends_on、volume_from是可以确定容器的启动顺序的,
#但是,容器里面的mysql是否启动那就不一定了,所以我们检测下端口比较稳妥。
#没有好我们等几秒也无妨
#另外,这里的两个环境变量DB_PORT_3306_TCP_ADDR和DB_PORT_3306_TCP_PORT是mysql容器中的,
#不用猜也知道,一个是host,一个是port
#如果我们通过link将一个容器连接到mysql容器,mysql容器中的一些环境变量会共享出来的。
./wait-for-it.sh $DB_PORT_3306_TCP_ADDR:$DB_PORT_3306_TCP_PORT &
wait#设置manage.py中使用的setting
export DJANGO_SETTINGS_MODULE=mysite.settings.server#进入mysite目录(application下一级目录,不是mysite目录下的mysite)
#刚开始也许你有点困惑,不知道现在操作的目录到底在哪里,不像通常操作Linux,我可以pwd一下。
#其实是这样的,你以此脚本所在的位置为参照,你看项目目录结构发现,
#start_script与目录mysite是同一级的,manage.py在mysite之下,对吧
cd mysite
#刷新数据库
./manage.py migrate --noinput
#加载管理员用户到数据库,以便容器启动之后不必再进入容器执行python manage.py createsuperuser操作
./manage.py loaddata ./fixtures/superuser.json
#收集静态文件
./manage.py collectstatic --noinput#返回上级目录,mysite_uwsgi.ini所在的目录
cd ..
#启动uwsgi
uwsgi --ini mysite_uwsgi.ini
附一: 链接过mysql容器的容器的环境变量
[root@d9f25c4909bb project]# env
HOSTNAME=d9f25c4909bb
DB_NAME=/web/db
DOCKER_HOME=/root
TERM=xterm
DB_PORT=tcp://172.17.0.2:3306
DB_PORT_3306_TCP_PORT=3306
DB_ENV_GOSU_VERSION=1.7
DB_PORT_3306_TCP_PROTO=tcp
DB_ENV_MYSQL_ROOT_PASSWORD=qwerasdf
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
DOCKER_PROJECT=/root/project
PWD=/root/project
TZ=Asia/Shanghai
DB_PORT_3306_TCP_ADDR=172.17.0.2
SHLVL=1
HOME=/root
DB_PORT_3306_TCP=tcp://172.17.0.2:3306
DB_ENV_MYSQL_VERSION=5.7.19-1debian8
LESSOPEN=||/usr/bin/lesspipe.sh %s
DB_ENV_MYSQL_MAJOR=5.7
DOCKER_SRC=mysite
_=/usr/bin/env
附二: server.py 设置中的数据库连接配置
DATABASES = {#mysql database setting:#when the container link a mysql container,this container will has the env variable of "DB_PORT_3306_TCP_ADDR", the mysql host.'default':{'ENGINE': 'django.db.backends.mysql','NAME':'docker_db','USER':'root','PASSWORD': os.environ.get('DB_ENV_MYSQL_ROOT_PASSWORD'),'HOST':os.environ.get('DB_PORT_3306_TCP_ADDR'),'PORT':3306,'OPTIONS':{}}
}
附三: Django初始化数据
针对脚本里面的命令./manage.py loaddata ./fixtures/superuser.json
,请参见Providing initial data for models
执行命令后数据库相应的表中会添加一条记录。
./fixtures/superuser.json内容如下:
[{ "model": "auth.user","pk": 1,"fields": {"username": "root","password": "pbkdf2_sha256$30000$IdlNbZkEbkO3$4sqwI5SnLPDN2bhelVCE+Hu1rzspQU20OuYfQbW0G+c=","is_superuser": true,"is_staff": true,"is_active": true}}
]
因为django的密码是经过的哈希的,所以这里填写的密码是你想要设置密码的哈希字符串。
生成django密码:
In [1]: from django.contrib.auth.hashers import make_passwordIn [2]: make_password('qwerasdf')
Out[2]: u'pbkdf2_sha256$30000$IdlNbZkEbkO3$4sqwI5SnLPDN2bhelVCE+Hu1rzspQU20OuYfQbW0G+c=‘
附四: nginx配置
# mysite_nginx.conf# configuration of the server
server {# the port your site will be served on, default_server indicates that this server block# is the block to use if no blocks match the server_namelisten 8000 default_server;# the domain name it will serve forserver_name localhost; # substitute your machine's IP address or FQDNcharset utf-8;# max upload sizeclient_max_body_size 75M; # adjust to taste# Django medialocation /media {alias /root/media; # your Django project's media files - amend as required}location /static {alias /root/static; # your Django project's static files - amend as required}# Finally, send all non-media requests to the Django server.location / {uwsgi_pass unix:///root/project/mysite/docker_app.sock; # for a file socketinclude /root/project/uwsgi_params; # the uwsgi_params file you installed}
}
这下了然了噻。
运行容器
我们刚刚在Dockerfile所在的目录下执行docker build -t yetongxue/docker_test:1.2 ./
得到了镜像yetongxue/docker_test:1.2。此容器运行是需要依赖mysql容器的。所以我们首先启动一个mysql容器:
docker run --name db -d -e MYSQL_ROOT_PASSWORD=qwerasdf -e MYSQL_DATABASE=docker_db -v Users/yetongxue/Desktop/volumes/docker_test/db:/var/lib/mysql mysql:5.7
说明:
- –name给容器取个好听的名字;
- -d 后台运行;
- -e你要传递给容器的参数,你还可以指定用户名,不传默认root用户
- -v 容器中的数据库同步到宿主机以防不测。如果你创建了一个数据卷容器的话,你这里也可以使用参数 volume_from
- 最后是要采用的镜像及版本号
补充:
mysql的镜像其实跟我们刚刚构建的镜像一样,Dockerfile的最后会有一句ENTRYPOINT ["docker-entrypoint.sh"]
,我们来看看这个脚本吧。
[root@iZ94l43yka9Z docker_test]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
70d1d4b59e06 registry.cn-hangzhou.aliyuncs.com/yetongxue/docker_test:1.2 "./start_script" 30 hours ago Up 12 seconds 0.0.0.0:8100->8000/tcp dockertest_web_1
6b5881e8c4b2 mysql:5.7 "docker-entrypoint.sh" 30 hours ago Up 12 seconds 3306/tcp dockertest_db_1
[root@iZ94l43yka9Z docker_test]# docker exec -it 6b5881e8c4b2 bash
root@6b5881e8c4b2:/# ls
bin dev entrypoint.sh home lib64 mnt proc run srv tmp var
boot docker-entrypoint-initdb.d etc lib media opt root sbin sys usr
root@6b5881e8c4b2:/# nl entrypoint.sh 1 #!/bin/bash2 set -eo pipefail3 shopt -s nullglob4 # if command starts with an option, prepend mysqld5 if [ "${1:0:1}" = '-' ]; then6 set -- mysqld "$@"7 fi8 # skip setup if they want an option that stops mysqld9 wantHelp=10 for arg; do11 case "$arg" in12 -'?'|--help|--print-defaults|-V|--version)13 wantHelp=114 break15 ;;16 esac17 done18 # usage: file_env VAR [DEFAULT]19 # ie: file_env 'XYZ_DB_PASSWORD' 'example'20 # (will allow for "$XYZ_DB_PASSWORD_FILE" to fill in the value of21 # "$XYZ_DB_PASSWORD" from a file, especially for Docker's secrets feature)22 file_env() {23 local var="$1"24 local fileVar="${var}_FILE"25 local def="${2:-}"26 if [ "${!var:-}" ] && [ "${!fileVar:-}" ]; then27 echo >&2 "error: both $var and $fileVar are set (but are exclusive)"28 exit 129 fi30 local val="$def"31 if [ "${!var:-}" ]; then32 val="${!var}"33 elif [ "${!fileVar:-}" ]; then34 val="$(< "${!fileVar}")"35 fi36 export "$var"="$val"37 unset "$fileVar"38 }39 _check_config() {40 toRun=( "$@" --verbose --help )41 if ! errors="$("${toRun[@]}" 2>&1 >/dev/null)"; then42 cat >&2 <<-EOM43 ERROR: mysqld failed while attempting to check config44 command was: "${toRun[*]}"45 $errors46 EOM47 exit 148 fi49 }50 # Fetch value from server config51 # We use mysqld --verbose --help instead of my_print_defaults because the52 # latter only show values present in config files, and not server defaults53 _get_config() {54 local conf="$1"; shift55 "$@" --verbose --help --log-bin-index="$(mktemp -u)" 2>/dev/null | awk '$1 == "'"$conf"'" { print $2; exit }'56 }57 # allow the container to be started with `--user`58 if [ "$1" = 'mysqld' -a -z "$wantHelp" -a "$(id -u)" = '0' ]; then59 _check_config "$@"60 DATADIR="$(_get_config 'datadir' "$@")"61 mkdir -p "$DATADIR"62 chown -R mysql:mysql "$DATADIR"63 exec gosu mysql "$BASH_SOURCE" "$@"64 fi65 if [ "$1" = 'mysqld' -a -z "$wantHelp" ]; then66 # still need to check config, container may have started with --user67 _check_config "$@"68 # Get config69 DATADIR="$(_get_config 'datadir' "$@")"70 if [ ! -d "$DATADIR/mysql" ]; then71 file_env 'MYSQL_ROOT_PASSWORD'72 if [ -z "$MYSQL_ROOT_PASSWORD" -a -z "$MYSQL_ALLOW_EMPTY_PASSWORD" -a -z "$MYSQL_RANDOM_ROOT_PASSWORD" ]; then73 echo >&2 'error: database is uninitialized and password option is not specified '74 echo >&2 ' You need to specify one of MYSQL_ROOT_PASSWORD, MYSQL_ALLOW_EMPTY_PASSWORD and MYSQL_RANDOM_ROOT_PASSWORD'75 exit 176 fi77 mkdir -p "$DATADIR"78 echo 'Initializing database'79 "$@" --initialize-insecure80 echo 'Database initialized'81 if command -v mysql_ssl_rsa_setup > /dev/null && [ ! -e "$DATADIR/server-key.pem" ]; then82 # https://github.com/mysql/mysql-server/blob/23032807537d8dd8ee4ec1c4d40f0633cd4e12f9/packaging/deb-in/extra/mysql-systemd-start#L81-L8483 echo 'Initializing certificates'84 mysql_ssl_rsa_setup --datadir="$DATADIR"85 echo 'Certificates initialized'86 fi87 SOCKET="$(_get_config 'socket' "$@")"88 "$@" --skip-networking --socket="${SOCKET}" &89 pid="$!"90 mysql=( mysql --protocol=socket -uroot -hlocalhost --socket="${SOCKET}" )91 for i in {30..0}; do92 if echo 'SELECT 1' | "${mysql[@]}" &> /dev/null; then93 break94 fi95 echo 'MySQL init process in progress...'96 sleep 197 done98 if [ "$i" = 0 ]; then99 echo >&2 'MySQL init process failed.'100 exit 1101 fi102 if [ -z "$MYSQL_INITDB_SKIP_TZINFO" ]; then103 # sed is for https://bugs.mysql.com/bug.php?id=20545104 mysql_tzinfo_to_sql /usr/share/zoneinfo | sed 's/Local time zone must be set--see zic manual page/FCTY/' | "${mysql[@]}" mysql105 fi106 if [ ! -z "$MYSQL_RANDOM_ROOT_PASSWORD" ]; then107 export MYSQL_ROOT_PASSWORD="$(pwgen -1 32)"108 echo "GENERATED ROOT PASSWORD: $MYSQL_ROOT_PASSWORD"109 fi110 rootCreate=111 # default root to listen for connections from anywhere112 file_env 'MYSQL_ROOT_HOST' '%'113 if [ ! -z "$MYSQL_ROOT_HOST" -a "$MYSQL_ROOT_HOST" != 'localhost' ]; then114 # no, we don't care if read finds a terminating character in this heredoc115 # https://unix.stackexchange.com/questions/265149/why-is-set-o-errexit-breaking-this-read-heredoc-expression/265151#265151116 read -r -d '' rootCreate <<-EOSQL || true117 CREATE USER 'root'@'${MYSQL_ROOT_HOST}' IDENTIFIED BY '${MYSQL_ROOT_PASSWORD}' ;118 GRANT ALL ON *.* TO 'root'@'${MYSQL_ROOT_HOST}' WITH GRANT OPTION ;119 EOSQL120 fi121 "${mysql[@]}" <<-EOSQL122 -- What's done in this file shouldn't be replicated123 -- or products like mysql-fabric won't work124 SET @@SESSION.SQL_LOG_BIN=0;125 DELETE FROM mysql.user WHERE user NOT IN ('mysql.sys', 'mysqlxsys', 'root') OR host NOT IN ('localhost') ;126 SET PASSWORD FOR 'root'@'localhost'=PASSWORD('${MYSQL_ROOT_PASSWORD}') ;127 GRANT ALL ON *.* TO 'root'@'localhost' WITH GRANT OPTION ;128 ${rootCreate}129 DROP DATABASE IF EXISTS test ;130 FLUSH PRIVILEGES ;131 EOSQL132 if [ ! -z "$MYSQL_ROOT_PASSWORD" ]; then133 mysql+=( -p"${MYSQL_ROOT_PASSWORD}" )134 fi135 file_env 'MYSQL_DATABASE'136 if [ "$MYSQL_DATABASE" ]; then137 echo "CREATE DATABASE IF NOT EXISTS \`$MYSQL_DATABASE\` ;" | "${mysql[@]}"138 mysql+=( "$MYSQL_DATABASE" )139 fi140 file_env 'MYSQL_USER'141 file_env 'MYSQL_PASSWORD'142 if [ "$MYSQL_USER" -a "$MYSQL_PASSWORD" ]; then143 echo "CREATE USER '$MYSQL_USER'@'%' IDENTIFIED BY '$MYSQL_PASSWORD' ;" | "${mysql[@]}"144 if [ "$MYSQL_DATABASE" ]; then145 echo "GRANT ALL ON \`$MYSQL_DATABASE\`.* TO '$MYSQL_USER'@'%' ;" | "${mysql[@]}"146 fi147 echo 'FLUSH PRIVILEGES ;' | "${mysql[@]}"148 fi149 echo150 for f in /docker-entrypoint-initdb.d/*; do151 case "$f" in152 *.sh) echo "$0: running $f"; . "$f" ;;153 *.sql) echo "$0: running $f"; "${mysql[@]}" < "$f"; echo ;;154 *.sql.gz) echo "$0: running $f"; gunzip -c "$f" | "${mysql[@]}"; echo ;;155 *) echo "$0: ignoring $f" ;;156 esac157 echo158 done159 if [ ! -z "$MYSQL_ONETIME_PASSWORD" ]; then160 "${mysql[@]}" <<-EOSQL161 ALTER USER 'root'@'%' PASSWORD EXPIRE;162 EOSQL163 fi164 if ! kill -s TERM "$pid" || ! wait "$pid"; then165 echo >&2 'MySQL init process failed.'166 exit 1167 fi168 echo169 echo 'MySQL init process done. Ready for start up.'170 echo171 fi172 fi173 exec "$@"
哎呀卧槽,将近两百行,终于滚完了!
好吧,咋们抓重点看。
在第72行的时候,进行了一个判断,判断MYSQL_ROOT_PASSWORD、MYSQL_ALLOW_EMPTY_PASSWORD、MYSQL_RANDOM_ROOT_PASSWORD是否为空,不为空的话就进行Database initialize。
在第135行的时候判断MYSQL_DATABASE是否为空,不为空的话执行echo “CREATE DATABASE IF NOT EXISTS `KaTeX parse error: Can't use function '\`' in math mode at position 15: MYSQL_DATABASE\̲`̲ ;" | "{mysql[@]}”
紧接着在第140-148行进行了一个数据库权限的授予操作。
所以,我们启动mysql容器之后就可以开开心心的去使用了。
数据库容器启动了,接下来就是启动我们的应用容器,并与数据库容器链接。执行docker run --name web -v Users/yetongxue/Desktop/volumes/docker_test/media:/root/media --link db docker_test:1.2
It works!
现在呢,我们就基本上就把整个的过程走了一遍。
但是呢,我们现在有两个容器,我们就执行了两条启动命令,假如我们有三个四个呢?而且现在流行的微服务架构,很多服务唉……
不要担心,还有docker-compose!
###docker-compose
docker-compose是一个服务编排工具,简化复杂应用的利器,使用yaml语法。
对于yaml这里有个专门针对容器编排的教程[docker-compose.yml 语法说明](http://www.cnblogs.com/freefei/p/5311294.html)可以瞅瞅。
好啦,现在针对现在的两个容器,一个应用容器,一个数据库容器,我们来看看这个docker-compose.yml长啥样吧。
web:image: yetongxue/docker_test:1.2links:- "db"ports:- "8100:8000"volumes:- "${DOCKER_VOLUME_PATH}/docker_test/media:/root/media"restart: alwaysdb:image: mysql:5.7environment:TZ: 'Asia/Shanghai'MYSQL_ROOT_PASSWORD: qwerasdfMYSQL_DATABASE: docker_dbrestart: alwayscommand: ['mysqld', '--character-set-server=utf8']volumes:- "${DOCKER_VOLUME_PATH}/docker_test/db:/var/lib/mysql"
docker-compose命令
- 启动: docker-compose up (注意需要在docker-compose.yml文件目录下执行)
- 停止: docker-compose stop
- 还有: docker-compose start
其他的就自己–help吧。
###应用的部署
好了,我们在自己的机器上已经大功告成了。是时候放到另外一台机器跑跑看了。
开始的时候就说到,git 有github,docker 有dockerhub。但是呢,这个dockerhub离我们太远了,网速慢。所以我们用国内的阿里云或者网易蜂巢。
我用的是阿里云。
登录》控制台》产品与服务》容器服务》新建镜像》新建镜像仓库。如下图:
创建镜像的时候,你可以设置代码源。我这里选择的是本地仓库。仓库创建好之后,我会获得一个仓库地址,拿到这个地址在本机执行:
docker tag yetongxue/docker_test:1.2 registry.cn-hangzhou.aliyuncs.com/yetongxue/docker_test:1.2
之后,docker push registry.cn-hangzhou.aliyuncs.com/yetongxue/docker_test:1.2
mysql镜像因为使用的就是网上的公开镜像,所以不用管。
在我们要部署的机器上面,创建好相关将要-v 的数据卷目录。
再将刚刚的docker-compose.yml修改web所使用的镜像就好。
web:image: registry.cn-hangzhou.aliyuncs.com/yetongxue/docker_test:1.2links:- "db"ports:- "8100:8000"volumes:- "${DOCKER_VOLUME_PATH}/docker_test/media:/root/media"restart: alwaysdb:image: mysql:5.7environment:TZ: 'Asia/Shanghai'MYSQL_ROOT_PASSWORD: qwerasdfMYSQL_DATABASE: docker_dbrestart: alwayscommand: ['mysqld', '--character-set-server=utf8']volumes:- "${DOCKER_VOLUME_PATH}/docker_test/db:/var/lib/mysql"
见证奇迹的时刻到了,docker-compose up
It works!
###写在后面
其实我也是个docker初学者,这个教程算是最近一两个月断断续续学习的一个总结吧。写得比较啰嗦,但我的本意是希望尽可能的把我觉得比较重要的点记录下来。程序员是热爱分享的一群人,作为程序员,我们都有看过别人写的教程。作为一个初学者,教程中任何重要信息的遗漏都有可能给我们造成困惑。所以我在每一处都进行了详细的说明。
希望能够帮到你。
我的博客 https://blog.xander-ye.com
如若内容造成侵权/违法违规/事实不符,请联系编程学习网邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
相关文章
- 应用程序安装包制作工具简介
应用程序(Java程序)安装包制作工具简介 1 Install4j Install4j 是一款功能强大的多平台Java安装程序创建器可以产生自安装程序和应用程序装载器用于Java应用程序。 install4j的易于使用,它的扩展平台支持和其强大的屏幕和动作系统都是其所擅长的。2 launch4j launch…...
2024/5/1 13:47:52 - Hbase API管理功能2-HBaseAdmin
1. HBaseAdmin提供了建表、创建列簇、检查表是否存在、修改表结构和列簇结构、删除表等功能。 2. HBaseAdmin实例的生命周期不宜太长。 3. HBaseAdmin内置了master所用RPC接口代理的封装。HBaseAdmin类提供了以下基本接口:boolean isMasterRunning()检查master是否正在…...
2024/4/11 13:31:07 - 搜狗微信接口最近改版(url提取新方法)
直接去从html里面获取url是不行的 直接会出现下面这种我一开始是以为是我的ip被封了 果断去买ip然后发现 ………………啥几把ip都不好使,我就去研究这个链接发现了这么个js断点一开 走位走位 果断发现 正确的url后面是这样的&k=16&h=_ 这个是上面这段js加载出来的 ok…...
2024/5/1 6:41:15 - GBK 代码集字符定义表
中文 Windows 95 GBK 代码集字符定义表 81 0 1 2 3 4 5 6 7 8 9 A B C D E F4 丂 丄 丅 丆 丏 丒 丗 丟 丠 両 丣 並 丩 丮 丯 丱 5 丳 丵 丷 丼 乀 乁 乂 乄 乆 乊 乑 乕 乗 乚 乛 乢 6 乣 乤 乥 乧 乨 乪…...
2024/4/28 23:18:07 - vue-element-admin:一个基于vue的element-ui的vue项目模板,可运行起来+node_modules
一、项目部分页面展示: 1、登录页面:2、首页具体更多页面请下载完以后再细细研究二、项目具体功能api:(官方api:https://panjiachen.github.io/vue-element-admin-site/zh/guide/essentials/permission.html)...
2024/4/17 12:00:27 - java实现UnicodeUrl转码、解码
package com.util;import java.io.UnsupportedEncodingException; /*** url转码、解码** @author lifq * @date 2015-3-17 下午04:09:35*/ public class UrlUtil {private final static String ENCODE = "GBK"; /*** URL 解码** @return String* @author lifq* @date…...
2024/4/17 11:59:51 - U盘安装Mac High Sierra(制作U盘启动必须是在mac系统中)
一、Mac电脑制作U盘下载macOS High Sierra地址:https://pan.baidu.com/s/1U6AA3AgGIqpTx-l-I9XSXw密码:0ahd1.准备一个8GB或更大的U盘,并将U盘数据备份好。 2.将下载好的dmg镜像里的安装macOS的App拖放到系统里的应用程序中。3.制作U盘:在Mac电脑插入U盘,打开”应用程序-&…...
2024/5/1 8:44:16 - SharpZipLib进行文件的压缩和解压缩
一。压缩文件,生成文件流using System; using System.Collections.Generic; using System.Text; using System.IO; using ICSharpCode.SharpZipLib.Zip; using ICSharpCode.SharpZipLib.Core;namespace TimeInterval {public class ZipFileBuilder : IDisposable{private bool…...
2024/5/1 10:23:22 - C#获取URL参数值
原文地址为:C#获取URL参数值 在写程序的时候,我们经常需要对页面进行传参数,比如page?id=1234,那么在page这个页面中就直接可以使用string id = Request.QueryString["id"]; 来获取参数id的值1234了。这是一个人人都知道的基础知识。上面的方法:Request.QueryS…...
2024/5/1 8:16:12 - HBase Java API 基本操作
学完hbase shell API的基本操作之后,可以通过Java API 对hbase基本操作实现一把。基本概念java类 对应数据模型HBaseConfiguration HBase配置类HBaseAdmin HBase管理Admin类Table HBase Table操作类Put HBase添加操作数据模型Get HBase单个查询操作数据模型Scan HBase Scan检索…...
2024/4/20 5:17:24 - 编码表/转义字符/进制转换
ASCIIASCII码表 ASCII值 字符 ASCII值 字符 ASCII值 字符 ASCII值 字符NUL 32 (space) 64 @ 96 、SOH 33 ! 65 A 97 aSTX 34 ” 66 …...
2024/4/15 13:03:41 - 使用Java 8的Stream API列出ZIP文件中的条目
2019独角兽企业重金招聘Python工程师标准>>> Java 8中的java.util.zip.ZipFile包中提供了stream方法,能够非常容易的获取ZIP压缩包中的条目。在这篇文章中,我会通过一系列的示例来展示我们可以非常快速的遍历ZIP文件中的条目。 注意:为了在这篇博客中做演示,我…...
2024/4/17 12:00:26 - zookeeper集群搭建与升级
zookeeper 1、zookeeper功能 1-1、配置管理 集中管理配置文件实现服务治理 1-2、命名服务如为了通过网络访问一个系统,我们得知道对方的IP地址,但是IP地址对人非常不友好,这个时候我们就需要使用域名来访问。但是计算机是不能识别域名的。怎么办呢?如果我们每台机器里都备有…...
2024/4/19 14:04:51 - 在iOS中转换URL字符
在最近的开发过程中,遇到了一个新的问题,就是需要在格式化后的url字符串和NSString之间进行转换,从而能够实现一些需求。这在一开始是一个比较讨厌的事情,因为NSString和编码后的URL之间相互并不认识。不过好在Apple SDK为我们提供了简单地解决方案来解决这个事情。一:将N…...
2024/5/1 14:04:57 - Google API调用方式总结——前端js调用和后端各种语言调用
实习期间接到需求,期望能在.net框架下的前端调用google drive api,并持有access_token和refresh_token以保持和google api的长时间连接(单独acccess_token只能维持3600秒访问时间)。然而亲测前端使用纯js调用gapi只能获得access_token,无法同时得到refresh_token,最接近成…...
2024/4/18 9:38:49 - 一分钟学会使用Inno Setup 制作安装程序
Inno Setup 是一款免费的安装制作工具。简洁而强大,支持 pascal 脚本,既有适合新手的脚本向导,也有适合高手的的脚本编辑器。是一个不可多得的安装制作软件!目前的版本是Inno Setup 5. 这里可以下载到最新的Inno Setup。 http://www.jrsoftware.org/isinfo.php 简言之, In…...
2024/4/20 17:53:14 - Zookeeper原理架构与搭建
Zookeeper原理架构与搭建一、Zookeeper到底是什么!? 学一个东西,不搞明白他是什么东西,哪还有心情学啊!! 首先,Zookeeper是Apache的一个java项目,属于Hadoop系统,扮演管理员的角色。 然后看到官网那些专有名词,实在理解不了。 在Zookeeper的官网上有这么一句话:ZooK…...
2024/4/20 16:05:41 - Firebug 使用日文说明
转贴自 http://getfirebug.com/logging-jp.html画像上のタブをクリックするとそれぞれのスクリーンショットが表示されます。Firebug は、Web ページを閲覧中にクリック 1 回で使える豊富な開発ツールを Firefox に統合します。あなたはあらゆる Web ページの CSS、HTML、およ…...
2024/4/18 7:40:29 - Windows中注册ActiveX控件的方法(转载)
一般来说,一个外来ActiveX控件要在Windows中被正确使用,首先必须将控件文件(*.OCX)复制到硬盘中,然后将其在Windows中注册,未在Windows中注册过的ActiveX控件是不能使用的。注册ActiveX控件一般来说有三种途径: 1. 使用Regsvr32.exe程序对ActiveX控件进行注册; 2. 使…...
2024/4/18 15:57:15 - C#编码解码
C# Url编码:System.Web.HttpUtility.UrlEncode("我是一个兵"); 或 Server.UrlEncode(); Url解码:System.Web.HttpUtility.UrlDecode("我是一个兵"); Javascript Url编码:encodeURI(); Url解码: decodeURI();...
2024/4/17 12:00:56
最新文章
- 【初识Redis】
初识Redis Redis(Remote Dictionary Server)是一个开源的内存数据库,它提供了一个高性能的键值存储系统,并且支持多种数据结构,包括字符串、哈希、列表、集合和有序集合等。Redis的特点包括: 内存存储&…...
2024/5/1 15:19:47 - 梯度消失和梯度爆炸的一些处理方法
在这里是记录一下梯度消失或梯度爆炸的一些处理技巧。全当学习总结了如有错误还请留言,在此感激不尽。 权重和梯度的更新公式如下: w w − η ⋅ ∇ w w w - \eta \cdot \nabla w ww−η⋅∇w 个人通俗的理解梯度消失就是网络模型在反向求导的时候出…...
2024/3/20 10:50:27 - 汽车统一诊断服务UDS协议参考文章和视频
UDS基础知识介绍-电子发烧友网 【图解UDS】UDS汽车诊断标准协议(ISO14229)带你入门到精通-有驾 车载测试之UDS诊断协议9:0x27服务:解锁ECU_哔哩哔哩_bilibili UDS诊断的22服务(DID读取数据)和2E服务&…...
2024/4/29 23:11:44 - JS实现双向数据绑定的三种方式
1、第一种是通过Proxy数据代理来达到双向绑定的,这是Vue3更新的双向绑定方式。 <!DOCTYPE html> <html lang="en"> <head><meta charset="UTF-8"><title>Proxy双向绑定</title> <<...
2024/4/30 3:10:52 - 【外汇早评】美通胀数据走低,美元调整
原标题:【外汇早评】美通胀数据走低,美元调整昨日美国方面公布了新一期的核心PCE物价指数数据,同比增长1.6%,低于前值和预期值的1.7%,距离美联储的通胀目标2%继续走低,通胀压力较低,且此前美国一季度GDP初值中的消费部分下滑明显,因此市场对美联储后续更可能降息的政策…...
2024/4/29 23:16:47 - 【原油贵金属周评】原油多头拥挤,价格调整
原标题:【原油贵金属周评】原油多头拥挤,价格调整本周国际劳动节,我们喜迎四天假期,但是整个金融市场确实流动性充沛,大事频发,各个商品波动剧烈。美国方面,在本周四凌晨公布5月份的利率决议和新闻发布会,维持联邦基金利率在2.25%-2.50%不变,符合市场预期。同时美联储…...
2024/4/30 18:14:14 - 【外汇周评】靓丽非农不及疲软通胀影响
原标题:【外汇周评】靓丽非农不及疲软通胀影响在刚结束的周五,美国方面公布了新一期的非农就业数据,大幅好于前值和预期,新增就业重新回到20万以上。具体数据: 美国4月非农就业人口变动 26.3万人,预期 19万人,前值 19.6万人。 美国4月失业率 3.6%,预期 3.8%,前值 3…...
2024/4/29 2:29:43 - 【原油贵金属早评】库存继续增加,油价收跌
原标题:【原油贵金属早评】库存继续增加,油价收跌周三清晨公布美国当周API原油库存数据,上周原油库存增加281万桶至4.692亿桶,增幅超过预期的74.4万桶。且有消息人士称,沙特阿美据悉将于6月向亚洲炼油厂额外出售更多原油,印度炼油商预计将每日获得至多20万桶的额外原油供…...
2024/4/30 18:21:48 - 【外汇早评】日本央行会议纪要不改日元强势
原标题:【外汇早评】日本央行会议纪要不改日元强势近两日日元大幅走强与近期市场风险情绪上升,避险资金回流日元有关,也与前一段时间的美日贸易谈判给日本缓冲期,日本方面对汇率问题也避免继续贬值有关。虽然今日早间日本央行公布的利率会议纪要仍然是支持宽松政策,但这符…...
2024/4/27 17:58:04 - 【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响
原标题:【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响近日伊朗局势升温,导致市场担忧影响原油供给,油价试图反弹。此时OPEC表态稳定市场。据消息人士透露,沙特6月石油出口料将低于700万桶/日,沙特已经收到石油消费国提出的6月份扩大出口的“适度要求”,沙特将满…...
2024/4/27 14:22:49 - 【外汇早评】美欲与伊朗重谈协议
原标题:【外汇早评】美欲与伊朗重谈协议美国对伊朗的制裁遭到伊朗的抗议,昨日伊朗方面提出将部分退出伊核协议。而此行为又遭到欧洲方面对伊朗的谴责和警告,伊朗外长昨日回应称,欧洲国家履行它们的义务,伊核协议就能保证存续。据传闻伊朗的导弹已经对准了以色列和美国的航…...
2024/4/28 1:28:33 - 【原油贵金属早评】波动率飙升,市场情绪动荡
原标题:【原油贵金属早评】波动率飙升,市场情绪动荡因中美贸易谈判不安情绪影响,金融市场各资产品种出现明显的波动。随着美国与中方开启第十一轮谈判之际,美国按照既定计划向中国2000亿商品征收25%的关税,市场情绪有所平复,已经开始接受这一事实。虽然波动率-恐慌指数VI…...
2024/4/30 9:43:09 - 【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试
原标题:【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试美国和伊朗的局势继续升温,市场风险情绪上升,避险黄金有向上突破阻力的迹象。原油方面稍显平稳,近期美国和OPEC加大供给及市场需求回落的影响,伊朗局势并未推升油价走强。近期中美贸易谈判摩擦再度升级,美国对中…...
2024/4/27 17:59:30 - 【原油贵金属早评】市场情绪继续恶化,黄金上破
原标题:【原油贵金属早评】市场情绪继续恶化,黄金上破周初中国针对于美国加征关税的进行的反制措施引发市场情绪的大幅波动,人民币汇率出现大幅的贬值动能,金融市场受到非常明显的冲击。尤其是波动率起来之后,对于股市的表现尤其不安。隔夜美国股市出现明显的下行走势,这…...
2024/4/25 18:39:16 - 【外汇早评】美伊僵持,风险情绪继续升温
原标题:【外汇早评】美伊僵持,风险情绪继续升温昨日沙特两艘油轮再次发生爆炸事件,导致波斯湾局势进一步恶化,市场担忧美伊可能会出现摩擦生火,避险品种获得支撑,黄金和日元大幅走强。美指受中美贸易问题影响而在低位震荡。继5月12日,四艘商船在阿联酋领海附近的阿曼湾、…...
2024/4/28 1:34:08 - 【原油贵金属早评】贸易冲突导致需求低迷,油价弱势
原标题:【原油贵金属早评】贸易冲突导致需求低迷,油价弱势近日虽然伊朗局势升温,中东地区几起油船被袭击事件影响,但油价并未走高,而是出于调整结构中。由于市场预期局势失控的可能性较低,而中美贸易问题导致的全球经济衰退风险更大,需求会持续低迷,因此油价调整压力较…...
2024/4/26 19:03:37 - 氧生福地 玩美北湖(上)——为时光守候两千年
原标题:氧生福地 玩美北湖(上)——为时光守候两千年一次说走就走的旅行,只有一张高铁票的距离~ 所以,湖南郴州,我来了~ 从广州南站出发,一个半小时就到达郴州西站了。在动车上,同时改票的南风兄和我居然被分到了一个车厢,所以一路非常愉快地聊了过来。 挺好,最起…...
2024/4/29 20:46:55 - 氧生福地 玩美北湖(中)——永春梯田里的美与鲜
原标题:氧生福地 玩美北湖(中)——永春梯田里的美与鲜一觉醒来,因为大家太爱“美”照,在柳毅山庄去寻找龙女而错过了早餐时间。近十点,向导坏坏还是带着饥肠辘辘的我们去吃郴州最富有盛名的“鱼头粉”。说这是“十二分推荐”,到郴州必吃的美食之一。 哇塞!那个味美香甜…...
2024/4/30 22:21:04 - 氧生福地 玩美北湖(下)——奔跑吧骚年!
原标题:氧生福地 玩美北湖(下)——奔跑吧骚年!让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 啊……啊……啊 两…...
2024/5/1 4:32:01 - 扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!
原标题:扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!扒开伪装医用面膜,翻六倍价格宰客!当行业里的某一品项火爆了,就会有很多商家蹭热度,装逼忽悠,最近火爆朋友圈的医用面膜,被沾上了污点,到底怎么回事呢? “比普通面膜安全、效果好!痘痘、痘印、敏感肌都能用…...
2024/4/27 23:24:42 - 「发现」铁皮石斛仙草之神奇功效用于医用面膜
原标题:「发现」铁皮石斛仙草之神奇功效用于医用面膜丽彦妆铁皮石斛医用面膜|石斛多糖无菌修护补水贴19大优势: 1、铁皮石斛:自唐宋以来,一直被列为皇室贡品,铁皮石斛生于海拔1600米的悬崖峭壁之上,繁殖力差,产量极低,所以古代仅供皇室、贵族享用 2、铁皮石斛自古民间…...
2024/4/28 5:48:52 - 丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者
原标题:丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者【公司简介】 广州华彬企业隶属香港华彬集团有限公司,专注美业21年,其旗下品牌: 「圣茵美」私密荷尔蒙抗衰,产后修复 「圣仪轩」私密荷尔蒙抗衰,产后修复 「花茵莳」私密荷尔蒙抗衰,产后修复 「丽彦妆」专注医学护…...
2024/4/30 9:42:22 - 广州械字号面膜生产厂家OEM/ODM4项须知!
原标题:广州械字号面膜生产厂家OEM/ODM4项须知!广州械字号面膜生产厂家OEM/ODM流程及注意事项解读: 械字号医用面膜,其实在我国并没有严格的定义,通常我们说的医美面膜指的应该是一种「医用敷料」,也就是说,医用面膜其实算作「医疗器械」的一种,又称「医用冷敷贴」。 …...
2024/4/30 9:43:22 - 械字号医用眼膜缓解用眼过度到底有无作用?
原标题:械字号医用眼膜缓解用眼过度到底有无作用?医用眼膜/械字号眼膜/医用冷敷眼贴 凝胶层为亲水高分子材料,含70%以上的水分。体表皮肤温度传导到本产品的凝胶层,热量被凝胶内水分子吸收,通过水分的蒸发带走大量的热量,可迅速地降低体表皮肤局部温度,减轻局部皮肤的灼…...
2024/4/30 9:42:49 - 配置失败还原请勿关闭计算机,电脑开机屏幕上面显示,配置失败还原更改 请勿关闭计算机 开不了机 这个问题怎么办...
解析如下:1、长按电脑电源键直至关机,然后再按一次电源健重启电脑,按F8健进入安全模式2、安全模式下进入Windows系统桌面后,按住“winR”打开运行窗口,输入“services.msc”打开服务设置3、在服务界面,选中…...
2022/11/19 21:17:18 - 错误使用 reshape要执行 RESHAPE,请勿更改元素数目。
%读入6幅图像(每一幅图像的大小是564*564) f1 imread(WashingtonDC_Band1_564.tif); subplot(3,2,1),imshow(f1); f2 imread(WashingtonDC_Band2_564.tif); subplot(3,2,2),imshow(f2); f3 imread(WashingtonDC_Band3_564.tif); subplot(3,2,3),imsho…...
2022/11/19 21:17:16 - 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机...
win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”问题的解决方法在win7系统关机时如果有升级系统的或者其他需要会直接进入一个 等待界面,在等待界面中我们需要等待操作结束才能关机,虽然这比较麻烦,但是对系统进行配置和升级…...
2022/11/19 21:17:15 - 台式电脑显示配置100%请勿关闭计算机,“准备配置windows 请勿关闭计算机”的解决方法...
有不少用户在重装Win7系统或更新系统后会遇到“准备配置windows,请勿关闭计算机”的提示,要过很久才能进入系统,有的用户甚至几个小时也无法进入,下面就教大家这个问题的解决方法。第一种方法:我们首先在左下角的“开始…...
2022/11/19 21:17:14 - win7 正在配置 请勿关闭计算机,怎么办Win7开机显示正在配置Windows Update请勿关机...
置信有很多用户都跟小编一样遇到过这样的问题,电脑时发现开机屏幕显现“正在配置Windows Update,请勿关机”(如下图所示),而且还需求等大约5分钟才干进入系统。这是怎样回事呢?一切都是正常操作的,为什么开时机呈现“正…...
2022/11/19 21:17:13 - 准备配置windows 请勿关闭计算机 蓝屏,Win7开机总是出现提示“配置Windows请勿关机”...
Win7系统开机启动时总是出现“配置Windows请勿关机”的提示,没过几秒后电脑自动重启,每次开机都这样无法进入系统,此时碰到这种现象的用户就可以使用以下5种方法解决问题。方法一:开机按下F8,在出现的Windows高级启动选…...
2022/11/19 21:17:12 - 准备windows请勿关闭计算机要多久,windows10系统提示正在准备windows请勿关闭计算机怎么办...
有不少windows10系统用户反映说碰到这样一个情况,就是电脑提示正在准备windows请勿关闭计算机,碰到这样的问题该怎么解决呢,现在小编就给大家分享一下windows10系统提示正在准备windows请勿关闭计算机的具体第一种方法:1、2、依次…...
2022/11/19 21:17:11 - 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”的解决方法...
今天和大家分享一下win7系统重装了Win7旗舰版系统后,每次关机的时候桌面上都会显示一个“配置Windows Update的界面,提示请勿关闭计算机”,每次停留好几分钟才能正常关机,导致什么情况引起的呢?出现配置Windows Update…...
2022/11/19 21:17:10 - 电脑桌面一直是清理请关闭计算机,windows7一直卡在清理 请勿关闭计算机-win7清理请勿关机,win7配置更新35%不动...
只能是等着,别无他法。说是卡着如果你看硬盘灯应该在读写。如果从 Win 10 无法正常回滚,只能是考虑备份数据后重装系统了。解决来方案一:管理员运行cmd:net stop WuAuServcd %windir%ren SoftwareDistribution SDoldnet start WuA…...
2022/11/19 21:17:09 - 计算机配置更新不起,电脑提示“配置Windows Update请勿关闭计算机”怎么办?
原标题:电脑提示“配置Windows Update请勿关闭计算机”怎么办?win7系统中在开机与关闭的时候总是显示“配置windows update请勿关闭计算机”相信有不少朋友都曾遇到过一次两次还能忍但经常遇到就叫人感到心烦了遇到这种问题怎么办呢?一般的方…...
2022/11/19 21:17:08 - 计算机正在配置无法关机,关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机...
关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!关机提示 windows7 正在配…...
2022/11/19 21:17:05 - 钉钉提示请勿通过开发者调试模式_钉钉请勿通过开发者调试模式是真的吗好不好用...
钉钉请勿通过开发者调试模式是真的吗好不好用 更新时间:2020-04-20 22:24:19 浏览次数:729次 区域: 南阳 > 卧龙 列举网提醒您:为保障您的权益,请不要提前支付任何费用! 虚拟位置外设器!!轨迹模拟&虚拟位置外设神器 专业用于:钉钉,外勤365,红圈通,企业微信和…...
2022/11/19 21:17:05 - 配置失败还原请勿关闭计算机怎么办,win7系统出现“配置windows update失败 还原更改 请勿关闭计算机”,长时间没反应,无法进入系统的解决方案...
前几天班里有位学生电脑(windows 7系统)出问题了,具体表现是开机时一直停留在“配置windows update失败 还原更改 请勿关闭计算机”这个界面,长时间没反应,无法进入系统。这个问题原来帮其他同学也解决过,网上搜了不少资料&#x…...
2022/11/19 21:17:04 - 一个电脑无法关闭计算机你应该怎么办,电脑显示“清理请勿关闭计算机”怎么办?...
本文为你提供了3个有效解决电脑显示“清理请勿关闭计算机”问题的方法,并在最后教给你1种保护系统安全的好方法,一起来看看!电脑出现“清理请勿关闭计算机”在Windows 7(SP1)和Windows Server 2008 R2 SP1中,添加了1个新功能在“磁…...
2022/11/19 21:17:03 - 请勿关闭计算机还原更改要多久,电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机怎么办...
许多用户在长期不使用电脑的时候,开启电脑发现电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机。。.这要怎么办呢?下面小编就带着大家一起看看吧!如果能够正常进入系统,建议您暂时移…...
2022/11/19 21:17:02 - 还原更改请勿关闭计算机 要多久,配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以...
配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!配置windows update失败 还原更改 请勿关闭计算机&#x…...
2022/11/19 21:17:01 - 电脑配置中请勿关闭计算机怎么办,准备配置windows请勿关闭计算机一直显示怎么办【图解】...
不知道大家有没有遇到过这样的一个问题,就是我们的win7系统在关机的时候,总是喜欢显示“准备配置windows,请勿关机”这样的一个页面,没有什么大碍,但是如果一直等着的话就要两个小时甚至更久都关不了机,非常…...
2022/11/19 21:17:00 - 正在准备配置请勿关闭计算机,正在准备配置windows请勿关闭计算机时间长了解决教程...
当电脑出现正在准备配置windows请勿关闭计算机时,一般是您正对windows进行升级,但是这个要是长时间没有反应,我们不能再傻等下去了。可能是电脑出了别的问题了,来看看教程的说法。正在准备配置windows请勿关闭计算机时间长了方法一…...
2022/11/19 21:16:59 - 配置失败还原请勿关闭计算机,配置Windows Update失败,还原更改请勿关闭计算机...
我们使用电脑的过程中有时会遇到这种情况,当我们打开电脑之后,发现一直停留在一个界面:“配置Windows Update失败,还原更改请勿关闭计算机”,等了许久还是无法进入系统。如果我们遇到此类问题应该如何解决呢࿰…...
2022/11/19 21:16:58 - 如何在iPhone上关闭“请勿打扰”
Apple’s “Do Not Disturb While Driving” is a potentially lifesaving iPhone feature, but it doesn’t always turn on automatically at the appropriate time. For example, you might be a passenger in a moving car, but your iPhone may think you’re the one dri…...
2022/11/19 21:16:57