发布于

Docker基本使用

Authors
  • avatar
    Name
    田中原
    Twitter

docker基本使用

目录

启动docker

安装

以下的命令有的需要root权限,如果报错请使用root,或加sudo

1、添加yum源。

yum install epel-release –y
yum clean all# yum list

2、通过yum安装并运行Docker。

yum install docker-io –y
systemctl start docker

3、检查安装结果。

docker info

出现以下信息说明信息则表明安装成功。

启动
systemctl  start docker.service

设置开机启动
systemctl  enable docker.service

问题整理
docker ps

Cannot connect to the Docker daemon. Is the docker daemon running on this host?

ps aux | grep docker
root     17210  0.0  2.4 499624 24928 ?        Ssl  Sep06   0:26 /usr/bin/dockerd-current --add-runtime docker-runc=/usr/libexec/docker/docker-runc-current --default-runtime=docker-runc --exec-opt native.cgroupdriver=systemd --userland-proxy-path=/usr/libexec/docker/docker-proxy-current --selinux-enabled --log-driver=journald --signature-verification=false
root     17214  0.0  0.6 262960  6948 ?        Ssl  Sep06   0:02 /usr/bin/docker-containerd-current -l unix:///var/run/docker/libcontainerd/docker-containerd.sock --shim docker-containerd-shim --metrics-interval=0 --start-timeout 2m --state-dir /var/run/docker/libcontainerd/containerd --runtime docker-runc --runtime-args --systemd-cgroup=true
zeno     21958  0.0  0.0 112648   964 pts/0    R+   14:35   0:00 grep --color=auto docker


查看进程,其实docker已经运行了。其实是权限不够,需要在加上sudo.还有很多类似的命令,按照理解查看应该是不要root权限的,其实不然。docker info,docker ps,docker images都会没有权限

Docker守护进程管理。
systemctl start docker    #运行Docker守护进程
systemctl stop docker      #停止Docker守护进程
systemctl restart docker   #重启Docker守护进程

docker基本用法

2、镜像管理。

下载基础镜像,具体操作可参考如何下载docker镜像,本文使用的是来自阿里云仓库的Apache镜像。您可在阿里云docker市场搜索更多镜像

docker pull registry.cn-hangzhou.aliyuncs.com/lxepoo/apache-php5

修改标签,由于阿里云仓库镜像的镜像名称很长,可以修改镜像标签以便记忆区分。

docker tag  registry.cn-hangzhou.aliyuncs.com/lxepoo/apache-php5:latest aliweb:v1

查看已有镜像。

docker images

强制删除镜像。

docker  rmi  –f  registry.cn-hangzhou.aliyuncs.com/lxepoo/apache-php5

3、容器管理。e121d5f99e1e是执行docker images命令查询到的IMAGE ID,使用docker run命令进入容器。

docker run –ti e121d5f99e1e /bin/bash

使用exit可以退出当前容器。run命令加上–d参数可以在后台运行容器,—name指定容器命名为apache。

docker run -d --name apache e121d5f99e1e

进入后台运行的容器。

docker exec -ti apache /bin/bash

将容器做成镜像。

docker commit containerID/containerName  newImageName:tag

为了方便测试和恢复,先将源镜像运行起来后再做一个命名简单的镜像做测试。

docker commit 4c8066cd8c01 apachephp:v1

运行容器并将宿主机的8080端口映射到容器里去。

docker run -d -p 8080:80 apachephp:v1

在浏览器输入宿主机ip加8080端口访问测试

Docker镜像命令

docker rmi [镜像] #删除镜像
docker search    #搜索镜像
docker images    # 列出镜像
docker run 镜像名:标签  # 运行镜像 REPOSTITORY:TAG docker run --name web2 -d -p 81:80 nginx:v2
exit  # 退出镜像
docker pull 镜像名  # 获取镜像
-i # 交互式操作
-t # 终端
-d # 让容器在后台运行。
-P [主机端口]:[容器端口] # 将容器内部使用的网络端口映射到我们使用的主机上。
-v [主机目录]:[容器目录]
docker commit -m="has update" -a="runoob" e218edb10161 runoob/ubuntu:v2
-m:提交的描述信息
-a:指定镜像作者
e218edb10161:容器ID
2runoob/ubuntu:v2:指定要创建的目标镜像名
docker commit    #慎用,黑箱操作 容易使镜像变得臃肿
docker diff    #比较改动
docker build [选项] <上下文路径/URL/->

Docker容器命令

docker rm [name/id] #删除docker容器 ,容器必须是停止的否则报错
docker start [name/id] #重新启动docker
docker ps #查看正在运行的docker进程
docker ps -a #查看所有已创建的容器
docker rm $(docker ps -a -q)  #删除所有的终止容器 Mac
docker port [name/id] #查看进程端口映射
docker stop [name/id] #停止进程
docker logs [name/id] #查看容器内的标准输出
-f #实时日志
docker top [name/id] #查看容器内的的进程
docker inspect [name/id] #来查看Docker的底层信息。它会返回一个 JSON 文件记录着 Docker 容器的配置和状态信息。
docker inspect container_name | grep Mounts -A 20 #查看容器挂载目录
docker attach [name/id] #进入正在运行的docker进程中 NOTE: 这个链接终止后,容器会退出后台运行
docker exec -it [name/id] /bin/sh  # 进入正在运行的docker进程中 常加参数 -it

sudo docker run -ti --rm --entrypoint="/bin/bash" jenkins -c "whoami && id" #查看容器拥有者
docker run -ti --rm --entrypoint="/bin/bash" jenkins -c "ls -la /var/jenkins_home" #查看容器内/var/jenkins_home拥有者