主頁 >  其他 > Docker基礎認識,鏡像、容器操作及鏡像的制作

Docker基礎認識,鏡像、容器操作及鏡像的制作

2020-11-12 08:18:17 其他

  • 一、了解虛擬機和容器的區別
  • 二、Docker概述
  • 三、安裝Docker
    • 1.安裝依賴包
    • 2.設定阿里鏡像源
    • 3.安裝Docker-CE
  • 四、docker常規操作
    • 1.鏡像加速(提高鏡像下載速度)
    • 2.優化網路
    • 3.鏡像操作
    • 4.容器操作
    • 5.容器的批量處理
    • 6.docker0網卡分析
  • 五、創建Docker鏡像
    • 1.Docker鏡像
    • 2.Docker鏡像的創建方法
    • 3.基于已有鏡像創建鏡像
    • 4.基于本地模板創建
    • 5.基于Dockerfile創建鏡像

一、了解虛擬機和容器的區別

虛擬機的構成:

  1. 虛擬硬體(CPU、記憶體、磁盤、網路)
  2. 鏡像(安裝系統)
    在這里插入圖片描述

容器的構成:
3. 行程,可以通過殺死和開啟行程來控制容器
4. 容器可以理解成一種環境,可以運行一種服務,也可以運行一種系統

虛擬技術兩大生態圈:

  1. OpenStack ----虛擬機
  2. Kubernetes ----容器

虛擬機和容器的區別:

虛擬機容器
資源占用資源占用多資源占用少
啟動時間30~60秒毫秒級別
安全性系統隔離,安全性高內核共享,安全性低
彈性擴展執行時間長(虛擬機創建后還需要再安裝系統)執行時間短(容器直接再開一個行程)

二、Docker概述

Docker核心概念

  • 鏡像
    ◆ 一個面向Docker容器引擎的只讀模板
  • 容器
    ◆ 從鏡像創建的運行實體
  • 倉庫
    ◆集中保存鏡像的地方
    在這里插入圖片描述

Docker是什么?

  • 是一種輕量級的“虛擬機”
  • 在Linux容器里運行應用的開源工具

Docker的使用場景:

  • 打包應用程式簡化部署
  • 可脫離底層硬體任意遷移
    ● 例:服務器從騰訊云遷移到阿里云

CentOS安裝Docker的兩種方式:

  • 使用CURL獲得Docker的安裝腳本進行安裝
  • 使用YUM倉庫來安裝Docker

三、安裝Docker

1.安裝依賴包

[root@localhost ~]# yum -y install yum-utils device-mapper-persistent-data lvm2
#yum-utils 提供了yum-config-manager程式命令(后面用來添加docker的鏡像源)
#device mapper 存盤驅動程式需要device-mapper-persistent-data  lvm2 邏輯卷,它為實作用于存盤資源管理的快設備驅動提供了一個高度模塊化的內核架構

2.設定阿里鏡像源

[root@localhost ~]# yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
[root@localhost ~]# cd /etc/yum.repos.d/
[root@localhost yum.repos.d]# ls   ##多出了docker-ce的yum庫
CentOS-Base.repo  CentOS-Debuginfo.repo  CentOS-Media.repo    CentOS-Vault.repo
CentOS-CR.repo    CentOS-fasttrack.repo  CentOS-Sources.repo    *docker-ce.repo*

3.安裝Docker-CE

[root@localhost ~]# yum install -y docker-ce    ##安裝docker-ce

[root@localhost ~]# systemctl start docker

[root@localhost ~]# systemctl status docker
 docker.service - Docker Application Container Engine
   Loaded: loaded (/usr/lib/systemd/system/docker.service; disabled; vendor preset: disabled)
   Active: active (running) since Mon 2020-11-09 22:40:26 CST; 9s ago
     Docs: https://docs.docker.com
 Main PID: 2073 (dockerd)
   Memory: 41.9M

四、docker常規操作

1.鏡像加速(提高鏡像下載速度)

阿里云提供免費的鏡像加速服務,在阿里云官網注冊阿里賬號后可以領取加速地址
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述

2.優化網路

[root@localhost docker]# vi /etc/sysctl.conf     
net.ipv4.ip_forward = 1     ##開啟路由轉發功能

[root@localhost docker]# sysctl -p
net.ipv4.ip_forward = 1

[root@localhost docker]# systemctl restart network
[root@localhost docker]# systemctl restart docker

[root@localhost docker]# docker version    ##查看版本資訊
Client: Docker Engine - Community
 Version:           19.03.13
 API version:       1.40
 Go version:        go1.13.15
 Git commit:        4484c46d9d
 Built:             Wed Sep 16 17:03:45 2020
 OS/Arch:           linux/amd64
 Experimental:      false
……省略部分

3.鏡像操作

[root@localhost ~]# docker search nginx    ##查找上架的鏡像,查找出的鏡像會根據星級熱度(STARS)進行排名,下載次數越多,熱度越高
NAME                               DESCRIPTION                                     STARS               OFFICIAL            AUTOMATED
nginx                              Official build of Nginx.                        13981               [OK]                
jwilder/nginx-proxy                Automated Nginx reverse proxy for docker con…   1906                                    [OK]
richarvey/nginx-php-fpm            Container running Nginx + PHP-FPM capable of…   791                                     [OK]
linuxserver/nginx                  An Nginx container, brought to you by LinuxS…   128                                     
jc21/nginx-proxy-manager           Docker container for managing Nginx proxy ho…   109                                     
tiangolo/nginx-rtmp                Docker image with Nginx using the nginx-rtmp…   103                                     [OK]
bitnami/nginx                      Bitnami nginx Docker Image                      90                                      [OK]
alfg/nginx-rtmp                    NGINX, nginx-rtmp-module and FFmpeg from sou…   80                                      [OK]
jlesage/nginx-proxy-manager        Docker container for Nginx Proxy Manager        66                                      [OK]


