ubuntu18.04中Docker安装、命令、部署软件、Dockerfile、docker-compose、docker私有仓库_ubuntu 部署软件-程序员宅基地

技术标签: Linux  linux  Java进阶  docker  

Docker概述

Dcoker可以解决软件跨环境迁移的问题

在这里插入图片描述

Docker安装

参考链接

为了避免每次命令都输入sudo,可以设置用户权限,注意执行后须注销重新登录

sudo usermod -a -G docker $USER

例如:当前用户为ningan
sudo usermod -a -G docker ningan

安装完成之后,查看docker版本命令:

docker -v
docker --version

Docker架构

菜鸟教程
Docker 包括三个基本概念:

镜像(Image):Docker 镜像(Image),就相当于是一个 root 文件系统。比如官方镜像 ubuntu:16.04 就包含了完整的一套 Ubuntu16.04 最小系统的 root 文件系统。
容器(Container):镜像(Image)和容器(Container)的关系,就像是面向对象程序设计中的类和实例一样,镜像是静态的定义,容器是镜像运行时的实体。容器可以被创建、启动、停止、删除、暂停等。
仓库(Repository):仓库可看成一个代码控制中心,用来保存镜像。

在这里插入图片描述

Docker命令

1.Docker服务相关命令

symtemctl表示system ctrl
在这里插入图片描述

2.Docker镜像相关命令

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

示例:
docker pull redis:5.0

docker rmi 镜像id或软件:版本(rmi表示:remove image)
docker rmi redis:latest
docker rmi `docker images -q`   #删除所有本地镜像
docker images -q    #列出所有镜像id

如果不知道软件具体的版本号,可以到 docker hub搜索

2.Docker容器相关命令

查看容器
创建容器
进入容器
启动容器
停止容器
删除容器
查看容器信息
在这里插入图片描述
在这里插入图片描述

示例:
$ docker pull ubuntu
$ docker run -it --name=c1 ubuntu /bin/bash
$ docker exec -it c1 /bin/bash  #如果容器退出去了需要再进去

启动/停止/删除容器:都可以通过id或者名称进行
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

Docker容器数据卷

1.数据卷概念

在这里插入图片描述

2.配置数据卷

在这里插入图片描述

#讲容器挂载在目录下,实现数据的持久化
$ docker run -it --name=c1 -v /home/ningan/docker/data:/root/data_container  ubuntu:latest /bin/bash

#一个容器挂载在多个目录下  用多个-v参数即可
$ docker run -it --name=c2 -v /home/ningan/docker/data2:/root/data2_container -v /home/ningan/docker/data3:/root/data3_container  ubuntu:latest

#同一个目录挂载不同的容器
$ docker run -it --name=c3 -v /home/ningan/docker/data4:/root/data4_container ubuntu:latest
$ docker run -it --name=c4 -v /home/ningan/docker/data4:/root/data4_container ubuntu:latest

$ docker exec -it c3 /bin/bash  #如果容器退出去了需要再进去

3.数据卷容器

在这里插入图片描述
创建之前先查看刚刚设置的容器,全部删除:

$ docker ps -a 
$ docker rm c1 c2 c3 c4

在这里插入图片描述

在这里插入图片描述

$ docker run –it --name=c3 –v /volume ubuntu:latest /bin/bash 
$ docker run -it --name=c1 --volumes-from c3 ubuntu:latest /bin/bash
$ docker run -it --name=c2 --volumes-from c3 ubuntu:latest /bin/bash
$ docker inspect c3

在这里插入图片描述

Docker应用部署

在这里插入图片描述

(一).部署mysql

1. 搜索mysql镜像

docker search mysql

2. 拉取mysql镜像

docker pull mysql:5.6
出现错误:error pulling image configuration: …

