docker平台基本使用命令

一、镜像管理命令

search docker search centos 查找某个镜像

pull docker pull 下载查找到的某个镜像到本地

push docker push  上传镜像到仓库

images docker images 列出本地有的镜像;docker images --no-trunc   显示完整的镜像ID

[root@CentOS7 ~]# docker images --no-trunc
REPOSITORY        TAG       IMAGE ID                                                                  CREATED        SIZE
awesometic/h5ai   latest    sha256:1643b2defc3ef616353d8f09dccbaa839715f61d3b4a58ed37aa10dd2104c3fa   9 days ago     290MB
ubuntu            latest    sha256:1318b700e415001198d1bf66d260b07f67ca8a552b61b0da02b3832c778f221b   9 days ago     72.8MB
hello-world       latest    sha256:d1165f2212346b2bab48cb01c1e39ee8ad1be46b87873d9ca7a4e434980a7726   5 months ago   13.3kB
centos            latest    sha256:300e315adb2f96afe5f0b2780b87f28ae95231fe3bdd1e16b9ba606307728f55   8 months ago   209MB

二、Docker 基本使用命令

运行命令 run

-i   以交互模式运行容器,通常与 -t 同时使用;

-t  为容器重新分配一个伪输入终端,通常与 -i 同时使用;

例1:# docker run -it centos:latest bash

例2:在 container 中启动一个长久运行的进程,不断向stdin输出 hello world 。模拟一个后台运行的服务。

docker常用参数:

-d  后台运行容器,并返回容器ID;

-c  后面跟待完成的命令

# docker run -d centos:latest /bin/sh -c "while true;do echo hello word;sleep 1;done"

dc5eda5287fc83008e77c6f47d57813355834d54144e923d4a0be08ad4a881cd      #容器的ID

日志读取命令 docker logs

从一个容器中取日志,查看输出的内容,可用于后期检查docker实例在标准输出中弹出的错误信息或正常的信息。

[root@CentOS7 ~]# docker logs dc5eda5287fc83008e77c6f47d57813355834d54144e923d4a0be08ad4a881cd

hello word

hello word

hello word

查看正在运行的容器:

[root@CentOS7 ~]# docker ps
CONTAINER ID   IMAGE           COMMAND                  CREATED         STATUS         PORTS     NAMES
dc5eda5287fc   centos:latest   "/bin/sh -c 'while t…"   3 minutes ago   Up 3 minutes             compassionate_dirac

列出所有容器(包含沉睡/退出状态的容器):

# docker ps -a  

[root@CentOS7 ~]# docker ps -a
CONTAINER ID   IMAGE           COMMAND                  CREATED         STATUS                     PORTS     NAMES
dc5eda5287fc   centos:latest   "/bin/sh -c 'while t…"   5 minutes ago   Up 5 minutes                         compassionate_dirac
91fd0a223322   centos:latest   "bash"                   9 minutes ago   Exited (0) 9 minutes ago             laughing_dubinsky

例3:杀死一个容器。 比如:杀死一个正在后台运行的容器

[root@CentOS7 ~]# docker ps
CONTAINER ID   IMAGE           COMMAND                  CREATED         STATUS         PORTS     NAMES
dc5eda5287fc   centos:latest   "/bin/sh -c 'while t…"   7 minutes ago   Up 7 minutes             compassionate_dirac
[root@CentOS7 ~]# docker kill dc5eda5287fc
dc5eda5287fc
[root@CentOS7 ~]# docker ps
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES

例4:启动、停止、重启、删除 container容器实例

启动: run # 创建并运行docker实例

# docker run  -d  centos:latest /bin/sh -c "while true;do echo hello world; sleep 1; done"

查看容器: # docker ps 

停止/关闭容器:# docker stop 1a63ddea6571  

重启容器:# docker restart 1a63ddea6571

删除指定容器:# docker rm 8683629d2925

三、docker镜像制作方法

Docker Image 的制作两种方法

方法1:docker commit   #保存 container 的当前状态到 image后,然后生成对应的image

方法2:docker build  #使用 Dockerfile 文件自动化制作 image

方法1:docker commit

创建一个安装好apache web服务器的容器镜像

[root@CentOS7 ~]# docker run -it centos:latest /bin/bash
[root@661556b8a9d9 /]# yum -y install httpd
[root@661556b8a9d9 /]# exit
[root@CentOS7 ~]# docker ps -a
CONTAINER ID   IMAGE           COMMAND                  CREATED          STATUS                        PORTS     NAMES
661556b8a9d9   centos:latest   "/bin/bash"              9 minutes ago    Exited (127) 32 seconds ago             exciting_borg
39426dbe31bd   centos:latest   "/bin/sh -c 'while t…"   18 minutes ago   Up 16 minutes                           trusting_agnesi
91fd0a223322   centos:latest   "bash"                   32 minutes ago   Exited (0) 32 minutes ago               laughing_dubinsky
[root@CentOS7 ~]# docker commit 661556b8a9d9 centos:apache
sha256:214cce758266ad2d2e33c0ddb290f527c5ab87650c19422ef2470a23496d3cef
[root@CentOS7 ~]# docker images
REPOSITORY   TAG        IMAGE ID       CREATED         SIZE
centos       apache     214cce758266   9 seconds ago   286MB
centos       latest     5d0da3dc9764   3 weeks ago     231MB

