docker經常使用命令與容器建立

################docker安裝#####################html

Docker從1.13版本以後採用時間線的方式做爲版本號,分爲社區版CE和企業版EE。java

社區版是免費提供給我的開發者和小型團體使用的,企業版會提供額外的收費服務,好比通過官方測試認證過的基礎設施、容器、插件等。linux

社區版按照stable和edge兩種方式發佈,每一個季度更新stable版本,如17.06,17.09;每月份更新edge版本,如17.09,17.10。nginx

1、安裝docker

一、Docker 要求 CentOS 系統的內核版本高於 3.10 ,查看本頁面的前提條件來驗證你的CentOS 版本是否支持 Docker 。git

經過 uname -r 命令查看你當前的內核版本spring

uname -r

二、使用 root 權限登陸 Centos。確保 yum 包更新到最新。docker

sudo yum update

三、卸載舊版本(若是安裝過舊版本的話)json

sudo yum remove docker  docker-common docker-selinux docker-engine

四、安裝須要的軟件包, yum-util 提供yum-config-manager功能,另外兩個是devicemapper驅動依賴的vim

sudo yum install -y yum-utils device-mapper-persistent-data lvm2

五、設置yum源centos

sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

六、能夠查看全部倉庫中全部docker版本,並選擇特定版本安裝

yum list docker-ce --showduplicates | sort -r

七、安裝docker

sudo yum install docker-ce  #因爲repo中默認只開啓stable倉庫,故這裏安裝的是最新穩定版17.12.0
sudo yum install <FQPN>  # 例如:sudo yum install docker-ce-17.12.0.ce

八、啓動並加入開機啓動

sudo systemctl start docker
sudo systemctl enable docker

九、驗證安裝是否成功(有client和service兩部分表示docker安裝啓動都成功了)

docker version

 2、問題

一、由於以前已經安裝過舊版本的docker,在安裝的時候報錯以下:

Transaction check error:
  file /usr/bin/docker from install of docker-ce-17.12.0.ce-1.el7.centos.x86_64 conflicts with file from package docker-common-2:1.12.6-68.gitec8512b.el7.centos.x86_64
  file /usr/bin/docker-containerd from install of docker-ce-17.12.0.ce-1.el7.centos.x86_64 conflicts with file from package docker-common-2:1.12.6-68.gitec8512b.el7.centos.x86_64
  file /usr/bin/docker-containerd-shim from install of docker-ce-17.12.0.ce-1.el7.centos.x86_64 conflicts with file from package docker-common-2:1.12.6-68.gitec8512b.el7.centos.x86_64
  file /usr/bin/dockerd from install of docker-ce-17.12.0.ce-1.el7.centos.x86_64 conflicts with file from package docker-common-2:1.12.6-68.gitec8512b.el7.centos.x86_64

二、卸載舊版本的包

sudo yum erase docker-common-2:1.12.6-68.gitec8512b.el7.centos.x86_64

三、再次安裝docker

sudo yum install docker-ce

參考連接

1.docker使用國內鏡像

vim /etc/docker/daemon.json

{
  "registry-mirrors": ["http://hd1esep4.mirror.aliyuncs.com","https://registry.docker-cn.com"]
}

systemctl daemon-reload

systemctl restart docker

######################docker經常使用命令######################

docker --version 查看版本

docker stats 查看容器使用的系統資源(每秒刷新一次輸出)

docker search nginx 從鏡像空間查找nginx鏡像

docker pull nginx 拉取nginx鏡像

docker images 查看全部鏡像

docker ps 查看運行中容器信息 (包含 containerId image ports 等信息)

docker ps -all 查看全部容器信息

docker inspect containerId 查看容器內網的ip地址等信息

docker image inspect  imageId 查看鏡像詳細信息

docker logs containerId 查看容器日誌

docker cp localfile containerId:/usr/local  從宿主機拷貝文件到容器內指定目錄

docker start containerId  啓動容器

docker stop containerId  關閉容器

docker rm containerId  刪除容器

docker rmi imageId 刪除鏡像 或者 docker rmi centos_nginx:v1

 docker exec -it containerId  bash 進入容器(ctrl+p+q 保存修改退出)

docker commit containerId nginxserver:v5.0  將自定義的容器提交成鏡像

docker stop $(docker ps -q) 關閉全部運行中的容器