error pulling image configuration: Get https://production.cloudflare.docker.com/registry-v2/docker/registry/v2/blobs/sha256/e6/e61c95a9851455112a52f8eb1aab6616569e32e6b8e087b1e3330ea50005508f/data?verify=1608173288-ggeO%2BMLtyayzIRJ%2FmFopTPrMb6Q%3D: dial tcp 104.18.125.25:443: i/o timeout

解决

参考博客
看错误明显是拉镜像的地址不对,无法连接。

由于daemon.json没有配置造成的,需修改daemon.json

vim /etc/docker/daemon.json
权限不够的话,加sudo

增加拉镜像的地址

{
    
"registry-mirrors":["https://hub-mirror.c.163.com","https://registry.aliyuncs.com","https://registry.docker-cn.com","https://docker.mirrors.ustc.edu.cn"]
}

修改后重启docker服务

service docker restart

再次拉取,可以成功拉取
在这里插入图片描述

3. 创建容器,设置端口映射、目录映射

# 在自己自定义的目录下创建mysql目录用于存储mysql数据信息
mkdir mysql
cd mysql
docker run -id \
-p 3307:3306 \
--name=c_mysql \
-v $PWD/conf:/etc/mysql/conf.d \
-v $PWD/logs:/logs \
-v $PWD/data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=123456 \
mysql:5.6

# 注意:现在演示用3306映射到3307,以后直接就是用3306映射到3307
  • 参数说明:
    • -p 3307:3306:将容器的 3306 端口映射到宿主机的 3307 端口。
    • -v $PWD/conf:/etc/mysql/conf.d:将主机当前目录下的 conf/my.cnf 挂载到容器的 /etc/mysql/my.cnf。配置目录
    • -v $PWD/logs:/logs:将主机当前目录下的 logs 目录挂载到容器的 /logs。日志目录
    • -v $PWD/data:/var/lib/mysql :将主机当前目录下的data目录挂载到容器的 /var/lib/mysql 。数据目录
    • **-e MYSQL_ROOT_PASSWORD=123456:**初始化 root 用户的密码。

在这里插入图片描述

4. 进入容器,操作mysql

docker exec –it c_mysql /bin/bash

在docker中直接连接mysql

在这里插入图片描述

5. 使用外部机器(eg.主机中的SQLyog)连接容器中的mysql

在这里插入图片描述
在docker中创建数据库test01:
在这里插入图片描述
在外部机器也能直接查看
在这里插入图片描述

(二).部署tomcat

1. 搜索tomcat镜像

docker search tomcat

2. 拉取tomcat镜像

docker pull tomcat

3. 创建容器,设置端口映射、目录映射

# 在自定义目录下创建tomcat目录用于存储tomcat数据信息
mkdir tomcat
cd tomcat
docker run -id --name=c_tomcat \
-p 8080:8080 \
-v $PWD:/usr/local/tomcat/webapps \
tomcat 
  • 参数说明:

    • **-p 8080:8080:**将容器的8080端口映射到主机的8080端口

      **-v $PWD:/usr/local/tomcat/webapps:**将主机中当前目录挂载到容器的webapps

在这里插入图片描述

4. 使用外部机器访问tomcat

在宿主机上创建test/index.html
在这里插入图片描述
内容为:
在这里插入图片描述

在外部机器上输入:192.168.0.184:8080/test/index.html ,其中192.168.0.184是宿主机的ip,显示如下:
在这里插入图片描述

(三).部署Nginx

1. 搜索nginx镜像

docker search nginx

2. 拉取nginx镜像

docker pull nginx

3. 创建容器,设置端口映射、目录映射

# 在自定义目录下创建nginx目录用于存储nginx数据信息
mkdir nginx
cd nginx
mkdir conf
cd conf
# 在~/nginx/conf/下创建nginx.conf文件,粘贴下面内容
vim nginx.conf

在这里插入图片描述

user  nginx;
worker_processes  1;

error_log  /var/log/nginx/error.log warn;
pid        /var/run/nginx.pid;