[root@localhost ~]# docker pull nginx    ##下載nginx鏡像,結合pull選項,
Using default tag: latest
……省略部分
1966ea362d23: Pull complete 
Digest: sha256:aeade65e99e5d5e7ce162833636f692354c227ff438556e5f3ed0335b7cc2f1b
Status: Downloaded newer image for nginx:latest
docker.io/library/nginx:latest

[root@localhost ~]# cd /var/lib/docker/image/overlay2/    鏡像資訊存在/var/lib/docker/image/overlay2/repositories.json 檔案中
[root@localhost overlay2]# ls
distribution  imagedb  layerdb  repositories.json
[root@localhost overlay2]# cat repositories.json      
{"Repositories":{"nginx":{"nginx:latest":"sha256:c39a868aad02a383c7e490e0fc4a5b0217f667f2de764bc2755e315a5adf64a1","nginx@sha256:aeade65e99e5d5e7ce162833636f692354c227ff438556e5f3ed0335b7cc2f1b":"sha256:c39a868aad02a383c7e490e0fc4a5b0217f667f2de764bc2755e315a5adf64a1"}}

[root@localhost ~]# docker images    ##鏡像串列中有nginx鏡像
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
nginx               latest              c39a868aad02        4 days ago          133MB

[root@localhost overlay2]# docker inspect c39a868aad02    ##docker inspect 鏡像ID,可以查看鏡像的詳細資訊
[
    {
        "Id": "sha256:c39a868aad02a383c7e490e0fc4a5b0217f667f2de764bc2755e315a5adf64a1",
        "RepoTags": [
            "nginx:latest"
        ],
        "RepoDigests": [
            "nginx@sha256:aeade65e99e5d5e7ce162833636f692354c227ff438556e5f3ed0335b7cc2f1b"
        ],
        "Parent": "",
        "Comment": "",
        "Created": "2020-11-05T18:21:10.923474978Z",
        "Container": "16434ccbe2eab08b0e7e63149c390b8a346c8cf92899ba6063c1b2653628f3c1",
        "ContainerConfig": {
            "Hostname": "16434ccbe2ea",

添加鏡像標簽(相當于添加別名,鏡像ID不變)

[root@localhost ~]# docker images    ##查看鏡像串列
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
nginx               latest              c39a868aad02        4 days ago          133MB
[root@localhost ~]# docker tag nginx:latest nginx:new   ##修改nginx鏡像標簽latest為new
[root@localhost ~]# docker images    ##再次查看鏡像串列,多出了一個鏡像名
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
nginx               latest              c39a868aad02        4 days ago          133MB
nginx               new                 c39a868aad02        4 days ago          133MB

鏡像洗掉(兩種方式:1.基于"鏡像名:標簽"洗掉,2.基于鏡像ID洗掉)

格式:docker rmi 鏡像ID或者鏡像名

[root@localhost ~]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
nginx               latest              c39a868aad02        4 days ago          133MB
nginx               new                 c39a868aad02        4 days ago          133MB

[root@localhost ~]# docker rmi c39a868aad02     #0#'當該鏡像ID存在多個鏡像名時,是無法使用鏡像ID洗掉鏡像的,會報如下錯誤'
Error response from daemon: conflict: unable to delete c39a868aad02 (must be forced) - image is referenced in multiple repositories
[root@localhost ~]# docker rmi nginx:latest     #0# 結合rmi,洗掉標簽為latest的鏡像
Untagged: nginx:latest
[root@localhost ~]# docker images   #0#查看鏡像串列,洗掉成功
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
nginx               latest              c39a868aad02        4 days ago          133MB
nginx               new                 c39a868aad02        4 days ago          133MB

[root@localhost ~]# docker rmi c39a868aad02    ## 當該鏡像只有一個映射關系時(即只有一個鏡像名),兩種方法都可以洗掉鏡像
Untagged: nginx:new
Untagged: nginx@sha256:aeade65e99e5d5e7ce162833636f692354c227ff438556e5f3ed0335b7cc2f1b
Deleted: sha256:c39a868aad02a383c7e490e0fc4a5b0217f667f2de764bc2755e315a5adf64a1
Deleted: sha256:1af47386c12cb24b362bd785e71058ab675fbdcbda8e7a7ba0dd10c3cff75a2a
Deleted: sha256:25ee02f9e42f8cdca7ca8bc522cb69ac4a86a55401818a13c7a01e52a81894fe
Deleted: sha256:b1d2bc3292aa3d64794f99d2885d35b454993b4af24ad350a969d27925db7ebb
Deleted: sha256:4216e20d59f9fc90bccdd14493452532806d4803a25514366de2a9c5560624d0
Deleted: sha256:d0fe97fa8b8cefdffcef1d62b65aba51a6c87b6679628a2b50fc6a7a579f764c
[root@localhost ~]# docker images    #0#再次查看鏡像串列,洗掉成功
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE

保存鏡像到檔案中

[root@localhost ~]# docker pull nginx     #0#重新下載nginx鏡像

[root@localhost ~]# docker images     #0#查看鏡像串列
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
nginx               latest              c39a868aad02        4 days ago          133MB
[root@localhost ~]#docker save -o /opt/nginx.img nginx:latest      ##save表示保存,-o指輸出到檔案中,將nginx:latest鏡像保存到/opt/nginx.img檔案中
[root@localhost ~]# ls -lh  /opt/     #0#看到新生成的鏡像檔案
total 131M
drwx--x--x  4 root root   28 Nov  9 22:40 containerd
-rw-------  1 root root 131M Nov 10 03:05 nginx.img     #0#檔案被進行了微壓縮
drwxrwxr-x  6 root root  334 Oct 27 14:49 redis-5.0.10
drwxr-xr-x. 2 root root    6 Mar 26  2015 rh

將匯出的鏡像檔案中的鏡像匯入到鏡像串列(有兩種方式匯入)

[root@localhost ~]#  docker images    #0#查看鏡像串列
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
nginx               latest              c39a868aad02        4 days ago          133MB
[root@localhost ~]# docker rmi nginx:latest     #0#洗掉鏡像
[root@localhost ~]#  docker images    #0#串列為空
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE

//方式一:load <

[root@localhost ~]# docker load </opt/nginx.img      #0#匯入到鏡像串列
d0fe97fa8b8c: Loading layer [==================================================>]  72.49MB/72.49MB
2baf69a23d7a: Loading layer [==================================================>]  64.54MB/64.54MB
2f57e21e4365: Loading layer [==================================================>]  3.072kB/3.072kB
aee208b6ccfb: Loading layer [==================================================>]  4.096kB/4.096kB
7b5417cae114: Loading layer [==================================================>]  3.584kB/3.584kB
Loaded image: nginx:latest
[root@localhost ~]# docker images    #0#查看串列,鏡像成功匯入回來
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
nginx               latest              c39a868aad02        4 days ago          133MB
[root@localhost ~]# docker rmi nginx:latest     #0#再次洗掉鏡像

//方法二:load -i

[root@localhost ~]# docker load -i /opt/nginx.img 
d0fe97fa8b8c: Loading layer [==================================================>]  72.49MB/72.49MB
2baf69a23d7a: Loading layer [==================================================>]  64.54MB/64.54MB
2f57e21e4365: Loading layer [==================================================>]  3.072kB/3.072kB
aee208b6ccfb: Loading layer [==================================================>]  4.096kB/4.096kB
7b5417cae114: Loading layer [==================================================>]  3.584kB/3.584kB
Loaded image: nginx:latest
[root@localhost ~]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
nginx               latest              c39a868aad02        4 days ago          133MB

4.容器操作

創建容器

格式:docker create -it 鏡像 /bin/bash

[root@localhost ~]# docker ps -a    #0#查看所有容器,現在為空
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
[root@localhost ~]# docker create -it nginx:latest /bin/bash    #0#創建容器,后面加上/bin/bash提供bash環境,方便下次進入容器中進行操作
fc33df602e20f90b62e39690978c1f648bed3c6167e15facbed96bd36a8e1295
[root@localhost ~]# docker ps -a     #0#再次查看,有一個新的容器
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS               NAMES
fc33df602e20        nginx:latest        "/docker-entrypoint.…"   3 seconds ago       Created                                 friendly_zhukovsky

[root@localhost ~]# docker ps -a    #0#此時狀態是被創建狀態,還未啟動
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS               NAMES
fc33df602e20        nginx:latest        "/docker-entrypoint.…"   6 minutes ago       Created                                 friendly_zhukovsky

啟動容器

格式:docker start 容器ID

[root@localhost ~]# docker start fc33df602e20   #0#“docker start 容器ID”命令來啟動容器,開啟后位“UP”狀態
fc33df602e20
[root@localhost ~]# docker ps -a     #0#容器啟動成功,為Up狀態,并且開通了80容器埠
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS               NAMES
fc33df602e20        nginx:latest        "/docker-entrypoint.…"   13 minutes ago      Up About a minute   80/tcp              friendly_zhukovsky

關閉容器

格式:docker stop 容器ID

處于up狀態的容器會一直占用資源,可以利用stop關閉容器,需要時在開啟

[root@localhost ~]# docker stop fc33df602e20      #0#結合stop命令關閉容器
fc33df602e20
[root@localhost ~]# docker ps -a
CONTAINER ID        IMAGE               COMMAND                  CREATED             
fc33df602e20        nginx:latest        "/docker-entrypoint.…"   2 hours ago         Exited (0) 2 seconds ago                       friendly_zhukovsky

洗掉容器

格式:docker rm 容器ID

注意:

  1. 當鏡像存在于容器中時,是無法被洗掉的(無論容器處于任何狀態),只有先洗掉容器,才能洗掉對應的鏡像
  2. 運行中的容器無法被洗掉,必須先停止
[root@localhost ~]# docker images    #0#查看鏡像
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
nginx               latest              c39a868aad02        4 days ago          133MB
centos              7                   7e6257c9f8d8        3 months ago        203MB
[root@localhost ~]# docker ps -a    #0#查看容器
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS               NAMES
a66dfe602b99        centos:7            "/bin/bash"              19 minutes ago      Up 17 minutes                           clever_mestorf
fc33df602e20        nginx:latest        "/docker-entrypoint.…"   2 hours ago         Up About an hour    80/tcp              friendly_zhukovsky
[root@localhost ~]# docker rmi centos:7    ##鏡像存在于容器中時洗掉會報錯
Error response from daemon: conflict: unable to remove repository reference "centos:7" (must force) - container a66dfe602b99 is using its referenced image 7e6257c9f8d8
[root@localhost ~]# docker stop a66dfe602b99   ##停止容器
a66dfe602b99
[root@localhost ~]# docker rmi centos:7     ##再次洗掉還是會報同樣的錯誤
Error response from daemon: conflict: unable to remove repository reference "centos:7" (must force) - container a66dfe602b99 is using its referenced image 7e6257c9f8d8
[root@localhost ~]# docker rm a66dfe602b99    #0#先洗掉容器
a66dfe602b99
[root@localhost ~]# docker rmi centos:7     ##之后洗掉鏡像,就能成功洗掉了
Untagged: centos:7
Untagged: centos@sha256:19a79828ca2e505eaee0ff38c2f3fd9901f4826737295157cc5212b7a372cd2b
Deleted: sha256:7e6257c9f8d8d4cdff5e155f196d67150b871bbe8c02761026f803a704acb3e9
Deleted: sha256:613be09ab3c0860a5216936f412f09927947012f86bfa89b263dfa087a725f81

[root@localhost ~]# docker ps -a
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS               NAMES
fc33df602e20        nginx:latest        "/docker-entrypoint.…"   2 hours ago         Up 1 second         80/tcp              friendly_zhukovsky
[root@localhost ~]# docker rm fc33df602e20     #0#洗掉運行中的容器會報錯
Error response from daemon: You cannot remove a running container fc33df602e20f90b62e39690978c1f648bed3c6167e15facbed96bd36a8e1295. Stop the container before attempting removal or force remove

docker run執行指令后直接關閉容器(-c:指定指令)

  • docker run結合-c指令,會自動檢查鏡像,沒有就創建,有就繼續創建容器,并執行-c指定的指令,執行完畢后關閉容器(相當于完成了鏡像下載,容器創建,開啟容器并執行指令,關閉容器這幾個步驟的集合)
  • 執行完指令就釋放資源
  • 適用于并發式的計算,資料分析,資料篩查,資料過濾
[root@localhost ~]# docker run centos:7 /bin/bash -c ls /         ##docker run自動識別鏡像和容器(無則創建)并執行指令
Unable to find image 'centos:7' locally     ##先檢查是否有鏡像,沒有
7: Pulling from library/centos        ##下載鏡像
75f829a71a1c: Pull complete 
Digest: sha256:19a79828ca2e505eaee0ff38c2f3fd9901f4826737295157cc5212b7a372cd2b
Status: Downloaded newer image for centos:7
anaconda-post.log
bin                                 ##執行 ls / 查看根目錄的指令
dev
etc
……省略部分
[root@localhost ~]# docker ps -a    ##查看容器資訊,處于Exited狀態,且回傳值為0,執行完指令直接釋放資源
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                      PORTS               NAMES
b7f81177db4f        centos:7            "/bin/bash -c ls /"      3 minutes ago       Exited (0) 3 minutes ago                        nice_lederberg

docker run后 -c 指定一個while死回圈指令,可以實作后臺一直運行

[root@promote ~]# docker run centos:7 /bin/bash -c "while :;do echo hello && sleep 2;done"      #0#docker run -c 指定死回圈

[root@promote ~]# docker ps -a     ##查看容器狀態,一直處于up狀態,COMMAND指令死回圈,
CONTAINER ID        IMAGE               COMMAND                  CREATED              STATUS                          PORTS               NAMES
86c37e78a339        centos:7            "/bin/bash -c 'while…"   57 seconds ago       Up 56 seconds                                       charming_tu

docker stop 86c37e78a339     ##關閉容器,結束死回圈

[root@localhost ~]# docker exec 12ab522157ec /bin/bash     ##關閉的容器是無法進入的
Error response from daemon: Container 12ab522157ecb285d05284a4d54e8dd9e5896bab2fb1af9e730313fee35215d8 is not running

匯出容器到檔案(結合export選項)

格式:docker export 容器ID >檔案

  • 注意:處于Up狀態下的容器也是可以執行匯出操作的
[root@localhost ~]# docker ps -a      ##容器處于Up狀態
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS               NAMES
fc33df602e20        nginx:latest        "/docker-entrypoint.…"   3 hours ago         Up 1 second         80/tcp              friendly_zhukovsky

docker export fc33df602e20 >/opt/nginx-c.img     ##將容器匯出到/opt/nginx-c.img檔案中

[root@localhost ~]# ll -h /opt/nginx-c.img
-rw-r--r-- 1 root root 130M Nov 10 06:33 /opt/nginx-c.img

匯入容器(容器的匯入只會生成鏡像,而不會創建容器)

[root@localhost ~]# cat /opt/nginx-c.img |docker import - nginx:web
sha256:79222cd5cf4e7312fb660f9a5788e75e39fa83b2c71565b168f325d6db96b2d3
[root@localhost ~]# docker images   ##生成了新的鏡像
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
nginx               web                 79222cd5cf4e        3 minutes ago       131MB
nginx               latest              c39a868aad02        4 days ago          133MB
centos              7                   7e6257c9f8d8        3 months ago        203MB
[root@localhost ~]# docker ps -a   ##并沒有生成新的容器
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS               NAMES
fc33df602e20        nginx:latest        "/docker-entrypoint.…"   3 hours ago         Up 10 minutes       80/tcp              friendly_zhukovsky

5.容器的批量處理

批量洗掉容器

##首先多創建幾個容器
[root@localhost ~]# docker create -it nginx:web /bin/bash   
5394d441b796e35a5e6bacfe8a8cb0abb24e75170e2b6a7be2749a4bae4cabf5
[root@localhost ~]# docker create -it centos:7 /bin/bash
4d00a6509e24469f8206eed4cd8803461c1ef31353b543a6dd3ff5df6f8d6520
[root@localhost ~]# docker ps -a    #0#有三個容器
CONTAINER ID        IMAGE               COMMAND                  CREATED              STATUS              PORTS               NAMES
4d00a6509e24        centos:7            "/bin/bash"              About a minute ago   Created                                 gracious_rosalind
5394d441b796        nginx:web           "/bin/bash"              About a minute ago   Created                                 happy_hawking
fc33df602e20        nginx:latest        "/docker-entrypoint.…"   3 hours ago          Exited(0 14 minutes       80/tcp              friendly_zhukovsky
[root@localhost ~]# docker ps -a |awk 'NR!=1 {print "docker rm " $1}' |bash   ##批量洗掉容器
4d00a6509e24
5394d441b796
fc33df602e20
[root@localhost ~]# docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES

批量創建容器

[root@localhost ~]# docker images |awk 'NR!=1 {print "docker create -it " $3 " /bin/bash"}' |bash   ##過濾出鏡像ID并執行創建,實作批量創建
8c9a15a9d97ff593ae370468f04dd2e11f666df27ea130d6c5eabdb5c312eb7e
3ba2e19b89a07fa6f22cc63ab3fa0f3c8d60e54b9fbf4318e6a0c442c0ce4fac
c34d3e800e29eeab0d304cde07d2b2dd0903a4c9a8028afe08b819793fad2c96
[root@localhost ~]# docker ps -a    ##批量創建成功
CONTAINER ID        IMAGE               COMMAND                  CREATED              STATUS              PORTS               NAMES
c34d3e800e29        7e6257c9f8d8        "/bin/bash"              About a minute ago   Created                                 kind_jepsen
3ba2e19b89a0        c39a868aad02        "/docker-entrypoint.…"   About a minute ago   Created                                 flamboyant_herschel
8c9a15a9d97f        79222cd5cf4e        "/bin/bash"              About a minute ago   Created                                 laughing_bardeen

批量開啟容器

[root@localhost ~]# docker ps -a |awk 'NR!=1 {print "docker start " $1}' |bash    ##批量開啟
32c5a88d27af
3eb37149b0d7
4978744c8ca9
[root@localhost ~]# docker ps -a    ##up狀態,開啟成功
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS               NAMES
32c5a88d27af        7e6257c9f8d8        "/bin/bash"              21 seconds ago      Up 2 seconds                            sleepy_robinson
3eb37149b0d7        c39a868aad02        "/docker-entrypoint.…"   21 seconds ago      Up 1 second         80/tcp              focused_pasteur
4978744c8ca9        79222cd5cf4e        "/bin/bash"              21 seconds ago      Up 1 second                             zealous_hofstadter

批量停止容器

[root@localhost ~]# docker ps -a |awk 'NR!=1 {print "docker stop " $1}' |bash
32c5a88d27af
3eb37149b0d7
4978744c8ca9
[root@localhost ~]# docker ps -a   ##停止狀態
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                       PORTS               NAMES
32c5a88d27af        7e6257c9f8d8        "/bin/bash"              2 minutes ago       Exited (137) 2 seconds ago                       sleepy_robinson
3eb37149b0d7        c39a868aad02        "/docker-entrypoint.…"   2 minutes ago       Exited (0) 2 seconds ago                         focused_pasteur
4978744c8ca9        79222cd5cf4e        "/bin/bash"              2 minutes ago       Exited (0) 2 seconds ago                         zealous_hofstadter

6.docker0網卡分析

  • 當安裝了 decker-ce后,會自動生成一塊docker0的網卡,用于管理docker容器,成為類似于所有容器的網關,構建出一個局域網管理所有容器,
  • 也正因為這張網卡的出現,我們才需要開啟服務器的路由轉發及NAT功能,
[root@localhost ~]# ifconfig             #0#查看網卡資訊
docker0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 172.17.0.1  netmask 255.255.0.0  broadcast 172.17.255.255
        inet6 fe80::42:c7ff:fe94:64b3  prefixlen 64  scopeid 0x20<link>
        ether 02:42:c7:94:64:b3  txqueuelen 0  (Ethernet)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 16  bytes 1970 (1.9 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
        省略部分

在這里插入圖片描述

[root@localhost ~]# docker pull centos:7   ##下載CentOS7的鏡像
[root@localhost ~]# docker images     ##有CentOS7的鏡像
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
nginx               latest              c39a868aad02        4 days ago          133MB
centos              7                   7e6257c9f8d8        3 months ago        203MB
[root@localhost ~]# docker create -it centos:7 /bin/bash    ##生成鏡像為CentOS7的容器
a66dfe602b9951b918759af6167fbcf941c947ac80f3c71438a546352a3c165d
[root@localhost ~]# docker ps -a     #0#查看centos7容器的ID
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS               NAMES
a66dfe602b99        centos:7            "/bin/bash"              43 seconds ago      Created                                 clever_mestorf
fc33df602e20        nginx:latest        "/docker-entrypoint.…"   About an hour ago   Up About an hour    80/tcp              friendly_zhukovsky
[root@localhost ~]# docker start a66dfe602b99     #0#開啟容器
a66dfe602b99
[root@localhost ~]# docker ps -a      #0#up狀態,成功開啟
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS               NAMES
a66dfe602b99        centos:7            "/bin/bash"              3 minutes ago       Up 41 seconds                           clever_mestorf
fc33df602e20        nginx:latest        "/docker-entrypoint.…"   About an hour ago   Up About an hour    80/tcp              friendly_zhukovsky
[root@localhost ~]# docker exec -it a66dfe602b99 /bin/bash     ##進入容器
[root@a66dfe602b99 /]# 
[root@a66dfe602b99 /]# yum -y install net-tools     #0#下載的是最下內核鏡像,因此想要使用ifconfig,需要安裝net工具
[root@a66dfe602b99 /]# ifconfig    #0#查看容器ip,偽終端的本地ip為172.17.0.3
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 172.17.0.3  netmask 255.255.0.0  broadcast 172.17.255.255
        ether 02:42:ac:11:00:03  txqueuelen 0  (Ethernet)
        RX packets 4182  bytes 11991770 (11.4 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 3565  bytes 197037 (192.4 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        loop  txqueuelen 1  (Local Loopback)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
[root@a66dfe602b99 /]# route -n     #0#網關是docker0網卡地址
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         172.17.0.1      0.0.0.0         UG    0      0        0 eth0
172.17.0.0      0.0.0.0         255.255.0.0     U     0      0        0 eth0
[root@a66dfe602b99 /]# exit
exit

五、創建Docker鏡像

1.Docker鏡像

  • 應用發布的標準格式
  • 支撐一個Docker容器的運行

2.Docker鏡像的創建方法

  • 基于已有鏡像創建
  • 基于本地模板創建
  • 基于Dockerfile創建 (最為常用)

3.基于已有鏡像創建鏡像

基于已有鏡像創建

  • 將容器里面運行的程式及運行環境打包生成新的鏡像

格式:docker comnit [選項] 容器ID/名稱倉庫名稱:[標簽]
-m:說明資訊
-a:作者資訊
-p:生成程序中停止容器的運行

[root@localhost ~]# docker ps -a    ##有一個正在運行的容器
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
5772e1528cac        centos:7            "/bin/bash"         29 minutes ago      Up 29 minutes                           suspicious_pare
[root@localhost ~]# docker exec -ti 5772e1528cac /bin/bash
[root@5772e1528cac /]# echo "hello" >/opt/test.txt   #0#創建一個檔案,相當于對容器內鏡像進行了修改
[root@5772e1528cac /]# cat /opt/test.txt
hello
[root@5772e1528cac /]# exit   ##退出容器
exit
[root@localhost ~]# docker commit -m "new" -a "ltp" 5772e1528cac  centos:new   #0#創建修改后的新鏡像
sha256:e36096f9a92239753857cfb4c33c6d1347a389632a3f7a22cc9a420499632bcd
[root@localhost ~]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
centos              new                 e36096f9a922        8 seconds ago       203MB
nginx               web                 79222cd5cf4e        About an hour ago   131MB

4.基于本地模板創建

基于本地模板創建

  • 通過匯入作業系統模板檔案生成新的鏡像
  • 使用wget命令匯入為本地鏡像
    wget http://download.openvz.org/template/precreated-7.0-x86-minimal.tar.gz
  • 匯入成功后可查看本地鏡像資訊
    docker images lgrep new
[root@localhost ~]# wget http://download.openvz.org/template/precreated/debian-7.0-x86-minimal.tar.gz    ##下載鏡像模板
……省略部分
100%[============================================================================>] 88,436,521  2.43MB/s   in 37s    

[root@localhost ~]# ls
debian-7.0-x86-minimal.tar.gz  
[root@localhost ~]# cat debian-7.0-x86-minimal.tar.gz |docker import - debian:new   ##容器匯入的方式生成新鏡像
sha256:0e3a830144d7305d263d846fe1c596a8f4c2ea1d5ea0de0d2c6967af23c096e6
[root@localhost ~]# docker images    ##有新鏡像產生
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
debian              new                 0e3a830144d7        9 seconds ago       215MB

5.基于Dockerfile創建鏡像

基于Dockerfile創建

  1. Dockerfile是由一組指令組成的檔案Dockerfile結構四部分
    ● 基礎鏡像資訊
    ● 維護者資訊
    ● 鏡像操作指令
    ● 容器啟動時執行指令
  2. Dockerfile每行支持一條指令,每條指令可攜帶多個引數,支持使用以“#"號開頭的注釋
  3. 鏡像的分成

在這里插入圖片描述

  1. Dockerfile操作指令
指令含義
FROM 鏡像指定新鏡像所基于的鏡像,第一條指令必須為FROM指令,每創建一個鏡像就需要一條FROM指令,
MAINTAINER 名字說明新鏡像的維護人資訊
RUN 命令在所基于的鏡像上執行命令,并提交到新的鏡像中
CMD [“要運行的程式”,“引數1”,“引數2”]指令啟動容器時要運行的命令或者腳本,Dockerfile只能有一條CMD命令,如果指定多條則只能最后一條被執行(注意,就算指定多條也不會有報錯資訊,但是無效)
EXPOSE 埠號指定新鏡像加載到Docker時要開啟的埠(容器對外開放的埠)
ENV 環境變數 變數值設定一個環境變數的值,會被后面的RUN使用
ADD 源檔案/目錄 目標檔案/目錄將源檔案復制到目標檔案,源檔案要與Dockerfile位于相同目錄中,或者是一個URL(容器外的檔案拷貝到容器內)
COPY 源檔案/目錄 目標檔案/目錄將本地主機上的檔案/目錄復制到目標地點,源檔案/目錄要與Dockerfile在相同的目錄中(容器內部的拷貝)
VOLUME [“目錄”]在容器中創建一個掛載點,將容器中的目錄掛載到真機的目錄上(宿主機共享出一個目錄供容器使用)
USER 用戶名/UID指定運行容器時的用戶
WORKDIR 路徑為后續的RUN、CMD、ENTRYPOINT指定作業目錄(相當于容器內的cd,切換路徑)
ONBUILD 命令指定所生成的鏡像作為一個基礎鏡像時所要運行的命令
HEALTHCHECK健康檢查

[root@localhost ~]# mkdir apache     ##創建一個存放目錄
[root@localhost ~]# cd apache/
[root@localhost apache]# vim Dockerfile     #0#創建Dockerfile檔案,注意,一定要是這個檔案名,不能改
FROM centos:7    #基于的基礎鏡像
MAINTAINER The porject <cloud-ops@centos.org>    #0#維護鏡像的用戶資訊(自定義,可以不寫)
RUN yum -y update     #0#更新yum倉庫
RUN yum -y install httpd      #0#鏡像操作指令安裝apache軟體
EXPOSE 80   #開啟80
ADD index.html /var/www/html/index.html    #0#復制網站首頁檔案到容器/var/www/html/index.html
ADD run.sh /run.sh   #0#將執行腳本復制到鏡像中
RUN chmod 755 /run.sh    ##授予腳本執行權限
CMD ["/run.sh"]    #0#啟動容器時執行腳本
[root@localhost apache]# vim run.sh
#!/bin/bash
rm -rf /run/httpd/*     #0#洗掉容器中原路httpd的快取檔案
exec /usr/sbin/apachectl -D FOREGROUND      ##-D FOREGROUND 前臺運行
[root@localhost apache]# echo "Hello Docker" > index.html      #0#生成首頁檔案
[root@localhost apache]# docker build -t httpd:centos .   #0#構建鏡像,注意末尾有“.”
##Dockerfile構建鏡像的方式是每執行一個操作就創建一個臨時容器,操作完成后移除臨時容器
Sending build context to Docker daemon  4.096kB
Step 1/9 : FROM centos:7
 ---> 7e6257c9f8d8
Step 2/9 : MAINTAINER The porject <cloud-ops@centos.org>   ##描述資訊
 ---> Running in 42839a68eb21       ##'創建臨時容器'
Removing intermediate container 42839a68eb21   #0#完成后洗掉臨時容器
 ---> 1e0299f24408
Step 3/9 : RUN yum -y update    #1#執行更新yum倉庫
 ---> Running in b5f6ede89a2c    #1#再次創建臨時容器,然后再移除
……省略部分
Removing intermediate container 1a7c4de7d2c8
 ---> 7a0a23b6969c
Step 5/9 : EXPOSE 80
 ---> Running in ee11b40f4b00
Removing intermediate container ee11b40f4b00
 ---> 6089b87f70bb
Step 6/9 : ADD index.html /var/www/html/index.html
 ---> 984532d2525b
Step 7/9 : ADD run.sh /run.sh
 ---> 9fdecb3739c2
Step 8/9 : RUN chmod 755 /run.sh
 ---> Running in 65024462dcfc
Removing intermediate container 65024462dcfc
 ---> b2c495c4490a
Step 9/9 : CMD ["/run.sh"]
 ---> Running in ce777dd9f0e8
Removing intermediate container ce777dd9f0e8
 ---> 07feb32493c4
Successfully built 07feb32493c4
Successfully tagged httpd:centos

[root@localhost apache]# docker run -d -p 1216:80 httpd:centos     #0#后臺運行鏡像,并且做埠映射
5b128cf5a4f1ae0ae1ded2d86249ae218a71e601d64ea0f106dac0584981c420
[root@localhost apache]# docker ps -a      ##新生成的兩個容器
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS                  NAMES
5b128cf5a4f1        httpd:centos        "/run.sh"           3 minutes ago       Up 3 minutes        0.0.0.0:1216->80/tcp   frosty_visvesvaraya
5772e1528cac        centos:7            "/bin/bash"         2 hours ago         Up 2 hours                                 suspicious_pare

訪問測驗(192.168.10.10:1216)

在這里插入圖片描述

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/211659.html

標籤:其他

上一篇:來可CAN光端機LCAN-FOBR助力西門子FC18消防主機快速建設甌江口地下綜合管廊

下一篇:螞蟻金服面試分享,阿里的offer真的不難,3位朋友全部offer

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • 網閘典型架構簡述

    網閘架構一般分為兩種:三主機的三系統架構網閘和雙主機的2+1架構網閘。 三主機架構分別為內端機、外端機和仲裁機。三機無論從軟體和硬體上均各自獨立。首先從硬體上來看,三機都用各自獨立的主板、記憶體及存盤設備。從軟體上來看,三機有各自獨立的作業系統。這樣能達到完全的三機獨立。對于“2+1”系統,“2”分為 ......

    uj5u.com 2020-09-10 02:00:44 more
  • 如何從xshell上傳檔案到centos linux虛擬機里

    如何從xshell上傳檔案到centos linux虛擬機里及:虛擬機CentOs下執行 yum -y install lrzsz命令,出現錯誤:鏡像無法找到軟體包 前言 一、安裝lrzsz步驟 二、上傳檔案 三、遇到的問題及解決方案 總結 前言 提示:其實很簡單,往虛擬機上安裝一個上傳檔案的工具 ......

    uj5u.com 2020-09-10 02:00:47 more
  • 一、SQLMAP入門

    一、SQLMAP入門 1、判斷是否存在注入 sqlmap.py -u 網址/id=1 id=1不可缺少。當注入點后面的引數大于兩個時。需要加雙引號, sqlmap.py -u "網址/id=1&uid=1" 2、判斷文本中的請求是否存在注入 從文本中加載http請求,SQLMAP可以從一個文本檔案中 ......

    uj5u.com 2020-09-10 02:00:50 more
  • Metasploit 簡單使用教程

    metasploit 簡單使用教程 浩先生, 2020-08-28 16:18:25 分類專欄: kail 網路安全 linux 文章標簽: linux資訊安全 編輯 著作權 metasploit 使用教程 前言 一、Metasploit是什么? 二、準備作業 三、具體步驟 前言 Msfconsole ......

    uj5u.com 2020-09-10 02:00:53 more
  • 游戲逆向之驅動層與用戶層通訊

    驅動層代碼: #pragma once #include <ntifs.h> #define add_code CTL_CODE(FILE_DEVICE_UNKNOWN,0x800,METHOD_BUFFERED,FILE_ANY_ACCESS) /* 更多游戲逆向視頻www.yxfzedu.com ......

    uj5u.com 2020-09-10 02:00:56 more
  • 北斗電力時鐘(北斗授時服務器)讓網路資料更精準

    北斗電力時鐘(北斗授時服務器)讓網路資料更精準 北斗電力時鐘(北斗授時服務器)讓網路資料更精準 京準電子科技官微——ahjzsz 近幾年,資訊技術的得了快速發展,互聯網在逐漸普及,其在人們生活和生產中都得到了廣泛應用,并且取得了不錯的應用效果。計算機網路資訊在電力系統中的應用,一方面使電力系統的運行 ......

    uj5u.com 2020-09-10 02:01:03 more
  • 【CTF】CTFHub 技能樹 彩蛋 writeup

    ?碎碎念 CTFHub:https://www.ctfhub.com/ 筆者入門CTF時時剛開始刷的是bugku的舊平臺,后來才有了CTFHub。 感覺不論是網頁UI設計,還是題目質量,賽事跟蹤,工具軟體都做得很不錯。 而且因為獨到的金幣制度的確讓人有一種想去刷題賺金幣的感覺。 個人還是非常喜歡這個 ......

    uj5u.com 2020-09-10 02:04:05 more
  • 02windows基礎操作

    我學到了一下幾點 Windows系統目錄結構與滲透的作用 常見Windows的服務詳解 Windows埠詳解 常用的Windows注冊表詳解 hacker DOS命令詳解(net user / type /md /rd/ dir /cd /net use copy、批處理 等) 利用dos命令制作 ......

    uj5u.com 2020-09-10 02:04:18 more
  • 03.Linux基礎操作

    我學到了以下幾點 01Linux系統介紹02系統安裝,密碼啊破解03Linux常用命令04LAMP 01LINUX windows: win03 8 12 16 19 配置不繁瑣 Linux:redhat,centos(紅帽社區版),Ubuntu server,suse unix:金融機構,證券,銀 ......

    uj5u.com 2020-09-10 02:04:30 more
  • 05HTML

    01HTML介紹 02頭部標簽講解03基礎標簽講解04表單標簽講解 HTML前段語言 js1.了解代碼2.根據代碼 懂得挖掘漏洞 (POST注入/XSS漏洞上傳)3.黑帽seo 白帽seo 客戶網站被黑帽植入劫持代碼如何處理4.熟悉html表單 <html><head><title>TDK標題,描述 ......

    uj5u.com 2020-09-10 02:04:36 more
最新发布
  • 2023年最新微信小程式抓包教程

    01 開門見山 隔一個月發一篇文章,不過分。 首先回顧一下《微信系結手機號資料庫被脫庫事件》,我也是第一時間得知了這個訊息,然后跟蹤了整件事情的經過。下面是這起事件的相關截圖以及近日流出的一萬條資料樣本: 個人認為這件事也沒什么,還不如關注一下之前45億快遞資料查詢渠道疑似在近日復活的訊息。 訊息是 ......

    uj5u.com 2023-04-20 08:48:24 more
  • web3 產品介紹:metamask 錢包 使用最多的瀏覽器插件錢包

    Metamask錢包是一種基于區塊鏈技術的數字貨幣錢包,它允許用戶在安全、便捷的環境下管理自己的加密資產。Metamask錢包是以太坊生態系統中最流行的錢包之一,它具有易于使用、安全性高和功能強大等優點。 本文將詳細介紹Metamask錢包的功能和使用方法。 一、 Metamask錢包的功能 數字資 ......

    uj5u.com 2023-04-20 08:47:46 more
  • vulnhub_Earth

    前言 靶機地址->>>vulnhub_Earth 攻擊機ip:192.168.20.121 靶機ip:192.168.20.122 參考文章 https://www.cnblogs.com/Jing-X/archive/2022/04/03/16097695.html https://www.cnb ......

    uj5u.com 2023-04-20 07:46:20 more
  • 從4k到42k,軟體測驗工程師的漲薪史,給我看哭了

    清明節一過,盲猜大家已經無心上班,在數著日子準備過五一,但一想到銀行卡里的余額……瞬間心情就不美麗了。最近,2023年高校畢業生就業調查顯示,本科畢業月平均起薪為5825元。調查一出,便有很多同學表示自己又被平均了。看著這一資料,不免讓人想到前不久中國青年報的一項調查:近六成大學生認為畢業10年內會 ......

    uj5u.com 2023-04-20 07:44:00 more
  • 最新版本 Stable Diffusion 開源 AI 繪畫工具之中文自動提詞篇

    🎈 標簽生成器 由于輸入正向提示詞 prompt 和反向提示詞 negative prompt 都是使用英文,所以對學習母語的我們非常不友好 使用網址:https://tinygeeker.github.io/p/ai-prompt-generator 這個網址是為了讓大家在使用 AI 繪畫的時候 ......

    uj5u.com 2023-04-20 07:43:36 more
  • 漫談前端自動化測驗演進之路及測驗工具分析

    隨著前端技術的不斷發展和應用程式的日益復雜,前端自動化測驗也在不斷演進。隨著 Web 應用程式變得越來越復雜,自動化測驗的需求也越來越高。如今,自動化測驗已經成為 Web 應用程式開發程序中不可或缺的一部分,它們可以幫助開發人員更快地發現和修復錯誤,提高應用程式的性能和可靠性。 ......

    uj5u.com 2023-04-20 07:43:16 more
  • CANN開發實踐:4個DVPP記憶體問題的典型案例解讀

    摘要:由于DVPP媒體資料處理功能對存放輸入、輸出資料的記憶體有更高的要求(例如,記憶體首地址128位元組對齊),因此需呼叫專用的記憶體申請介面,那么本期就分享幾個關于DVPP記憶體問題的典型案例,并給出原因分析及解決方法。 本文分享自華為云社區《FAQ_DVPP記憶體問題案例》,作者:昇騰CANN。 DVPP ......

    uj5u.com 2023-04-20 07:43:03 more
  • msf學習

    msf學習 以kali自帶的msf為例 一、msf核心模塊與功能 msf模塊都放在/usr/share/metasploit-framework/modules目錄下 1、auxiliary 輔助模塊,輔助滲透(埠掃描、登錄密碼爆破、漏洞驗證等) 2、encoders 編碼器模塊,主要包含各種編碼 ......

    uj5u.com 2023-04-20 07:42:59 more
  • Halcon軟體安裝與界面簡介

    1. 下載Halcon17版本到到本地 2. 雙擊安裝包后 3. 步驟如下 1.2 Halcon軟體安裝 界面分為四大塊 1. Halcon的五個助手 1) 影像采集助手:與相機連接,設定相機引數,采集影像 2) 標定助手:九點標定或是其它的標定,生成標定檔案及內參外參,可以將像素單位轉換為長度單位 ......

    uj5u.com 2023-04-20 07:42:17 more
  • 在MacOS下使用Unity3D開發游戲

    第一次發博客,先發一下我的游戲開發環境吧。 去年2月份買了一臺MacBookPro2021 M1pro(以下簡稱mbp),這一年來一直在用mbp開發游戲。我大致分享一下我的開發工具以及使用體驗。 1、Unity 官網鏈接: https://unity.cn/releases 我一般使用的Apple ......

    uj5u.com 2023-04-20 07:40:19 more