docker:(1)docker基本命令使用及發佈鏡像

docker鏡像能夠徹底看做一臺全新的電腦使用,不管什麼鏡像都是對某一東西進行了配置,而後打包後能夠快速移植到須要的地方直接使用java

省去複雜的配置工做mysql

好比java web項目部署,若是是新部署,須要裝系統,配置jdk,maven,sql,redis等各種環境,費時費力還容易出錯,linux

而docker就能夠省去配置環境的麻煩,直接讓你把war包丟進去,實現分分鐘部署一個項目nginx

 

從頭開始簡單的說下docker的使用web

 

本次講解環境爲ubuntu 16.04redis

首先給ubuntu安裝docker,我安裝的是docker ee, 安裝方法:https://docs.docker.com/engine/installation/linux/docker-ee/ubuntu/sql

安裝好以後,即是啓動dockerdocker

sudo service docker start

與之對應的中止dokcer服務命令就是stop了ubuntu

sudo service docker stop

而後經過--version能夠查看運行的docker版本tomcat

sudo docker --version

啓動後,是沒有任何鏡像的,不過能夠經過pull命令獲取相關鏡像

xiaochangwei@ubuntu:~/test$ 
xiaochangwei@ubuntu:~/test$ sudo docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
tomcat              latest              17eb1d58bf8c        About an hour ago   505MB
ubuntu              16.04               00fd29ccc6f1        3 weeks ago         111MB
xiaochangwei@ubuntu:~/test$ 
xiaochangwei@ubuntu:~/test$ 
xiaochangwei@ubuntu:~/test$ sudo docker pull nginx
Using default tag: latest
latest: Pulling from library/nginx
e7bb522d92ff: Pull complete 
6edc05228666: Pull complete 
cd866a17e81f: Pull complete 
Digest: sha256:cf8d5726fc897486a4f628d3b93483e3f391a76ea4897de0500ef1f9abcd69a1
Status: Downloaded newer image for nginx:latest
xiaochangwei@ubuntu:~/test$ sudo docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
tomcat              latest              17eb1d58bf8c        About an hour ago   505MB
nginx latest 3f8a4339aadd 9 days ago 108MB
ubuntu              16.04               00fd29ccc6f1        3 weeks ago         111MB
xiaochangwei@ubuntu:~/test$ 
xiaochangwei@ubuntu:~/test$ 
sudo docker pull nginx 默認獲取最新版本,即TAG爲latest的,若是要獲取其餘版本,則須要使用 sudo docker pull nginx:xxxx

獲取鏡像後,經過docker run使其運行起來

sudo docker ps -a 列出全部容器, 不加 -a 僅列出正在運行的,像退出了的或者僅僅只是建立了的就不列出來
sudo docker run -d -p 8800:80 --name nginx_xiao  nginx #運行指定的鏡像
dudo docker run -d --privileged=true -p 83:80 --name nginx83 nginx #提高權限
#宿主主機端口:容器內部端口 
  -d 後臺運行
  -p 8800:80 是指定對外暴露的端口 容器內部用80 對應外部宿主主機的的8800 代理同樣
  --name指定容器的名字 最後的nginx 代碼要運行的鏡像名字 有tag的加上tag 如 nginx:xxx 默認爲latest
而後訪問宿主主機地址+8800端口

代表nginx已經成功運行

pull到的鏡像確定有不少須要修改的地方,好比配置文件等或者要本身增長些什麼玩意兒進去

sudo docker exec -it 54d26bbce3d6 /bin/bash

經過exec命令進入到容器內部進行操做, 其中紅色部分能夠是容器id或容器名字

進入以後就和操做新的系統同樣,操做完成以後輸入exit退出

某些時候須要獲取鏡像信息詳情,好比安裝了mysql後須要獲取鏡像內部的IP,端口等
sudo docker inspect nginx_xiao

 這樣會出來不少信息,能夠經過grep檢索須要的項目

xiaochangwei@ubuntu:~/test$ sudo docker inspect nginx_xiao |grep IPAddress "SecondaryIPAddresses": null,
            "IPAddress": "172.17.0.2",
                    "IPAddress": "172.17.0.2",
xiaochangwei@ubuntu:~/test$ 

 

那麼問題又來了, 進入容器內部並修改了東西后,怎麼生成新的鏡像供下次直接使用

xiaochangwei@ubuntu:~/test$ sudo docker commit nginx_xiao xiaochangwei/nginx:v1.0
sha256:9f2c1a649a75fc72af4c2d6972290d9bc5f97c62ac52d6705b902fcdefeceea1
xiaochangwei@ubuntu:~/test$ 
xiaochangwei@ubuntu:~/test$ sudo docker images
REPOSITORY           TAG                 IMAGE ID            CREATED             SIZE
xiaochangwei/nginx   v1.0                9f2c1a649a75        11 seconds ago      108MB
tomcat               latest              17eb1d58bf8c        4 hours ago         505MB
nginx                latest              3f8a4339aadd        9 days ago          108MB
ubuntu               16.04               00fd29ccc6f1        3 weeks ago         111MB
xiaochangwei@ubuntu:~/test$ 
sudo docker commit nginx_xiao xiaochangwei/nginx:v1.0
  nginx_xiao 表示咱們剛修改的容器名字或者id
xiaochangwei/nginx:v1.0 爲保存的鏡像名字 :後面爲tag