docker rm $(docker ps -aq) 刪除全部容器

 docker  run  -p  80:80  -d  -v  $PWD/html:usr/share/nginx/html  nginx:latest【 -v  $PWD/html:usr/share/nginx/html   表示把當前路徑下html目錄映射爲usr/share/nginx/html 也就是說主機下的html就是容器下的usr/share/nginx/html html內的文件修改和添加就等同於容器usr/share/nginx/html文件操做 外網訪問就能夠訪問獲得,就不用再登陸容器操做文件了; -d 表示以守護進程啓動; -p 宿主機端口:容器端口 映射; nginx:latest 已經pull下來的鏡像】

apt-get update && apt-get install vim 容器內安裝vi 工具

####################阿里雲鏡像倉庫(也可本身搭一個鏡像倉庫)#############

登錄阿里雲鏡像
從registry中拉取鏡像:
$ sudo docker pull registry.cn-shenzhen.aliyuncs.com/***/learn_test:[鏡像版本號]
將鏡像推送到registry:
$ sudo docker tag [ImageId] registry.cn-shenzhen.aliyuncs.com/***/learn_test:[鏡像版本號]
$ sudo docker push registry.cn-shenzhen.aliyuncs.com/***/learn_test:[鏡像版本號]

######################Dockerfile編寫#######################

1.經常使用的Dockerfile 文件內容以下:

FROM java:8
VOLUME /tmp
ADD base_model_server_jg-0.0.1-SNAPSHOT.jar /app.jar
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]
CMD ["--spring.profiles.active=isv"]
EXPOSE 8101

2.容器構建:

docker build -t centos_nginx:v1 Dockerfile路徑

 3.自定義ES Dockerfile

FROM java:8
RUN groupadd elasticsearch
RUN useradd elasticsearch -g elasticsearch

RUN set -ex \
    && mkdir -p /usr/local/data/elasticsearch \
    && mkdir -p /usr/local/data/elasticsearch/data \
    && mkdir -p /usr/local/data/elasticsearch/logs

RUN chown -R elasticsearch:elasticsearch /usr/local/data/elasticsearch

COPY elasticsearch-6.2.2.tar.gz  /usr/local/elasticsearch-6.2.2.tar.gz

RUN tar -zxvf /usr/local/elasticsearch-6.2.2.tar.gz -C /usr/local/ && rm -rf /usr/local/elasticsearch-6.2.2.tar.gz

COPY elasticsearch.yml /usr/local/elasticsearch-6.2.2/config/elasticsearch.yml

RUN chown -R elasticsearch:elasticsearch /usr/local/elasticsearch-6.2.2

RUN chmod 777 /usr/local/data/elasticsearch/data

VOLUME /usr/local/data/elasticsearch/data

COPY docker-entrypoint.sh /

RUN chmod 777 /docker-entrypoint.sh

EXPOSE 9200 9300

ENTRYPOINT ["/docker-entrypoint.sh"]

CMD ["elasticsearch"]
docker-entrypoint.sh 文件以下:
#!/bin/bash
su - elasticsearch -s /usr/local/elasticsearch-6.2.2/bin/elasticsearch
chmod 777 -R /usr/local/data/elasticsearch

  

#####################docker-compose編寫#####################

docker-compose.yml 以下:

version: '2'
services:
  eureka-server:
    image: eureka/eurekaserver
    hostname: eureka-server
    ports:
      - "8761:8761"

  config-server:
    image: eureka/configserver
    ports:
      - "8888:8888"
    links:
      - "eureka-server"

  config-client:
    image: eureka/configclient
    ports:
      - "8881:8881"
    links:
      - "eureka-server"
      - "config-server"

#啓動容器
在jwd_cloud/docker 目錄下 執行以下命令
#構建/重建服務
docker-compose up --build
#之後臺方式啓動容器和容器內服務
docker-compose up -d
#顯示當前項目容器
docker-compose ps

參考連接

#####################################注意###########################################

1.寫啓動腳本時注意

2. inux下解決docker端口映射到宿主機後外網沒法訪問的問題

解決辦法:
# vi /etc/sysctl.conf
或者
# vi /usr/lib/sysctl.d/00-system.conf
添加以下代碼:
net.ipv4.ip_forward=1
 
重啓network服務
# systemctl restart network
 
查看是否修改爲功
# sysctl net.ipv4.ip_forward
 
若是返回爲「net.ipv4.ip_forward = 1」則表示成功了
相關文章
相關標籤/搜索