docker

为什么用docker就不介绍了

我是用的是ubantu的系统,ubantu的安装(自己百度把,太简单了,什么都不用配置)

条件

Docker 需要两个重要的安装要求:
它仅适用于 64 位 Linux 安装 它需要 Linux 内核版本 3.10 或更高版本。
要查看当前的内核版本,请打开终端并键入 uname -r 命令以查看内核版本:

    lusifer@UbuntuBase:~$ uname -r 
    4.4.0-21-generic

查看操作系统是32位还是64位:

lusifer@UbuntuBase:~$ uname --m 
x86_64

安装 Docker

lusifer@UbuntuBase:~$ curl -sSL https://get.daocloud.io/docker |sh 
# Executing docker install script, commit: 49ee7c1 + sudo -E sh -c apt-get update -qq >/dev/null + sudo -E sh -c apt-get install -y -qq apt-transport-https ca-certificates curl softwar e-properties-common >/dev/null + sudo -E sh -c curl -fsSL "https://download.docker.com/linux/ubuntu/gpg" | apt-key add -qq - >/dev/null + sudo -E sh -c echo "deb [arch=amd64] https://download.docker.com/linux/ubuntu xenial edge" > /etc/apt/sources.list.d/docker.list + [ ubuntu = debian ]
72+ sudo -E sh -c apt-get update -qq >/dev/null + sudo -E sh -c apt-get install -y -qq --no-install-recommends docker-ce >/dev/null + sudo -E sh -c docker version Client: Version:      17.10.0-ce API version:  1.33 Go version:   go1.8.3 Git commit:   f4ffd25 Built:        Tue Oct 17 19:04:16 2017 OS/Arch:      linux/amd64
Server: Version:      17.10.0-ce API version:  1.33 (minimum version 1.12) Go version:   go1.8.3 Git commit:   f4ffd25 Built:        Tue Oct 17 19:02:56 2017 OS/Arch:      linux/amd64 Experimental: false If you would like to use Docker as a non-root user, you should now consider adding your user to the "docker" group with something like:
  sudo usermod -aG docker lusifer
Remember that you will have to log out and back in for this to take effect!
WARNING: Adding a user to the "docker" group will grant the ability to run         containers which can be used to obtain root privileges on the         docker host.         Refer to https://docs.docker.com/engine/security/security/#docker-daemon-attac k-surface         for more information.

看到如下表示成功

If you would like to use Docker as a non-root user, you should now consider adding your user to the "docker" group with something like:
  sudo usermod -aG docker lusifer
Remember that you will have to log out and back in for this to take effect!

然后赋予用户操作权限,这一步不做非root用户没有权限操作docker
lusifer是我的主机名

 sudo usermod -aG docker lusifer

启动 Docker 后台服务

service docker start

更改image的地址

vi   /lib/systemd/system/docker.service
 添加这个地址--registry-mirror=https://jxus37ac.mirror.aliyuncs.com 

在这里插入图片描述
保存配置:

 systemctl daemon-reload 

重启服务:

service docker restart 

docker启动测试

Docker 以 ubuntu15.10 镜像创建一个新容器,然后在容器里执行 bin/echo “Hello Docker”

lusifer@UbuntuBase:~$ docker run ubuntu:15.10 /bin/echo "Hello Docker" 
Hello Docker

可以交互的容器

这个命令执行后
lusifer@UbuntuBase:~$ docker run -it ubuntu:15.10 /bin/bash 
这一行就是docker的交互命令
root@76ab065de67b:/#

退出容器:

  • 运行 exit
  • 使用 CTRL + D

后台模式运行容器

lusifer@UbuntuBase:~$ docker run -d ubuntu:15.10 /bin/sh -c "while true; do echo hello docker; sleep 1; done" 
会显示容器的id,唯一
0977407542d16c5699a2cc0455d977cb5d8ef011a1a762cdcf2323851f6b3ed3

查看运行中的容器

lusifer@UbuntuBase:~$ docker ps 
CONTAINER ID        IMAGE               COMMAND                  CREATED             ST ATUS              PORTS               NAMES 
0977407542d1        ubuntu:15.10        "/bin/sh -c 'while..."   2 seconds ago       Up 1 second                             thirsty_kowalevski

