docker-鏡像與容器

容器與docker基本概念

https://blog.csdn.net/deng624796905/article/details/86493330
https://blog.csdn.net/bskfnvjtlyzmv867/article/details/81044217

docker安裝

#卸載之前版本
yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-selinux \
                  docker-engine-selinux \
                  docker-engine
#安裝依賴包
yum install -y yum-utils device-mapper-persistent-data lvm2
#添加Docker軟件包源
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
yum makecache fast
#安裝DockerCE 
yum install -y docker-ce 
#查看版本
[root@node2 ~]# docker version
Client: Docker Engine - Community
 Version:           19.03.4
 API version:       1.40
 Go version:        go1.12.10
 Git commit:        9013bf583a
 Built:             Fri Oct 18 15:52:22 2019
 OS/Arch:           linux/amd64
 Experimental:      false
Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?
#啓動Docker服務並設置開機啓動
systemctl start docker 
systemctl enable docker
#鏡像加速
curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s http://f1361db2.m.daocloud.io

獲取一個基礎鏡像默認將會從 Docker Hub 獲取鏡像

[root@node1 ~]# docker pull centos
[root@node1 ~]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
centos              latest              0f3e07c0138f        2 weeks ago         220MB
#刪除鏡像
[root@node1 ~]# docker image rm 0f3
# 基於centos 鏡像運行一個容器 -it 交互式--rm 表示退出即刪除 bash運行首先執行的命令
[root@node1 ~]# docker run -it --rm  centos  bash
[root@1bbcc5f571ab /]# ls
bin  dev  etc  home  lib  lib64  lost+found  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var
[root@node1 ~]# docker run -it --rm  centos  cat /etc/os-release
NAME="CentOS Linux"
VERSION="8 (Core)"
ID="centos"
ID_LIKE="rhel fedora"
VERSION_ID="8"
PLATFORM_ID="platform:el8"
PRETTY_NAME="CentOS Linux 8 (Core)"
ANSI_COLOR="0;31"
CPE_NAME="cpe:/o:centos:centos:8"
HOME_URL="https://www.centos.org/"
BUG_REPORT_URL="https://bugs.centos.org/"
CENTOS_MANTISBT_PROJECT="CentOS-8"
CENTOS_MANTISBT_PROJECT_VERSION="8"
REDHAT_SUPPORT_PRODUCT="centos"
REDHAT_SUPPORT_PRODUCT_VERSION="8"
#查看鏡像、容器、數據卷所佔用的空間
[root@node1 ~]# docker system df
TYPE                TOTAL               ACTIVE              SIZE                RECLAIMABLE
Images              1                   0                   219.6MB             219.6MB (100%)
Containers          0                   0                   0B                  0B
Local Volumes       0                   0                   0B                  0B
Build Cache         0                   0                   0B                  0B

使用dockerfile構建鏡像

[root@node1 ~]# mkdir /opt/dockerfile_node1
[root@node1 ~]# cd /opt/dockerfile_node1
[root@node1 dockerfile_node1]# vi run.sh
echo "runing ok"
[root@node1 dockerfile_node1]# vi Dockerfile
FROM centos:latest
MAINTAINER luoshuyu
RUN yum install lrzsz -y
COPY run.sh /usr/bin
EXPOSE 80
CMD ["run.sh"]

構建鏡像 

# 構建鏡像 . 表示當前目錄 -f 也可指定Dockerfile所在目錄
[root@node1 dockerfile_node1]# docker build -t new_centos .
Sending build context to Docker daemon  3.072kB
Step 1/6 : FROM centos:latest
 ---> 0f3e07c0138f
Step 2/6 : MAINTAINER luoshuyu
 ---> Running in 764d4a5b8e26
Removing intermediate container 764d4a5b8e26
 ---> bbf617693f80
Step 3/6 : RUN yum install lrzsz -y
 ---> Running in b3069a47a6f8
CentOS-8 - AppStream                            616 kB/s | 6.0 MB     00:10 

[root@node1 dockerfile_node1]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
new_centos          latest              9480c827b972        34 seconds ago      260MB
centos              latest              0f3e07c0138f        2 weeks ago         220MB

基於鏡像運行一個容器

#-d 表示後臺運行 
[root@node1 dockerfile_node1]# docker run -itd  new_centos bash
09fda644e7e6f6d10ee31361cbc424dbfc887abefca37faf155d3684fc092f88
[root@node1 dockerfile_node1]# docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
09fda644e7e6        new_centos          "bash"              16 seconds ago      Up 14 seconds       80/tcp              agitated_pascal
#進入容器,exit退出後容器繼續運行
[root@node1 dockerfile_node1]# docker exec -it 09f bash

一個Dockerfile實例

# This my first nginx Dockerfile
# Version 1.0

# Base images 基礎鏡像
FROM centos

#MAINTAINER 維護者信息
MAINTAINER tianfeiyu 

