容器與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