Dokcer使用&实战

305 阅读1分钟

使用

初始化

在Windows7 x64上初始化

下载

安装Docker

默认请全部勾选。

  • 如果已经安装过git可不安装,不过会导致Docker Quickstart Terminal打不开,需要右击编辑属性,修改快捷方式中的git地址。
  • 如果出现Failed to instantiate CLSID_VirtualBox w/ IVirtualBox, CLSID_VirtualBox w/ IUnknown works.错误,需要修改注册表。需要将HKEY_CLASSES_ROOT\CLSID\{00020420-0000-0000-C000-000000000046}\InprocServer32HKEY_CLASSES_ROOT\CLSID\{00020424-0000-0000-C000-000000000046}\InprocServer32的默认值修改为C:\Windows\system32\oleaut32.dll

安装完成后,请打开Docker Quickstart Terminal输入docker,查看docker是否安装成功。

创建虚拟机

  1. 打开Docker Quickstart Terminal
  2. 运行docker-machine create --driver virtualbox [虚拟机名称]命令,创建虚拟机
  3. 运行docker-machine env [虚拟机名称]命令,使虚拟机与docker-machine关联(PS: 每次重启虚拟机都需要执行该命令)
  4. 执行第3步后,执行Run this command to configure your shell:指示的命令,例如我的是:eval $("C:\Program Files\Docker Toolbox\docker-machine.exe" env mpos)(PS: 每次执行第3步都需要执行该命令)
  5. 运行docker-machine ls命令,查看当前的所有虚拟机以及运行状态
  6. 运行docker-machine ssh [虚拟机名称]命令,进入虚拟机

修改docker源

  1. 打开Docker Quickstart Terminal
  2. 运行docker-machine ssh [虚拟机名称]命令进入虚拟机
  3. 运行sudo vi /var/lib/boot2docker/profile命令编辑profile文件,并点击i按钮进入编辑模式,接着在--label provider=virtualbox的下一行添加--registry-mirror https://registry.docker-cn.com,然后点击Esc按钮退出编辑模式,最后输入:wq保存文件并退出
  4. 运行sudo /etc/init.d/docker restart命令重启docker服务,或者也可以输入exit命令退出虚拟机,然后运行docker-machine restart [虚拟机名称]命令重启docker虚拟机
  5. 运行docker info命令,查看Registry Mirrors是否变更

在CentOS7上初始化

安装Docker

参考地址:docs.docker.com/install/lin…

  1. Uninstall old versions

    $ sudo yum remove docker \
                    docker-client \
                    docker-client-latest \
                    docker-common \
                    docker-latest \
                    docker-latest-logrotate \
                    docker-logrotate \
                    docker-engine
  2. Install required packages

    $ sudo yum install -y yum-utils \
    device-mapper-persistent-data \
    lvm2
  3. set up the stable repository

    $ sudo yum-config-manager \
      --add-repo \
      https://download.docker.com/linux/centos/docker-ce.repo
  4. Install the latest version of Docker CE

    $ sudo yum install docker-ce
  5. Start Docker

    $ sudo systemctl start docker
  6. Verify that docker is installed correctly by running the hello-world image.

    $ sudo docker run hello-world

修改docker源

  1. 运行cd /etc/docker/命令,进入指定文件夹
  2. 运行sudo touch daemon.json命令,创建指定文件
  3. 运行sudo vi daemon.json命令编辑指定文件,并点击i按钮进入编辑模式,接着输入

    {
      "registry-mirrors": ["https://registry.docker-cn.com"]
    }

    ,然后点击Esc按钮退出编辑模式,最后输入:wq保存文件并退出

  4. 运行sudo systemctl daemon-reload命令
  5. 运行sudo systemctl restart docker命令,重启docker
  6. 运行docker info命令,查看Registry Mirrors是否变更

常用命令

docker-machine

docker-machine create --driver virtualbox [虚拟机名称] # 创建docker虚拟机
docker-machine env [虚拟机名称] # 虚拟机与docker-machine关联
docker-machine ls # 查看当前的所有虚拟机以及运行状态
docker-machine ssh [虚拟机名称] # 进入虚拟机
docker-machine rm [虚拟机名称] # 删除虚拟机
docker-machine start [虚拟机名称] # 启动虚拟机
docker-machine stop [虚拟机名称] # 停止虚拟机
docker-machine restart [虚拟机名称] # 重启虚拟机
docker-machine status [虚拟机名称] # 查看虚拟机状态
docker-machine url [虚拟机名称] # 查看虚拟机地址

docker

docker version # 查看docker版本
docker info # 查看docker系统信息

docker search [镜像名称] # 从hub.docker.com上搜索镜像
docker rmi [镜像名称] # 删除一个或多个镜像

docker ps # 查看正在运行的容器
docker ps -a # 查看的容器
docker cp 源路径 [容器名名称或ID]:目标路径 # 将主机的目录或文件拷贝到容器的目标路径下
docker cp [容器名名称或ID]:源路径 目标路径 # 将容器的目录或文件拷贝到主机的目标路径下
docker rm [容器名称或ID] # 删除一个或多个容器
docker start [容器名称或ID] # 启动一个或多个已经停止的容器
docker stop [容器名称或ID] # 停止一个或多个正在运行的容器
docker restart [容器名称或ID] # 重启一个或多个容器
docker run [容器名名称或ID] # 在新容器中运行命令,默认执行命令/bin/bash
docker pull [remoteURL]:[imageTag] # 拉取提交的容器,eg:docker pull electronuserland/builder:wine

重要链接

实战

Build Electron App using Docker on a Local Machine

  • 如果Local Machine是Windows7 x64,需执行1~5步
  • 如果Local Machine是CentOS7,仅需执行3~5步
  1. 打开Docker Quickstart Terminal
  2. 运行docker-machine ssh [虚拟机名称]命令进入虚拟机
  3. 运行docker pull electronuserland/builder:wine命令下载打包环境
  4. 修改工程文件夹下的.travis.yml文件内容为raw.githubusercontent.com/fengqingxiu…
  5. 进入工程文件夹,然后运行

    docker run --rm -ti \
     --env-file <(env | grep -iE 'DEBUG|NODE_|ELECTRON_|YARN_|NPM_|CI|CIRCLE|TRAVIS_TAG|TRAVIS|TRAVIS_REPO_|TRAVIS_BUILD_|TRAVIS_BRANCH|TRAVIS_PULL_REQUEST_|APPVEYOR_|CSC_|GH_|GITHUB_|BT_|AWS_|STRIP|BUILD_') \
     --env ELECTRON_CACHE="/root/.cache/electron" \
     --env ELECTRON_BUILDER_CACHE="/root/.cache/electron-builder" \
     -v ${PWD}:/project \
     -v ${PWD##*/}-node-modules:/project/node_modules \
     -v ~/.cache/electron:/root/.cache/electron \
     -v ~/.cache/electron-builder:/root/.cache/electron-builder \
     electronuserland/builder:wine

    命令启动docker容器,最后运行yarn run build:clean && yarn run pack && yarn run build -w命令生成exe包