CONTAINER ID:容器ID
NAMES:自动分配的容器名称

查看容器日志

lusifer@UbuntuBase:~$  docker logs  容器ID 或者  自动分配的容器名称
hello docker 
hello docker
hello docker
hello docker

停止容器

lusifer@UbuntuBase:~$ docker stop thirsty_kowalevski 
thirsty_kowalevski 
lusifer@UbuntuBase:~$ docker ps 
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES 

帮助

docker 或者docker --help

列出本地镜像

lusifer@UbuntuBase:~$ docker images 
REPOSITORY          TAG                 IMAGE ID            
CREATED             SIZE ubuntu              15.10               
9b9cb95443b5        15 months ago       137MB training/webapp     
latest              6fae60ef3446        2 years ago         349MB
  • REPOSITORY:表示镜像的仓库源
  • TAG:镜像的标签
  • IMAGE ID:镜像ID
  • CREATED:镜像创建时间
  • SIZE:镜像大小

获取镜像

lusifer@UbuntuBase:~$ docker pull ubuntu:14.04 
14.04: Pulling from library/ubuntu bae382666908:。。。Status: Downloaded newer image for ubuntu:14.04

查找镜像

lusifer@UbuntuBase:~$ docker search ubuntu

创建自己的镜像

使用 Dockerfile 指令来创建一个新的镜像

docker build -f /path/to/a/Dockerfile
docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
<none>              <none>              2fe8c403f348        3 seconds ago       64.2MB

给自定义的image添加REPOSITORY和tag

hht@hht-virtual-machine:/usr/local/docker$ docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
hht                 01                  2fe8c403f348        32 seconds ago      64.2MB

一个简单的Dockerfile

FROM ubuntu 
MAINTAINER Lusifer

RUN /bin/echo 'root:123456' |chpasswd 
RUN useradd lusifer 
RUN /bin/echo 'lusifer:123456' |chpasswd

RUN /bin/echo -e "LANG=\"en_US.UTF-8\"" >/etc/default/local
EXPOSE 22 EXPOSE 80
CMD /usr/sbin/sshd -D

更新镜像

更新镜像之前,我们需要使用镜像来创建一个容器:

lusifer@UbuntuBase:~$ docker run -it ubuntu:15.10 /bin/bash 
root@9a3dcafd7a83:/# apt-get update 

在运行的容器内使用 apt-get update 命令进行更新。
在完成操作之后,输入 exit 命令来退出这个容器。
此时ID为 9a3dcafd7a83 的容器,是按我们的需求更改的容器。我们可以通过命令 docker commit 来提交容器副本。

lusifer@UbuntuBase:~$ docker commit -m="has update" -a="lusifer" 9a3dcafd7a83 lusifer/ubuntu:v2 
sha256:2642b4944b285974e5f007f30bc33b651220ea9931982c3c53b61a8f8fd5011b
  • -m:提交的描述信息
  • -a:指定镜像作者
  • 9a3dcafd7a83:容器ID,在使用docker run启动容器时有一个id,例如下图的root@后面就是容器id
  • lusifer/ubuntu:v2:指定要创建的目标镜像名
    在这里插入图片描述

用上面的查看镜像的命令查看

文件交互

docker容器与机器怎么实现文件交互
首先,启动docker容器,假设docker run启动容器时id为9a3dcafd7a83

sudo docker cp  root/jdk-8u131-linux-x64.tar.gz  9a3dcafd7a83:/root 

安装jdk

tar zxvf jdk-8u181-linux-x64.tar.gz
vim /etc/profile
export JAVA_HOME=/usr/java/jdk1.8.0
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib:$CLASSPATH
export JAVA_PATH=${JAVA_HOME}/bin:${JRE_HOME}/bin
export PATH=$PATH:${JAVA_PATH}
 source /etc/profile

然后更新镜像,如何更新看上面

或者dockerfile安装jdk
dockerfile

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

orange大数据技术探索者

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值