uname -r
3.10.0-693.11.1.el7.x86_64
sudo yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-selinux \
docker-engine-selinux \
docker-engine
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
File "/bin/yum-config-manager", line 135
except yum.Errors.RepoError, e:
^
SyntaxError: invalid syntax
133 try:
134 opts = yb.doUtilConfigSetup()
135 except yum.Errors.RepoError as e:
136 logger.error(str(e))
137 sys.exit(50)
File "/bin/yum-config-manager", line 159
print yb.fmtSection('main')
^
SyntaxError: invalid syntax
159 print(yb.fmtSection('main'))
160 print(yb.conf.dump())
239: except (IOError, OSError, yum.Errors.YumBaseError) as e:
254: except yum.Errors.DuplicateRepoError as e:
261: except ValueError as e:
272: except (IOError, OSError) as e:
安装之前必须确保yum包是最新状态
yum update
下载、执行安装docker脚本
下载: curl -fsSl https://get.docker.com -o get-docker.sh
执行: sudo sh get-docker.sh
sudo systemctl start docker
Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
1b930d010525: Pull complete
Digest: sha256:41a65640635299bab090f783209c1e3a3f11934cf7756b09cb2f1e02147c6ed8
Status: Downloaded newer image for hello-world:latest
Hello from Docker!
This message shows that your installation appears to be working correctly
Docker运行容器之前需要本地存在对应的镜像。
镜像是用来创建Docker容器的。一个镜像可以包含一个完整的操作系统环境和用户需要的其他应用程序,在Docker Hub里面有大量现成的镜像提供下载,Docker的镜像是只读的,一个镜像可以创建多个容器。
Docker利用容器来进行开发,运行应用。
容器是镜像创建的实列,它可以启动,开始,停止,删除,每个容器都是相互隔离的,保证安全的平台。
仓库是集中存放镜像文件的地方。
每个仓库中又包含了多个镜像,每个镜像有不同的标签(TAG)
获取镜像的命令是 docker pull
格式: docker pull [选项] [Docker Registry 地址[:端口号]/]仓库名[:标签]
使用: docker pull ubuntu:18.04
上列的命令中,拉取镜像的同时,没有给出具体的镜像仓库地址,所以默认去 docker hub 获取镜像, 镜像名称是ubuntu:18.04的镜像,因此将会获取官方镜像 library/ubuntu 仓库中标签为18.04的镜像。
获取镜像成功之后,接下来运行镜像。
在此ubuntu容器就运行起来了,进入了ubuntu系统中。
参数:
docker run 运行容器的命令
-it 这是两个参数 -i: 交互式操, -t: 终端
--rm 容器退出之后随即删除,避免浪费空间,默认情况容器是不会自动删除的需要手动删除。
列出所有镜像
docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
ubuntu 18.04 7698f282e524 2 weeks ago 69.9MB
hello-world latest fce289e99eb9 4 months ago 1.84kB
参数:
REPOSITORY: 仓库名称
TAG: 标签
IMAGE ID: 镜像ID
CREATED: 创建时间
SIZE: 占用空间
镜像体积
docker system df
虚悬镜像
<none> <none> 00285df0df87 5 days ago 342 MB
这个镜像原本是有镜像名和标签的,原来为mongo:3.2 随着官方镜像维护,发布了新版本之后,重新 docker pull mongo:3.2 的时候,mongo:3.2这个镜像名被转移到了新下载的镜像身上,而旧的镜像上的这个名称则被取消了,从而成为了<none>,除了 docker pull可能会导致成这种情况, docker build 也同样可以导致这种现象,由于新旧镜像同名,旧镜像名称被取消,从而出现仓库名, 标签均为<none>的镜像。这类无标签镜像也被称之为虚悬镜像,可以使用下面的 命令来专门显示这类镜像。
docker image ls -f dangling=true
虚悬镜像一般来说是没有用的, 可以删除,使用以下命令删除虚悬镜像。
docker image prune
列出指定镜像
docker image ls ubuntu # ubuntu镜像名称
列出特定的某个镜像
docker image ls ubuntu:18.04 # ubuntu:18.04 镜像名称: 18.04 标签
过滤出 ubuntu:18.04镜像之后创建的镜像
docker image ls -f sinc=ubuntu:18.04
过滤出ubuntu:18.04之前创建的镜像
docker image ls -f before=ubuntu:18.04
已镜像ID显示出镜像数量
docker image ls -q
# 镜像ID
7698f282e524
fce289e99eb9
format模板语法显示指定字段
docker image ls --format "{{.ID}}: {{.Repository}}"
# 显示
7698f282e524: ubuntu
fce289e99eb9: hello-world
显示标题行,自己定义列
docker image ls --format "table {{.ID}}\t {{.Repository}}\t{{.Tag}}"
# 显示
IMAGE ID REPOSITORY TAG
7698f282e524 ubuntu 18.04
fce289e99eb9 hello-world latest
删除镜像
删除之前,镜像必须停止,才可以删除。
docker image rm 镜像ID
Docker运行Nginx
获取nginx镜像
sudo docker pull nginx
查看当前运行的docker镜像
docker ps
运行Nginx镜像
sudo docker run -d -p 8000:80 --name nginx_test nginx
进入Docker运行中容器
docker image ls # 查看镜像
docker ps # 查看运行中的容器
docker ps -a # 查看所有容器
docker exec -it webserver容器名称 bash