docker 初步使用

时间:2024-06-05 09:05:02

CentOS Linux release 7.2.1511

Docker version 17.03.1-ce

安装与启动

yum默认只有旧版本的docker,没有docker-ce,需要添加一个docker-ce的源:

// 这里用的中科大的源,速度会比较理想;而官方的地址是:https://download.docker.com
# wget https://mirrors.ustc.edu.cn/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repo
#yum install -y docker-ce

启动和验证:

# systemctl start docker
# docker -v
Docker version 17.03.1-ce, build c6d412e

查询和下载镜像

查询:

# docker search centos
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
centos The official build of CentOS. 3217 [OK]
jdeathe/centos-ssh CentOS-6 6.8 x86_64 / CentOS-7 7.3.1611 x8... 63 [OK]
consol/centos-xfce-vnc Centos container with "headless" VNC sessi... 24 [OK]
...

没什么特殊原因当然用第一个官方的镜像,理论上应该这样下载docker pull centos,但因为服务器在国外容易失败,所以用国内的源daocloud.io/centos

下载和展示:

# docker pull daocloud.io/centos
# docker images
  REPOSITORY           TAG                 IMAGE ID            CREATED             SIZE
  daocloud.io/centos   latest              67591570dd29        11 weeks ago        191.8 MB

启动镜像

# docker run -dti --name hellodocker daocloud.io/centos

参数解析:

-d      后台运行

-t      分配一个伪终端,这样下面才能连进去

-i      保持输入,这样连进去后才能正常使用命令

--name   指定容器的名字,不指定会随机生成一个

从镜像启动后的东西叫容器,通过 ps 查看(ps只显示正在运行的容器,显示所有需要加参数-a):

# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
c74f53b8dbef daocloud.io/centos "/bin/bash" seconds ago Up seconds hellodocker

第一列是容器id,最后一列是容器名,在下面连接、停止、启动等操作时传入这两者都可以,其中id可以只传前三位类似git那种使用方式;

容器管理

连接到启动的容器用 attach ,连接成功后就可以像操作一台真实的linux一样(不过由于attach到的是同一个/bin/bash所以不支持多用户操作):

# docker attach hellodocker
[root@c74f53b8dbef /]# whoami
root
[root@c74f53b8dbef /]# pwd
/
[root@c74f53b8dbef /]#

attach后退出有两种方式,直接输入exit,但这样会把容器也停掉;不停容器的退出方式是ctrl+p+q;

停止容器:

# docker stop hellodocker    //正常关机,需要一点时间
# docker kill hellodocker //这个相当于直接断电

再启动的时候注意不要再用docker run了,那样会重新生成一个新容器,应该这样:

# docker start hellodocker

删除容器和镜像:

# docker rm hellodocker
# docker rmi daocloud.io/centos

over