<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                企業??AI智能體構建引擎,智能編排和調試,一鍵部署,支持知識庫和私有化部署方案 廣告
                # Docker 定稿人 | 定稿日期 | 系統環境 | :--------: | :-----: | :----: | 黃鎮游 | 2017.12.19 |ubuntu14.04 ## Docker入門實踐 #### docker環境搭建 1.獲取最新版的Docker安裝包 ```powershell $ wget -qO- https://get.docker.com/ | sh ``` 2.直接使用`docker`無須加 `sudo` ```powershell $ sudo groupadd docker $ sudo gpasswd -a ${USER} docker $ sudo service docker restart # 單條指令 sudo usermod -aG docker $USER # 把當前用戶加入docker組 ``` 3 . 從 `17.04` 以后,可以用下面的命令安裝。 ```powershell $ export CHANNEL=stable $ curl -fsSL https://get.docker.com/ | sh -s -- --mirror Aliyun ``` #### 鏡像基本操作指令 1.搜索鏡像 ```powershell $ sudo docker search ubuntu ``` 2.獲取鏡像 ```powershell $ sudo docker pull ubuntu ``` 3.查看鏡像信息 ```powershell $ sudo docker images REPOSITORY TAG IMAGE ID CREATED SIZE ubuntu latest ccc7a11d65b1 3 weeks ago 120MB swarm latest 7ecf8baf8eae 8 weeks ago 15.8MB ``` 4.查看鏡像的詳細信息 ```powershell $ sudo docker inspect 7ecf8baf8eae #或 $ sudo docker inspect ubuntu ``` 5.刪除鏡像 ```powershell $ sudo docker rmi swarm Error response from daemon: conflict: unable to remove repository reference "swarm" (must force) - container c445ef19d3e7 is using its referenced image 7ecf8baf8eae ``` > **因此,刪除鏡像之前得確保容器已刪除** 6.刪除容器 ```powershell $ sudo docker rm 7ecf8baf8eae #刪除指定容器 $ sudo docker rm $(docker ps -a -q) #刪除所有已生成容器 ``` 7.復制鏡像 ```sh $ sudo docker tag ubuntu:latest hzy/test:latest hzy@hadoop:~$ sudo docker images REPOSITORY TAG IMAGE ID CREATED SIZE hzy/test latest ccc7a11d65b1 3 weeks ago 120MB ubuntu latest ccc7a11d65b1 3 weeks ago 120MB swarm latest 7ecf8baf8eae 8 weeks ago 15.8MB ``` #### 創建鏡像 1.創建一個新鏡像,進行操作 ```powershell $ docker run -it ubuntu /bin/bash --name bieming root@3138d574074e:/# ``` 2.使用 `docker commit` 來提交一個新的鏡像 ```powershell $ sudo docker commit -m "added a new file" -a "huangzy" 3138d574074e hzy/test 3138d574074esha256:f8b1d41ff97589f7c207577b391b1d5074b197a1ec3196a8907269ec6e00dcae # -a, --author="" 作者信息 # -m, --message="" 提交消息 # -p, --pause=ture 提交時暫停容器運行 ``` #### 存出和載入鏡像 1.存出鏡像 ```powershell $ sudo docker save -o ubuntu.tar ubuntu:latest ``` 2.載入鏡像 ```powershell $ sudo docker load --input ubuntu.tar Loaded image: ubuntu:latest #或 $ sudo docker load < ubuntu.tar ``` #### 容器 1.創建容器 ```powershell $ sudo docker run -it ubuntu:latest /bin/bash root@939831baa91d:/# # -t 分配一個偽終端綁定到容器的標準輸入上 # -i 讓容器的標準輸入保持打開 # -d 讓Docker容器在后臺以守護態(Daemonized)形式運行 ``` 2.終止容器 ```powershell $ sudo docker stop 939831b ``` 3.查看容器狀態 ```powershell $ sudo docker ps #或 $ sudo docker ps -a -q # 可查看到終止狀態的容器 ``` 4.使用 `docker start` 命令來重新啟動處于終止狀態的容器 ```powershell $ sudo docker start 939831b #或 $ sudo docker restart 939831b ``` 5.刪除容器 ```powershell $ sudo docker rm 3138d574074e Error response from daemon: You cannot remove a running container 3138d574074e5a45a543760c2ecb3935b0173d89940c05fa3cd969d1112338ff. Stop the container before attempting removal or force remove #應該先停止容器服務,再進行刪除。 $ sudo docker stop 3138d574074e ``` #### 導入和導出容器 1.導出容器(無論該容器是否處于運行狀態) ```powershell $ sudo docker export 3138d > test_for_run.tar ``` 2.導入容器(導出的文件可以導入,成為鏡像) ```powershell $ cat test_for_run.tar | sudo docker import - test/ubuntu:v1 sha256:b974a00be6dd0ac5f794c3ec5ef6b1812cdc535390b67950cf220aa1e557c759 ``` #### 倉庫(Repository) > 倉庫:是集中存放鏡像的地方。 > > 注冊服務器(Registry):是存放倉庫的具體服務器。 1.終端登錄Docker Hub ```powershell $ sudo docker login [sudo] password for hzy: Login with your Docker ID to push and pull images from Docker Hub. If you don't have a Docker ID, head over to https://hub.docker.com to create one. Username: s152118130110 Password: Login Succeeded ``` 2.將本地鏡像推送到Docker Hub ```powershell $ sudo docker push swarm:latest ``` #### 創建和使用私有倉庫 1.默認情況下,會將倉庫存放于容器的 /tmp/registry 目錄下,如果容器被刪除,則數據也會丟失,所以我們可以通過 -v 參數來將鏡像文件存放在本地的指定路徑 ```powershell $ sudo docker run –d –p 5000:5000 --restart=always --name registry -v /opt/myregistry:/var/lib/registry registry # -i: 保持sdtin開放狀態 # -d: 使容器以守護進程方式后臺運行,并打印容器id # -t: 分配一個tty(虛擬終端設備) # -v: 綁定掛載一個容器內的路徑到宿主機路徑 # -p: 映射一個容器的端口到宿主機端口 # -restart: 當容器退出時的重啟策略 # -name: 給容器命名一個名稱 ``` > 打開chrome輸入 `http://127.0.0.1:80/v2` 2.標記 ```powershell $ sudo docker tag swarm 192.168.18.19:5000/swarm ``` 3.上傳 ```powershell $ sudo docker push 192.168.18.19:5000/swarm The push refers to a repository [192.168.18.19:5000/swarm] Get https://192.168.18.19:5000/v2/: http: server gave HTTP response to HTTPS client #由于客戶端采用https,docker registry未采用https服務所致。一種處理方式是把客戶對地址“192.168.1.100:5000”請求改為http #在 "etc/docker" 目錄下,創建daemon.json文件,并在文件寫入: {"insecure-registries":["ip地址:5000"]} #重新啟動docker $ sudo service docker restart #重新上傳鏡像即可 $ sudo docker push 192.168.18.19:5000/swarm # 查看上傳是否成功 $ curl http://192.168.18.19:5000/v2/_catalog {"repositories":["swarm"]} ``` 4.下載鏡像 ```powershell $ sudo docker pull 192.168.18.19:5000/swarm ``` #### 客戶機訪問Registry 1.對于需要訪問Registry倉庫的客戶機,需要修改文件。 ```powershell # ubuntu 在以下文件添加 {"insecure-registries":["192.168.18.19:5000]} $ vi /etc/docker/daemon.json # centos 在以下文件添加 OPTIONS=‘--SELINUXENABLED--INSECUREREGISTRY192.168.18.19:5000’ $ vi /etc/sysconfig/docker ``` #### 數據卷 1 . 使用 `-v`標記可以指定掛載一個本地的目錄到容器中 ```powershell $ docker run -d -P --name web -v /src/webapp:/opt/webapp:ro training/webapp python app.py # 地目錄的路徑必須是絕對路徑,如果目錄不存在 Docker 會自動為你創建它。 ``` 2 . 使用 `-v` 標記也可以從主機掛載單個文件到容器中 ```powershell $ docker run --rm -it -v ~/.bash_history:/.bash_history ubuntu /bin/bash # 這樣可以記錄在容器輸入過的命令 ``` ## Docker 命令 #### 容器 ```bash $ docker ps # 正在運行的容器 $ docker ps -a # 所有容器 $ docker ps -a | grep 'Exited' # 退出的容器 $ docker inspect [container] # 容器信息 $ docker rename [container] [new_name] # 修改名稱 $ docker rm -f -v [container] # 刪除容器,-f:強制刪除,無論是否在運行,-v:刪除自動掛載的 volume(volume name是隨機生成的), 如果是手動掛載的 volume 不會被刪除 ``` ```bash # 運行容器 # -it: 交互模式 # --net: 使用的網絡, --net 等同于 --network # -p: 主機與容器的端口映射(-p 8080:8080 或 -p 192.168.1.2:8080:8080), -p 等同于 --public # -P: 把容器的端口隨機映射到主機,這里容器端口指的是 Dockerfile EXPOSE 出來的端口 # -e: 環境變量, -e 等同于 --env # --add-host:添加主機和IP的映射(--add-host centos192:192.168.1.192, 會被添加到容器的 /etc/hosts), 一次只添加一個 # --dns: 添加 dns 到容器的 /etc/resolv.conf,一次只添加一個 # -d: 后臺運行, -d 等同于 --detach # -v 掛載(針對目錄而言), 掛載到主機:-v /var/lib/mysql:/data/mysql,掛載到卷: -v mysql_data:/data/mysql # --entrypoint $ docker run -it --name [container] --net [network] --ip [ip] --hostname [host] -p [port:port] -e [ENV=...] --add-host [host:ip] --dns [8.8.8.8] -v [volume:/container/path] --entrypoint [cmd] -d [image:tag] ``` ```bash $ docker exec -it [container] bash # 進入容器并指定 bash 命令 ``` ```bash $ docker export [container] [xxx.tar] # 導出容器文件系統為 tar 包 $ docker import [xxx.tar] # 導入 tar 包創建文件系統鏡像 $ docker commit [container] [image:tar] # 將容器的修改創建成鏡像 ``` ```bash # 在主機和容器之間 copy 數據 $ docker cp /root/docker-entrypoint.sh mysql:/usr/local/bin/ # 主機 -> 容器 $ docker cp mysql:/usr/local/bin/docker-entrypoint.sh /root/ # 容器 -> 主機 ``` ```bash $ docker top [container] # 查看容器中正在運行的進程 $ docker diff [container] # 查看容器內發生變化的文件 $ docker events # 實時輸出服務端事件,包括容器的創建,啟動,關閉等 $ docker logs (-f) [container] # 容器日志 ``` #### 鏡像 ```bash $ docker images # 所有鏡像 $ docker images | grep 'none' # 空鏡像 $ docker history [image] # 鏡像歷史 $ docker tag [image:tag] [new_image:tag] # 重命名鏡像 $ docker rmi [image] # 刪除鏡像 ``` ```bash $ docker save -o nginx-1.11.9-alpine.tar nginx:1.11.9-alpine # 打包鏡像成 tar 包 $ docker load -i nginx-1.11.9-alpine.tar # 從 tar 包中加載鏡像 ``` #### 存儲卷 ```bash $ docker volume ls # 所有卷 $ docker volume inspect [volume] # 卷信息 $ docker volume rm [volume] # 刪除卷 $ docker volume create --driver local [volume] # 創建本地卷 $ docker volume create --driver rexray [volume] # 基于 rexray 卷插件創建卷(需要先安裝 rexray 卷插件) ``` #### 網絡 docker 1.12 自帶網絡插件:`bridge`(默認)、`host`、`macvlan`、`null`和`overlay` ```bash $ docker network ls # 所有網絡 $ docker network inspect [network] # 網絡信息 $ docker network rm [network] # 刪除網絡 $ docker network create --driver bridge --subnet 172.17.2.0/24 --gateway 172.17.2.1 mynet # 創建本地網絡,默認的 bridge 驅動自動橋接到系統虛擬網卡 docker0 $ docker network create --driver calico --ipam-driver calico --subnet [CIDR] [network_name] # calico 網絡(需要先安裝 calico 網絡插件) ``` #### 監控 ```bash $ docker stats # 監控容器消耗的資源,CPU、內存、網絡 I/O ```
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看