Docker | 基础指令

环境:centos8

参考:

安装 Docker | Docker 从入门到实践icon-default.png?t=N7T8https://vuepress.mirror.docker-practice.com/install/

安装Docker

卸载旧版本,安装依赖包,添加yum软件源,更新 yum 软件源缓存,安装 docker-ce,启动docker,防火墙放行

 添加镜像加速,在 /etc/docker/daemon.json 中写入如下内容(如果文件不存在请新建该文件):

{
  "registry-mirrors": [
    "https://hub-mirror.c.163.com",
    "https://mirror.baidubce.com"
  ]
}

 镜像、容器、仓库

Docker 镜像 是一个特殊的文件系统,除了提供容器运行时所需的程序、库、资源、配置等文件外,还包含了一些为运行时准备的一些配置参数(如匿名卷、环境变量、用户等)。镜像 不包含 任何动态数据,其内容在构建之后也不会被改变。

镜像(Image)和容器(Container)的关系,就像是面向对象程序设计中的  和 实例 一样,镜像是静态的定义,容器是镜像运行时的实体。容器可以被创建、启动、停止、删除、暂停等。

容器的实质是进程,但与直接在宿主执行的进程不同,容器进程运行于属于自己的独立的 命名空间 (opens new window)。因此容器可以拥有自己的 root 文件系统、自己的网络配置、自己的进程空间,甚至自己的用户 ID 空间。容器内的进程是运行在一个隔离的环境里,使用起来,就好像是在一个独立于宿主的系统下操作一样。这种特性使得容器封装的应用比直接在宿主运行更加安全。

镜像构建完成后,可以很容易的在当前宿主机上运行,但是,如果需要在其它服务器上使用这个镜像,我们就需要一个集中的存储、分发镜像的服务,Docker Registry 就是这样的服务。

一个 Docker Registry 中可以包含多个 仓库Repository);每个仓库可以包含多个 标签Tag);每个标签对应一个镜像。

基础命令

镜像:

获取镜像

 docker pull [选项] [Docker Registry 地址[:端口号]/]仓库名[:标签]

 例:docker pull ubuntu:18.04

列出镜像

docker image ls
REPOSITORY           TAG                 IMAGE ID            CREATED             SIZE
redis                latest              5f515359c7f8        5 days ago          183 MB
nginx                latest              05a60462f8ba        5 days ago          181 MB

 删除本地镜像

docker image rm [选项] <镜像1> [<镜像2> ...]

容器: 

运行一个容器

 docker run [选项] [Docker Registry 地址[:端口号]/]仓库名[:标签] 

例:docker run -itd ubuntu:18.04  bash   //进入bash终端 ,-d 后台运行

终止容器/重启

docker container stop/restart

查看容器

docker container ls -a

进入容器

docker attach 命令或 docker exec 命令

区别: attach 命令下的exit,会导致容器的停止;exec的不会

docker attach 243c
docker exec -i 69d1 bash

注:只用 -i 参数时,由于没有分配伪终端,界面没有我们熟悉的 Linux 命令提示符,但命令执行结果仍然可以返回。

当 -i -t 参数一起使用时,则可以看到我们熟悉的 Linux 命令提示符。

导入导出容器

docker export 7691a814370e > ubuntu.tar
cat ubuntu.tar | docker import - test/ubuntu:v1.0
docker import http://example.com/exampleimage.tgz example/imagerepo

删除容器

使用 docker container rm 来删除一个处于终止状态的容器

docker container rm trusting_newton

 清理所有处于终止状态的容器

docker container prune

commit

当我们运行一个容器的时候(如果不使用卷的话),我们做的任何文件修改都会被记录于容器存储层里。而 Docker 提供了一个 docker commit 命令,可以将容器的存储层保存下来成为镜像。换句话说,就是在原有镜像的基础上,再叠加上容器的存储层,并构成新的镜像。以后我们运行这个新镜像的时候,就会拥有原有容器最后的文件变化。

docker commit [选项] <容器ID或容器名> [<仓库名>[:<标签>]]
docker commit \
    --author "Tao Wang <twang2218@gmail.com>" \
    --message "修改了默认网页" \
    webserver \
    nginx:v2

使用 docker commit 意味着所有对镜像的操作都是黑箱操作,生成的镜像也被称为 黑箱镜像,换句话说,就是除了制作镜像的人知道执行过什么命令、怎么生成的镜像,别人根本无从得知。而且,即使是这个制作镜像的人,过一段时间后也无法记清具体的操作。

Docker export和docker commit的区别:

Docker export:Export a container's filesystem as a tar archive 保存文件系统快照

Docker commit:Create a new image from a container's changes 根据变更生成新镜像

使用 Dockerfile 定制镜像

Dockerfile 是一个文本文件,其内包含了一条条的 指令(Instruction),每一条指令构建一层,因此每一条指令的内容,就是描述该层应当如何构建。

案例:

使用Dockerfile构建镜像:

在docker1:

基于nginx的基础镜像,修改网站根目录为/webdir

使用RUN命令修改主页index.html的内容为index

使用COPY命令添加页面page1.html和page2.html,内容分别为page1和page2

构建镜像名为nginx-test:v1,构建完镜像后,将镜像发送到docker2

docker pull nginx
mkdir /nginxdir
cd /nginxdir/
touch Dockerfile
echo "page1" > page1.html  
echo "page2" > page2.html

vim Dockerfile 

    FROM nginx  
    RUN mkdir -p /webdir && mv /usr/share/nginx/html/* /webdir/  
    RUN rm -rf /usr/share/nginx/html && ln -s /webdir /usr/share/nginx/html  
    RUN echo "index" > /webdir/index.html  
    COPY page1.html /webdir/  
    COPY page2.html /webdir/ 
docker build -t nginx-test:v1 .

cd ~
docker save -o nginx-test_v1.tar nginx-test:v1
scp nginx-test_v1.tar root@192.168.68.134:/root/

在docker2:

导入镜像,并运行容器,将nginx的80端口映射到docker2的82端口

设置防火墙默认区域为public

docker load -i nginx-test_v1.tar

firewall-cmd --permanent --add-port=82/tcp --zone=public 
firewall-cmd --reload

docker run -d --name my-nginx -p 82:80 nginx-test:v1

验证效果:

在docker1:

Curl docker2ip:82--------àindex

Curl docker2ip:82/page1.html--------àpage1

Curl docker2ip:82/page2.html--------àindex2

 从空白镜像创建Docker

http://t.csdnimg.cn/TORxbicon-default.png?t=N7T8http://t.csdnimg.cn/TORxb

  • 15
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值