docker基础学习

docker这个词还是第一次从在银联的同学那里听来的,感觉很好玩的样子,然后找了些资料学习了一会儿,当时主要是一些基本的操作命令,如安装docker、运行docker镜像、构建自己的镜像。巧的是现在这家公司就在用docker+kubernetes做服务治理,过完年后更是要在生产环境正式使用docker和kubernets, 所以在这里把之前学的一些基本操作记录下,主要是在linux上操作docker

  • 什么是docker

docker是世界领先跨平台的开源容器引擎,它有助于快速地交付应用。能够将应用程序与基础设施层(运行环境、数据库等)隔离,并且能将基础设施当做程序进行管理。docker的使用可以更快地打包、测试、部署应用程序,缩短从编写到部署运行代码的周期。

  • docker思想
  1. 集装箱
  2. 标准化 a. 运输方式 b. 存储方式 c. API接口
  3. 隔离
  • docker解决了什么问题

让快速拓展、弹性伸缩变得简单。

  • docker的架构
  1. Docker daemon (Docker守护进程)
  2. Client (Docker客户端)
  3. Images (Docker镜像)
  4. Container (容器)
  5. Registry (集中存储于分发镜像的服务)
  • docker安装
  1. 系统要求 a. CentOS 7.X 之上 (CentOS 6.X 升级内核到3.8以上也能安装成功) b. 安装在64位平台

  2. yum安装docker

root用户下安装

安装最新版docker

# yum -y install docker-io 

ps:

docker.io ismaintained by Ubuntu

docker-engine ismaintained by Docker

若出现 No package docker available 则是yum没有找到docker包,更新epel第三方软件库,运行命令:

# yum install epel-release

安装指定版本的

# yum -y install docker-engine-<VERSION_STRING>
# yum -y install docker-engine-1.13.0

执行docker ps命令,出现

"Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running"

此时已确定Docker本身已经安装正常。

问题原因是因为docker服务没有启动,所以在相应的/var/run/ 路径下找不到docker的进程。

执行 service docker start 命令,启动docker服务,返回

配置镜像加速器

针对Docker客户端版本大于 1.10.0 的用户

您可以通过修改daemon配置文件/etc/docker/daemon.json来使用加速器

# sudo mkdir -p /etc/docker
# sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://0ei6y2se.mirror.aliyuncs.com"]
}
EOF
# sudo systemctl daemon-reload
# sudo systemctl restart docker

启动docker

# systemctl start docker  /  service docker start 

查看docker安装版本

# docker version

卸载docker

# yum -y remove docker-engine

删除镜像、容器等

# rm -rf /var/lib/docker

搜索镜像

# docker search imagename
# docker search nginx

下载镜像

# docker pull imagename
# docker pull nginx

从指定的Docker Registry 下载指定标签的镜像

# docker pull hub.c.163.com/library/java:latest  从网易蜂巢镜像中心下载

列出镜像

# docker images

删除指定名称镜像

# docker rmi hello-world

删除所有镜像

# docker rmi -f $(docker images)  -f表示强制删除

运行镜像

# docker run 
# docker run java  /bin/echo 'Hello World'
# docker run -d -p 8888:80 nginx   后台运行镜像 开放宿主主机的8888端口访问nginx

列出容器

# docker ps

停止容器

# docker stop containerId

强制停止容器

# docker kill containerId

启动已停止的容器

# docker start containerId
# docker restart  

进入容器

  1. 直接进入

容器运行在后台,如果想进入它的终端

# docker attach containerId
  1. 获取容器的进程ID用nsenter 进入
# docker inspect --format "{{.State.Pid}}" $CONTAINER_ID
# nsenter --target "$PID" --mount --uts -ipc --net --pid

3.docker exec -it命令进入

使用“docker attach”命令进入container(容器)有一个缺点,那就是每次从container中退出到前台时,container也跟着退出了。

要想退出container时,让container仍然在后台运行着,可以使用“docker exec -it”命令。每次使用这个命令进入container,当退出container后,container仍然在后台运行,命令使用方法如下:

# docker exec -it containerId /bin/bash

/bin/bash 在container中启动一个bash shell

删除指定容器(需先停止运行)

# docker rm containerId 

删除所有容器

# docker rm -f $(docker ps -a -q)

转载于:https://my.oschina.net/hensemlee/blog/1613957

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值