docker使用手册

一、安装Docker

  • 基础
    在电脑上安装VMware并安装centos7
  • 换yum源
    因为centos的yum源是国外的镜像仓库,一般多比较慢,或者连不上,所以将yum源换成国内阿里的(或者其他)。参考:阿里官方切换Yum源教程
    如果切换yum源之后还是不能通过yum下载(比如一值ERROR12,ERROR14),那可能是网络问题,换成自己手机热点或者其他的网络试试(有时候网络问题虽然可以ping通mirrors.aliyun.com但还是yum安装出现问题,作者本人的血泪经历)
  • 安装yum源
[root@linux-node1 ~]# cd /etc/yum.repos.d/
[root@linux-node1 yum.repos.d]# wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
  • 下载docker
yum install docker-ce

docker分企业版(EE)和社区版(CE),社区版免费,企业版收钱,两个版本更新速度不一样。

  • 启动docker
systemctl start docker

二、Docker相关命令

1、镜像

  • docker pull:从dockerhub查找镜像
[root@k8s-master ~]# docker search centos   
NAME                              DESCRIPTION                                     STARS     OFFICIAL<是否为docker官方发布>   AUTOMATED
centos                            The official build of CentOS.                   6789      [OK]       
  • 查看镜像
    docker image
  • 拉取镜像
    docker pull
  • 将镜像做成离线压缩包/解压离线压缩包:
    save/load
    docker save -o centos.tar.gz centos
    docker load -i centos.tar.gz

2、容器相关操作

  • 创建容器并启动
    docker run
    创建的容器在前台执行
docker run centos<镜像名称> /bin/echo 'HE' <要在容器执行的指令>

创建并进入容器内部: -it

[root@linux-node1 ~]#docker run --name mydocker -it centos /bin/bash
[root@1b0cae722fa0 /]#

让容器后台运行

 [root@linux-node1 ~]# docker run -d --name mydocker2 centos /bin/bash

容器已经创建但是未启动

[root@linux-node2 maiyp]# docker ps -a
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                     PORTS               NAMES
20273b3451bf        centos              "/bin/bash"              9 hours ago         Exited (0) 3 seconds ago                       mypdocker
[root@linux-node2 maiyp]# docker start mypdocker
mypdocker
[root@linux-node2 maiyp]# docker ps -a
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                   PORTS               NAMES
20273b3451bf        centos              "/bin/bash"              9 hours ago         Up 19 seconds                                mypdocker
  • 进入容器
    attach
    进入容器时,如果多个终端同时attach到同一个容器,所有的终端都会同步显示
docker attach mydocker

nsenter
使用nsenter可以访问另一个进程的名字空间
先获取容器的第一个进程的PID,然后通过PID进入容器

PID=$( docker inspect --format "{
  { .State.Pid }}" <容器名或ID>) )
#如果容器没有启动,PID为0
nsenter --target $PID --mount --uts --ipc --net --pid

通过脚本进入容器

[root@linux-node2 maiyp]# cat docker_in.sh 
#!/bin/bash

docker_in(){
docker_nm=$1
docker_pid=$( docker inspect --format "{
  { .State.Pid }}" $docker_nm)
if [ $docker_pid -eq 0 ]
then
	echo "the docker is not starting!"
	exit -1
fi
nsenter --target $docker_pid --mount --uts --ipc --net --pid
}
docker_in $1
[root@linux-node2 maiyp]# ./docker_in.sh mypdocker
[root@20273b3451bf /]# 
#主机名为容器ID前几位

通过exec进入容器

[root@linux-node1 ~]# docker exec mydocker whoami
root
#不进入容器执行命令
[root@linux-node2 maiyp]# docker exec -it mypdocker /bin/bash
[root@20273b3451bf /]# 
#进入容器执行命令

使用docker exec、nsenter进入容器后,执行exit退出容器,容器并不会关闭。但是使用docker attach进入容器,输入exit退出容器后,容器也会自动终止。因为除了attach,nsenter和exec实际中都是开了一个新的shell在执行。而attach是使用容器本身启动的/bin/bash,这个shell环境退出了。那么容器就自动退出了。

  • 将容器做成离线压缩包/解压离线压缩包
    export/import
    docker export -o centos.tar centos(container)
    docker import centos.tar centos

三、Dockerfile

(1)FROM
基础镜像,必须是可以下载下来的,定制的镜像都是基于 FROM 的镜像,这里的 centos就是定制需要的基础镜像。
(2)MAINTAINER
指定镜像的作者信息
(3)RUN
指定在当前镜像构建过程中要运行的命令
包含两种模式
1、Shell
RUN (shell模式,这个是最常用的,需要记住)
RUN echo hello
2、exec模式
RUN “executable”,“param1”,“param2”
RUN [“/bin/bash”,”-c”,”echo hello”]
等价于/bin/bash -c echo hello
(4)EXPOSE指令<

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值