剛剛commit的鏡像僅僅是保存在本地的,若是要提交到網絡上供其餘人pull 使用呢? 如 https://cloud.docker.com/
1.在https://cloud.docker.com/上註冊一個帳號
2.提交本地鏡像到https://cloud.docker.com/上去

這樣別人就能夠經過docker pull xiaochangwei/nginx:v1.0 來獲取並使用這個鏡像了

須要注意的是: sudo docker commit nginx_xiao xiaochangwei/nginx:v1.0 鏡像名裏面包含了 我註冊的帳戶名,這裏須要一致,不然沒法push

到這裏鏡像怎麼獲取,查看,啓動,編輯,保存,提交 容器查看 都知道了,可是怎麼中止、啓動、刪除容器呢
1.經過 sudo docker ps -a查看存在的容器信息
2.經過 sudo docker start/stop/restart xxx 來啓動、中止、重啓指定的容器
2.經過 sudo docker rm xxx 指定容器名或者容器id來刪除,刪除前請先中止容器,保證在非運行狀態
xiaochangwei@ubuntu:~/test$ sudo docker ps -a
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                  NAMES
54d26bbce3d6        nginx               "nginx -g 'daemon ..."   43 minutes ago      Up 43 minutes       0.0.0.0:8800->80/tcp   nginx_xiao
xiaochangwei@ubuntu:~/test$ sudo docker restart nginx_xiao
nginx_xiao
xiaochangwei@ubuntu:~/test$ sudo docker stop  nginx_xiao
nginx_xiao
xiaochangwei@ubuntu:~/test$ sudo docker ps -a
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                     PORTS               NAMES
54d26bbce3d6        nginx               "nginx -g 'daemon ..."   44 minutes ago      Exited (0) 2 seconds ago                       nginx_xiao
xiaochangwei@ubuntu:~/test$ sudo docker rm nginx_xiao
nginx_xiao
xiaochangwei@ubuntu:~/test$ sudo docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
xiaochangwei@ubuntu:~/test$ 

   一樣鏡像的刪除按以下操做

 1.經過sudo docker images 列出全部鏡像

   2.經過sudo docker rmi xxx 來刪除指定的鏡像,鏡像存在依賴關係,先刪除最下層,最後刪除頂層,建議根據鏡像名字來刪除

 

xiaochangwei@ubuntu:~/test$ sudo docker images
REPOSITORY           TAG                 IMAGE ID            CREATED             SIZE
xiaochangwei/nginx   v1.0                9f2c1a649a75        23 minutes ago      108MB
tomcat               latest              17eb1d58bf8c        4 hours ago         505MB
nginx                latest              3f8a4339aadd        9 days ago          108MB
ubuntu               16.04               00fd29ccc6f1        3 weeks ago         111MB
xiaochangwei@ubuntu:~/test$ sudo docker rmi tomcat
Untagged: tomcat:latest
Deleted: sha256:17eb1d58bf8cf6809a26c9c47396a259d419d795070670d5a1bf0cbe63f9167c
Deleted: sha256:ba92fe7a45fb76c9842f81a978a3671d3229077811e18c892ec18ddf7a8f372e
Deleted: sha256:909e728190891a5bc59fd5f20cc741a9f8cf05531008de8bf6fcb86cbf9b92b3
Deleted: sha256:757a35964f233352b539f21545c83f7443f666457075e177d5b88ae2afbc70ec
Deleted: sha256:e9af3a1672101d2803af7a9af40b3442e6b2ac5236d27fb486ea34c2be773dcc
Deleted: sha256:32e70354b98514f5c68cf18f01880e355826d7cd633eb7b303af25915e574556
Deleted: sha256:01cd90dce70e314277a0d5550578d8db86efd7aa512fec4587f971a1e2474b1f
Deleted: sha256:49909967c97ee31e2f3f69bbb150807e18b290eb3ab7f39ba0db3cc426278420
Deleted: sha256:b0427413f858084dffd95e8b7c42968c12f8229925a0d4c15985722ccc3f90e9
Deleted: sha256:1af387e1b89f088f694f89d1bd03c91a4f28e7704c4cc151994d0a3bfae42abe
Deleted: sha256:e3c3b2640184c780efdcc2a02fa3e4fdb7f96dceccc1452527d1e9a1a879399b
Deleted: sha256:6fb895d7f122630fbb471eb29f6d5ee2db66425e885f2c22462525daa7d263c2
Deleted: sha256:e3a0c7535fa27c5bb3d91fa905d363bc6a572ea78aad4e5e17b47604c5d2289f
Deleted: sha256:532ea8d384305c2f5fbcd946e0c7ce71d547550c1fa2f6726d37d26688c9e6f8
Deleted: sha256:dfde2fab09732f8a2ae1a51362222e205fda934baccc8017b23867a2e4a1eb90
xiaochangwei@ubuntu:~/test$ sudo docker images
REPOSITORY           TAG                 IMAGE ID            CREATED             SIZE
xiaochangwei/nginx   v1.0                9f2c1a649a75        24 minutes ago      108MB
nginx                latest              3f8a4339aadd        9 days ago          108MB
ubuntu               16.04               00fd29ccc6f1        3 weeks ago         111MB
xiaochangwei@ubuntu:~/test$ 

 

以上就是docker的基本使用命令了,下一篇將講解經過dockerfile來構建鏡像

相關文章
相關標籤/搜索