根据容器当前状态做一个image镜像:创建一个安装了apache工具的centos镜像

语法: docker commit <container的ID>  <新的image_name>

方法2:使用docker build创建镜像

通过:docker build创建一个基于centos的httpd web服务器镜像。

使用docker build创建镜像时,需要使用 Dockerfile 文件自动化制作 image 镜像

注:Dockerfile有点像源码编译时./configure后产生的Makefile

以下操作要在docker物理机上操作:

1. 创建工作目录

[root@xuegod63 ~]#  mkdir /docker-build

[root@xuegod63 ~]# cd /docker-build

[root@xuegod63 docker-build]# touch Dockerfile

注: make自动化编译时需要Makefile文件,自动化创建docker镜像时,需要Dockerfile

2. 编辑 Dockerfile

Dockerfile用来创建一个自定义的image,包含了用户指定的软件依赖等。

[root@xuegod63 docker-build]# vim  Dockerfile   
FROM centos:7.6.1810
MAINTAINER  <[email protected]>
RUN yum -y install httpd
ADD start.sh /usr/local/bin/start.sh
ADD template /var/www/html/
CMD /usr/local/bin/start.sh
注释:
FROM  centos:latest  # FROM 基于哪个镜像
MAINTAINER  <[email protected]>  # MAINTAINER 镜像创建者
RUN yum -y install httpd   #RUN 安装软件用
ADD start.sh /usr/local/bin/start.sh   
ADD template /var/www/html/
CMD /usr/local/bin/start.sh
# ADD  将文件<src>拷贝到新产生的镜像的文件系统对应的路径<dest>。所有拷贝到新镜像中的文件和文件夹权限为0755,uid和gid为0
CMD /usr/local/bin/start.sh    #当docker实例启动成功后,会执行CMD 后面的命令。所以CMD后面一般跟需要开机启动的服务或脚本。一个Dockerfile中只能有一条CMD命令,多条则只执行最后一条CMD.

3. 创建 start.sh脚本启动httpd服务和apache默认首页index.html文件

# echo "/usr/sbin/httpd -DFOREGROUND" > start.sh

# chmod a+x start.sh

上传站点模板template后,解压模板

# unzip -d /docker-build/ /root/template.zip

4. 使用命令build来创建新的image 

语法:docker build -t  父镜像名:镜像的tag   Dockerfile文件所在路径  

-t :表示tage,镜像名

例:使用命令docker build来创建新的image,并命名为centos:httpd 

[root@xuegod63 ~]# cd /docker-build

[root@xuegod63 docker-build]# docker build -t  centos:httpd ./

注: ./ 表示当前目录。另外你的当前目录下要包含Dockerfile

四、Docker Image 的发布:

方法1:保存 Image 到 tar 包

方法2:Push Image To Docker Hub

保存 Image 到 tar 包

语法:docker save -o 导出的镜像名.tar  本地镜像名:镜像标签

# docker save -o ~/centos-httpd.tar centos:httpd

互动:如果觉得导入的tar包太大?如何缩小?

语法:docker   save  本地镜像名:镜像标签  |  gzip  >  导出的镜像名.tar.gz

# docker save  centos:httpd-v2 | gzip > docker-centos-httpd.tar.gz

使用导入本地镜像:

[root@xuegod63 ~]# docker rmi  centos:httpd-v2   #删除镜像,这里写自己镜像的ID或名字

[root@xuegod63 ~]# docker images   #发现在镜像已经被删除

[root@xuegod63 docker-build]# docker load -i  docker-centos-httpd-image.tar

方法2:Push Image To Docker Hub  发布到外网

1、Signup on docker hub & create repo    注册一个帐号

https://hub.docker.com/

2、Login to docker hub 

# docker login -u userabc -p abc123 -e [email protected]

3、Push image to docker hub   #上传镜像

# docker push centos:httpd

4、Pull image from docker hub   #下载镜像

# docker pull userabc/centos:httpd-v2     #  用户名/镜像名

实战-Container容器端口映射

启动 container

[root@xuegod63 ~]# docker run -d -p 80:80  centos:httpd-v2  

87fadc0249a96736f588f16b7d3ad662ef3536a06d7a74115cd7c76546ed3a22

注: -p 物理机的80端口:容器实例的80端口  ,把容器中的80端口映射到物理机上的80端口





版权声明:
作者:WaterBear
链接:https://l-t.top/2074.html
来源:雷霆运维
文章版权归作者所有,未经允许请勿转载。

THE END
分享
二维码
< <上一篇
下一篇>>
文章目录
关闭
目 录