#ENV 設置環境變量
ENV PATH /usr/local/nginx/sbin:$PATH

#ADD  文件放在當前目錄下,拷過去會自動解壓
ADD nginx-1.8.0.tar.gz /usr/local/  
ADD epel-release-latest-7.noarch.rpm /usr/local/  

#RUN 執行以下命令 
RUN rpm -ivh /usr/local/epel-release-latest-7.noarch.rpm
RUN yum install -y wget lftp gcc gcc-c++ make openssl-devel pcre-devel pcre && yum clean all
RUN useradd -s /sbin/nologin -M www

#WORKDIR 相當於cd
WORKDIR /usr/local/nginx-1.8.0 

RUN ./configure --prefix=/usr/local/nginx --user=www --group=www --with-http_ssl_module --with-pcre && make && make install

RUN echo "daemon off;" >> /etc/nginx.conf

#EXPOSE 暴露口,只是聲明作用
EXPOSE 80

#CMD 運行以下命令
CMD ["nginx"]

dockerfile文檔參考:
https://docs.docker.com/v17.09/engine/reference/builder/#dockerfile-examples
https://www.cnblogs.com/panwenbin-logs/p/8007348.html
https://www.cnblogs.com/jsonhc/p/7767669.html


容器

#查看所有鏡像
[root@node1 ~]# docker images 
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
new_centos          latest              9480c827b972        29 hours ago        260MB
centos              latest              0f3e07c0138f        2 weeks ago         220MB
[root@node1 ~]# docker run centos /bin/echo "123"
123
#下面的命令則啓動一個bash終端,允許用戶進行交互。
[root@node1 ~]# docker run -it centos /bin/bash
[root@65b529169410 /]# 
#-t 選項讓Docker分配一個僞終端(pseudo-tty)並綁定到容器的標準輸入
#-i 則讓容器的標準輸入保持打開。
#查看所有容器 包括未啓動的
[root@node1 ~]# docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                           PORTS               NAMES
65b529169410        centos              "/bin/bash"         2 minutes ago       Exited (0) 27 seconds ago                            great_robinson
d0d3083f7f3e        centos              "/bin/echo 123"     2 minutes ago       Exited (0) 2 minutes ago                             romantic_swirles
f71fb4395c24        centos              "/bin/echo 123"     3 minutes ago       Exited (0) 3 minutes ago                             kind_heyrovsky
09fda644e7e6        new_centos          "bash"              28 hours ago        Exited (255) About an hour ago   80/tcp              agitated_pas
#啓動停止的容器
[root@node1 ~]# docker container start 65b529169410
65b529169410
#查看已經啓動容器
[root@node1 ~]# docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
65b529169410        centos              "/bin/bash"         3 minutes ago       Up 13 seconds                          great_robinson
#停止一個容器
[root@node1 ~]# docker container stop 65b529169410
65b529169410
#後臺運行
[root@node1 ~]# docker run -itd centos /bin/bash
81600dcc8c92667bbbe3e0ee204d98d2bdeac07809634b4a1c6681a833f42cd1
#進入容器
[root@node1 ~]# docker exec -it 81600dcc8c92 bash
[root@81600dcc8c92 /]# 

[root@node1 ~]# docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                           PORTS               NAMES
81600dcc8c92        centos              "/bin/bash"         3 minutes ago       Up 3 minutes                                         goofy_cohen
848201cd0c85        centos              "/bin/bash"         3 minutes ago       Exited (0) 3 minutes ago                             modest_euclid
704cb679a2b3        centos              "/bin/bash"         5 minutes ago       Exited (0) 3 minutes ago                             zen_maxwell
65b529169410        centos              "/bin/bash"         12 minutes ago      Exited (0) 6 minutes ago                             great_robinson
d0d3083f7f3e        centos              "/bin/echo 123"     13 minutes ago      Exited (0) 13 minutes ago                            romantic_swirles
f71fb4395c24        centos              "/bin/echo 123"     14 minutes ago      Exited (0) 13 minutes ago                            kind_heyrovsky
09fda644e7e6        new_centos          "bash"              28 hours ago        Exited (255) About an hour ago
#導出容器 
[root@node1 ~]# docker export 848201cd0c85 >centos.tar
[root@node1 ~]# ls
anaconda-ks.cfg  a.txt  centos.tar
#導入容器快照,從容器快照文件中再導入爲鏡像
[root@node1 ~]# cat centos.tar |docker import - centos:v1.1
sha256:6934faa3fff8a4193d89421cbb198851ecee87fc308915695fddd09a100983a0
[root@node1 ~]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
centos              v1.1                6934faa3fff8        17 seconds ago      220MB
new_centos          latest              9480c827b972        29 hours ago        260MB
centos              latest              0f3e07c0138f        2 weeks ago         220MB
#刪除一個處於終止狀態的容器,先停止才能刪
[root@node1 ~]# docker container rm 848201cd0c85
848201cd0c85

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章