events {
    
    worker_connections  1024;
}


http {
    
    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;

    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  /var/log/nginx/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    keepalive_timeout  65;

    #gzip  on;

    include /etc/nginx/conf.d/*.conf;
}

回退到nginx目录,执行:

docker run -id --name=c_nginx \
-p 80:80 \
-v $PWD/conf/nginx.conf:/etc/nginx/nginx.conf \
-v $PWD/logs:/var/log/nginx \
-v $PWD/html:/usr/share/nginx/html \
nginx
  • 参数说明:
    • -p 80:80:将容器的 80端口映射到宿主机的 80 端口。
    • -v $PWD/conf/nginx.conf:/etc/nginx/nginx.conf:将主机当前目录下的 /conf/nginx.conf 挂载到容器的 :/etc/nginx/nginx.conf。配置目录
    • -v $PWD/logs:/var/log/nginx:将主机当前目录下的 logs 目录挂载到容器的/var/log/nginx。日志目录

在这里插入图片描述

4. 使用外部机器访问nginx

浏览器输入:192.168.0.184 回车显示403,因为html目录下什么都没有

做如下操作:
在这里插入图片描述
输入:
在这里插入图片描述
刷新浏览器:192.168.0.184,则正常显示:
在这里插入图片描述

(四).部署redis

1. 搜索redis镜像

docker search redis

2. 拉取redis镜像

docker pull redis:5.0

3. 创建容器,设置端口映射

docker run -id --name=c_redis -p 6379:6379 redis:5.0

此处为什么不创建redis目录了呢?
因为没有目录映射,所以不需要创建

4. 使用外部机器连接redis

redis-cli.exe -h 192.168.0.184 -p 6379

具体操作:

进入cmd窗口,找到自己的redis目录:
在这里插入图片描述
在这里插入图片描述

Dockerfile

1.Docker镜像简介

在这里插入图片描述
在这里插入图片描述

2.Docker镜像制作

(1).容器转为镜像

这种方式不太常用,如需学习具体案例操作,移步:该网站P503
在这里插入图片描述

目录挂载的不会生效,其他的都会生效

(2).Dockerfile

在这里插入图片描述

关键字 作用 备注
FROM 指定父镜像 指定dockerfile基于那个image构建
MAINTAINER 作者信息 用来标明这个dockerfile谁写的
LABEL 标签 用来标明dockerfile的标签 可以使用Label代替Maintainer 最终都是在docker image基本信息中可以查看
RUN 执行命令 执行一段命令 默认是/bin/sh 格式: RUN command 或者 RUN [“command” , “param1”,“param2”]
CMD 容器启动命令 提供启动容器时候的默认命令 和ENTRYPOINT配合使用.格式 CMD command param1 param2 或者 CMD [“command” , “param1”,“param2”]
ENTRYPOINT 入口 一般在制作一些执行就关闭的容器中会使用
COPY 复制文件 build的时候复制文件到image中
ADD 添加文件 build的时候添加文件到image中 不仅仅局限于当前build上下文 可以来源于远程服务
ENV 环境变量 指定build时候的环境变量 可以在启动的容器的时候 通过-e覆盖 格式ENV name=value
ARG 构建参数 构建参数 只在构建的时候使用的参数 如果有ENV 那么ENV的相同名字的值始终覆盖arg的参数
VOLUME 定义外部可以挂载的数据卷 指定build的image那些目录可以启动的时候挂载到文件系统中 启动容器的时候使用 -v 绑定 格式 VOLUME [“目录”]
EXPOSE 暴露端口 定义容器运行的时候监听的端口 启动容器的使用-p来绑定暴露端口 格式: EXPOSE 8080 或者 EXPOSE 8080/udp
WORKDIR 工作目录 指定容器内部的工作目录 如果没有创建则自动创建 如果指定/ 使用的是绝对地址 如果不是/开头那么是在上一条workdir的路径的相对路径
USER 指定执行用户 指定build或者启动的时候 用户 在RUN CMD ENTRYPONT执行的时候的用户
HEALTHCHECK 健康检查 指定监测当前容器的健康监测的命令 基本上没用 因为很多时候 应用本身有健康监测机制
ONBUILD 触发器 当存在ONBUILD关键字的镜像作为基础镜像的时候 当执行FROM完成之后 会执行 ONBUILD的命令 但是不影响当前镜像 用处也不怎么大
STOPSIGNAL 发送信号量到宿主机 该STOPSIGNAL指令设置将发送到容器的系统调用信号以退出。
SHELL 指定执行脚本的shell 指定RUN CMD ENTRYPOINT 执行命令的时候 使用的shell
(2.1).自定义镜像

在这里插入图片描述
虽然视频网站里定义的是centos,但是这里演示的是定义ubuntu的镜像

这里看到默认登录路径为root,并且不可以使用vim

# 这里看到默认登录路径为root,并且不可以使用vim
ningan@ubuntu:~/docker$ docker exec -it c1 /bin/bash
Error response from daemon: Container dc461df06514c3f621464120dc4fe02256e91dc6354baa92a3abe9c2da227522 is not running
ningan@ubuntu:~/docker$ 
ningan@ubuntu:~/docker$ docker start c1
c1
ningan@ubuntu:~/docker$ 
ningan@ubuntu:~/docker$ docker exec -it c1 /bin/bash
root@dc461df06514:/# 
root@dc461df06514:/# vim a.txt
bash: vim: command not found
root@dc461df06514:/# vi a.txt
bash: vi: command not found
root@dc461df06514:/# 
root@dc461df06514:/# touch a.txt
root@dc461df06514:/# exit
exit
ningan@ubuntu:~/docker$ 

开始制作镜像:

ningan@ubuntu:~/docker$ mkdir docker_files
mkdir: cannot create directory ‘docker_files’: Permission denied
ningan@ubuntu:~/docker$ sudo mkdir docker_files
[sudo] password for ningan: 
ningan@ubuntu:~/docker$ 
ningan@ubuntu:~/docker$ cd docker_files/
ningan@ubuntu:~/docker/docker_files$ 
ningan@ubuntu:~/docker/docker_files$ vim ubuntu_dockerfile
ningan@ubuntu:~/docker/docker_files$ sudo vim ubuntu_dockerfile
ningan@ubuntu:~/docker/docker_files$ 

ubuntu_dockerfile文件中的内容:(注意:这样子写会报错,可以直接往下看,也可以先尝试一下)

FROM ubuntu:latest

MAINTAINER  itheima <[email protected]>

RUN apt-get install -y vim

WORKDIR /usr

CMD /bin/bash

执行之后报错: E: Unable to locate package vim

ningan@ubuntu:~/docker/docker_files$ docker build -f ubuntu_dockerfile -t itheima_ubuntu:1 .
Sending build context to Docker daemon  2.048kB
Step 1/5 : FROM ubuntu:latest
 ---> f643c72bc252
Step 2/5 : MAINTAINER  itheima <[email protected]>
 ---> Running in cdcbe50bedd2
Removing intermediate container cdcbe50bedd2
 ---> cc1a7fac3f37
Step 3/5 : RUN apt-get install -y vim
 ---> Running in 118f82f6f213
Reading package lists...
Building dependency tree...
Reading state information...
E: Unable to locate package vim
The command '/bin/sh -c apt-get install -y vim' returned a non-zero code: 100
ningan@ubuntu:~/docker/docker_files$ 

修改文件内容为:
RUN apt-get update && apt-get install apt-file -y && apt-file update && apt-get update && apt-get install vim -y

FROM ubuntu:latest

MAINTAINER  itheima <[email protected]>

RUN apt-get update && apt-get install apt-file -y && apt-file update && apt-get update && apt-get install vim -y

WORKDIR /usr

CMD /bin/bash

再次运行:

ningan@ubuntu:~/docker/docker_files$ docker build -f ubuntu_dockerfile -t itheima_ubuntu:1 .

执行成功
在这里插入图片描述

测试一下,工作目录位于/usr下面,并且vim也可以用了

ningan@ubuntu:~/docker/docker_files$ docker run -it --name=cc itheima_ubuntu:1
root@1ebe42d9e96d:/usr# 
root@1ebe42d9e96d:/usr# vim a.txt

(2.2).部署springboot项目

在这里插入图片描述

(2.2.1).先准备好springboot项目

在这里插入图片描述
直接访问结果如下,可以正常访问!
在这里插入图片描述

(2.2.2) 打jar包,并进行测试

在这里插入图片描述

找到jar包的地址
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
发现jar包没有任何问题!

(2.2.3) 将jar包上传到ubuntu系统上并新建dockerfile文件

在这里插入图片描述

内容为:

FROM java:8
MAINTAINER itheima <[email protected]>
ADD docker-1.0-SNAPSHOT.jar app.jar
CMD java -jar app.jar

然后执行:

$ docker build -f springboot_dockerfile -t app .

在这里插入图片描述

新建容器并进入:
在这里插入图片描述

在主机上访问(其中网址为容器宿主机的ip),可以正常访问:
在这里插入图片描述

Docker Compose

在这里插入图片描述

在这里插入图片描述

1.安装卸载

安装Docker Compose

# Compose目前已经完全支持Linux、Mac OS和Windows,在我们安装Compose之前,需要先安装Docker。下面我 们以编译好的二进制包方式安装在Linux系统中。 
curl -L https://github.com/docker/compose/releases/download/1.22.0/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
# 设置文件可执行权限 
chmod +x /usr/local/bin/docker-compose
# 查看版本信息 
docker-compose -version

卸载Docker Compose

# 二进制包方式安装的,删除二进制文件即可
rm /usr/local/bin/docker-compose

2.使用docker compose编排nginx+springboot项目

步骤

需求:启动一个app的项目容器,再启动一个nginx容器,通过nginx反向代理来访问app容器里面的项目

  1. 创建docker-compose目录
mkdir docker-compose
cd docker-compose
  1. 编写 docker-compose.yml 文件
version: '3'
services:
  nginx:
   image: nginx
   ports:
    - 80:80
   links:
    - app
   volumes:
    - ./nginx/conf.d:/etc/nginx/conf.d
  app:
    image: app
    expose:
      - "8080"
  1. 创建./nginx/conf.d目录
mkdir -p ./nginx/conf.d    #-p可以创建多重目录
  1. 在./nginx/conf.d目录下 编写itheima.conf文件
server {
    
    listen 80;
    access_log off;

    location / {
    
        proxy_pass http://app:8080;
    }
   
}
  1. 在~/docker-compose 目录下 使用docker-compose 启动容器
docker-compose up
  1. 测试访问
http://192.168.XXX.XXX/hello

具体操作

# 终端1
ningan@ubuntu:~/docker$ mkdir docker-compose
ningan@ubuntu:~/docker$ cd docker-compose/
ningan@ubuntu:~/docker/docker-compose$ 
ningan@ubuntu:~/docker/docker-compose$ vim docker-compose.yml
ningan@ubuntu:~/docker/docker-compose$ 
ningan@ubuntu:~/docker/docker-compose$ mkdir -p ./nginx/conf.d
ningan@ubuntu:~/docker/docker-compose$ 
ningan@ubuntu:~/docker/docker-compose$ ll
total 16
drwxr-xr-x 3 ningan ningan 4096 Dec 18 07:23 ./
drwxr-xr-x 4 ningan ningan 4096 Dec 18 07:22 ../
-rw-r--r-- 1 ningan ningan  190 Dec 18 07:23 docker-compose.yml
drwxr-xr-x 3 ningan ningan 4096 Dec 18 07:23 nginx/
ningan@ubuntu:~/docker/docker-compose$ 
ningan@ubuntu:~/docker/docker-compose$ cd nginx/conf.d
ningan@ubuntu:~/docker/docker-compose/nginx/conf.d$ 
ningan@ubuntu:~/docker/docker-compose/nginx/conf.d$ vim itheima.conf
ningan@ubuntu:~/docker/docker-compose/nginx/conf.d$ 
ningan@ubuntu:~/docker/docker-compose/nginx/conf.d$ cd ../..
ningan@ubuntu:~/docker/docker-compose$ 
ningan@ubuntu:~/docker/docker-compose$ ll
total 16
drwxr-xr-x 3 ningan ningan 4096 Dec 18 07:23 ./
drwxr-xr-x 4 ningan ningan 4096 Dec 18 07:22 ../
-rw-r--r-- 1 ningan ningan  190 Dec 18 07:23 docker-compose.yml
drwxr-xr-x 3 ningan ningan 4096 Dec 18 07:23 nginx/
ningan@ubuntu:~/docker/docker-compose$ 
ningan@ubuntu:~/docker/docker-compose$ docker-compose up
Creating network "docker-compose_default" with the default driver
Pulling nginx (nginx:)...
ERROR: Head https://registry-1.docker.io/v2/library/nginx/manifests/latest: Get https://auth.docker.io/token?scope=repository%3Alibrary%2Fnginx%3Apull&service=registry.docker.io: net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)
ningan@ubuntu:~/docker/docker-compose$ 
ningan@ubuntu:~/docker/docker-compose$ docker pull nginx
... 下载太慢了 没有办法只好换源了
 

# 终端2
ningan@ubuntu:~$ sudo vim /etc/docker/daemon.json

文件中写入:
{
    
“registry-mirrors”:[“https://docker.mirrors.ustc.edu.cn”]
}

ningan@ubuntu:~$ 
ningan@ubuntu:~$ systemctl daemon-reload 
ningan@ubuntu:~$ systemctl restart docker
ningan@ubuntu:~$ 
ningan@ubuntu:~$ 
ningan@ubuntu:~$ docker pull nginx   # 下载很快了
Using default tag: latest
Error response from daemon: Get https://registry-1.docker.io/v2/: net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)
ningan@ubuntu:~$ 
ningan@ubuntu:~$ 
ningan@ubuntu:~$ docker pull nginx
Using default tag: latest
latest: Pulling from library/nginx
6ec7b7d162b2: Pull complete 
cb420a90068e: Pull complete 
2766c0bf2b07: Pull complete 
e05167b6a99d: Pull complete 
70ac9d795e79: Pull complete 
Digest: sha256:4cf620a5c81390ee209398ecc18e5fb9dd0f5155cd82adcbae532fec94006fb9
Status: Downloaded newer image for nginx:latest
docker.io/library/nginx:latest
ningan@ubuntu:~$ 


# 终端1
ningan@ubuntu:~/docker/docker-compose$ docker-compose up


可以看到,springboot已经启动了
在这里插入图片描述

浏览器通过nginx的80端口反向代理来访问app容器里面的项目,成功!
在这里插入图片描述

Docker 私有仓库

一、私有仓库搭建

# 1、拉取私有仓库镜像 
docker pull registry
# 2、启动私有仓库容器 
docker run -id --name=registry -p 5000:5000 registry
# 3、打开浏览器 输入地址http://私有仓库服务器ip:5000/v2/_catalog,看到{"repositories":[]} 表示私有仓库 搭建成功
# 4、修改daemon.json   
vim /etc/docker/daemon.json    
# 在上述文件中添加一个key,保存退出。此步用于让 docker 信任私有仓库地址;注意将私有仓库服务器ip修改为自己私有仓库服务器真实ip 
{
    "insecure-registries":["私有仓库服务器ip:5000"]} 
# 5、重启docker 服务 
systemctl restart docker
docker start registry

二、将镜像上传至私有仓库

# 1、标记镜像为私有仓库的镜像     
docker tag centos:7 私有仓库服务器IP:5000/centos:7
 
# 2、上传标记的镜像     
docker push 私有仓库服务器IP:5000/centos:7

三、 从私有仓库拉取镜像

#拉取镜像 
docker pull 私有仓库服务器ip:5000/centos:7

演示如下:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
成功!

docker容器虚拟化 与 传统虚拟机比较

在这里插入图片描述
在这里插入图片描述

说明:本博客中的内容大部分来源于 该网站 的课程ppt,主要作为自己学习的笔记使用!

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_42072280/article/details/111245340

智能推荐

两位概率论顶级专家获得2020阿贝尔奖-程序员宅基地

文章浏览阅读657次。来源:哆嗒数学网弗斯滕伯格介绍当希勒尔·弗斯滕伯格(Hillel Furstenberg) 发表其早期的一篇论文时,有传言说他并非一个人,而是一群数学家..._概率统计专家

github 删除远程仓库_github删除远程仓库-程序员宅基地

文章浏览阅读3k次。github 删除远程仓库1.点击settings2.打开页面3.下拉至页面最下方即可看到4.点击Delete this repository1.点击settings2.打开页面3.下拉至页面最下方即可看到4.点击Delete this repository如此即可删除远程仓库..._github删除远程仓库

检查asp.net,java驰骋工作流引擎组织结构集成是否成功的sql工具-程序员宅基地

文章浏览阅读295次。检查asp.net,java驰骋工作流引擎组织结构集成是否成功的sql工具把以下内容贴入到您的sql查询工具里,如果能够查询出数据就说明您没有集成成功。/* 用来检查您的数据偶合是否出现问题,如果没有查询到任何数据,就有可能您配置成功了。 已经完全的把组织结构耦合到ccflow里面了.*/-- 检查人员中的部门是否对应的上。SELECT * FRO...

GDI与OpenGL与DirectX之间的区别_opengl和gdi区别-程序员宅基地

文章浏览阅读1.8w次。GDI,图形设备接口,MS开发的通用的windows系统图形编程接口,功能强涉及面广,一般的编程都用它。但是用来做多媒体开发就差强人意了OPENGL是SGI开发的一套三维图形软件包,出现很早,功能超强,且接口简洁,运算效率绘图效果极高,早期大都用在科研部门,运行在高性能计算机上。学术性较强,科研部门用的才多。曲高和寡,被DX抢了市场DX,MS开发的三维绘图软件包,(里面也包括了,语音鼠标键_opengl和gdi区别

【error】非root用户解决/usr/bin/ld: cannot find -lxx缺失库函数安装_/usr/bin/ld: cannot find -l*-程序员宅基地

文章浏览阅读4.3k次。错误前提:安装caffe, make时报错,是依赖项的问题。一. 出现/usr/bin/ld: cannot find -lxxx错误的三种原因1 系统没有安装相对应的lib2 相对应的lib版本不对3 lib(.so档)的symbolic link 不正确,没有连结到正确的函式库文件(.so)(参考http://blog.sina.com.cn/s/blog_4156950c010..._/usr/bin/ld: cannot find -l*

C++面试题_boost面试题-程序员宅基地

文章浏览阅读657次。C++面试题C++音视频开发技能要求:Socket,MFC,WindowsC++ 笔试题面试C++ 技术面试2C++面试3Qt C++面试4C++面试5C++面试6C++音视频开发技能要求:Socket,MFC,Windows岗位职责:1、参与需求分析、模块开发等相关工作;2、在windows平台下进行C/C++应用程序设计、开发、测试;3、参与软件系统或模块的联调,协助测试人员进行软件测试,修复BUG;4、参与编写相关技术文档。任职要求:(1)统招本科及以上毕业,计算机相关专业毕业,3_boost面试题

随便推点

node项目部署以及搭建nginx服务器_node nginx-程序员宅基地

文章浏览阅读4.4k次,点赞2次,收藏19次。因为阿里云的服务器就要到期,所以就需要重新购买服务器,考虑到服务器续费有点贵而又赶上腾讯云在搞周年庆的活动,所以这次就购买了腾讯云的服务器,也因为更换了服务器,所以就得重新部署博客项目想查看更多文章,请访问:深的个人博客博客项目技术栈前端vue全家桶axioselementUIvue-socket.ioecharts后端node (koa2)socket.io数据库mongodb服务器nginx上线流程服务器购买,域名购买,域名备案,公安备案购买服务器的流_node nginx

写一个“特殊”的查询构造器 - (前言)-程序员宅基地

文章浏览阅读65次。文章目录写一个“特殊”的查询构造器 - (前言)写一个“特殊”的查询构造器 - (一、程序结构,基础封装)写一个“特殊”的查询构造器 - (二、第一条语句)写一个“特殊”的查询构造器 - (三、条件查询)写一个“特殊”的查询构造器 - (四、条件查询:复杂条件)写一个“特殊”的查询构造器 - (五、聚合函数、分组、排序、分页)..._codeigniter3 查询构造器执行原生sql语句

甲方乙方-程序员宅基地

文章浏览阅读285次。还曾记得上一次写博客已经是八九年前,那时候凭借着自己刚合格的高中语文水平以及一股满腔的热血写了好多不着边的东西。那为何现在又要重新拾起笔头呢?作为一个从业IT将近十年,算是有一定经验的行业人员。回首往事,自己的成长之路居然没有留下那么一丁点的笔墨。如果哪天记忆力衰退,估计那些脚印也就一并随风而去了……作为一个甲乙方都瞎混过的IT工程师,我有过许许多多不同的体会。因此与其他的I..._信息安全管理甲方乙方

ROS学习笔记(一)_base path: /home/huangl/test_ws source space: /hom-程序员宅基地

文章浏览阅读388次。创建工作空间安装完Ubuntu16.04还有ROS之后,这里注意Ubuntu必须更新到最新版本才能正常安装,在这吃了血亏了。弄好之后初始化还有配置下环境就可以开始使用了。 第一件事就是用catkin(不用管这个是啥之后就知道了,现在就当命令行用,其实是一个ROS原生Build System)创建一个ROS_WorkSpace:_base path: /home/huangl/test_ws source space: /home/huangl/test_ws/src build

hibernate save,update,saveorupdate方法有什么区别-程序员宅基地

文章浏览阅读58次。save肯定是添加的时候用,update修改时候用,saveorupdate是添加或修改,如果真是这样save和update的存在就没意义了,我们直接saveorupdate就行了。save在添加用的时候 不会出现索引机制(即遍历目录 效率最高)update在修改时候要遍历 不存在则会异常saveorupdate是优先遍历 如果不存在则创建(效率最低)merge和saveOrUpdat...

什么是动态规划?动态规划的意义是什么?_动态规划研究方向前景怎么样-程序员宅基地

文章浏览阅读2.6k次,点赞17次,收藏27次。0. intro  很有意思的问题。以往见过许多教材,对动态规划(DP)的引入属于“奉天承运,皇帝诏曰”式:不给出一点引入,见面即拿出一大堆公式吓人;学生则死啃书本,然后突然顿悟。针对入门者的教材不应该是这样的。现在,我们试着自己来一步步“重新发明”DP。1.从一个生活问题谈起  先来看看生活中经常遇到的事吧——假设您是个土豪,身上带了足够的1、5、10、20、50、100元面值的钞票。现..._动态规划研究方向前景怎么样

推荐文章

热门文章

相关标签