首先下载一个基础镜像rhel7
【1】搜索可用的镜像
[root@random docker-ce]# docker search rhel7
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
richxsl/rhel7 RHEL 7 image with minimal installation 14
......
【2】下载镜像
[root@random docker-ce]# docker pull richxsl/rhel7
Using default tag: latest
latest: Pulling from richxsl/rhel7
1de5db95c595: Pull complete
Digest: sha256:8f3aae325d2074d2dc328cb532d6e7aeb0c588e15ddf847347038fe0566364d6
Status: Downloaded newer image for richxsl/rhel7:latest
[root@random docker-ce]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
httpd latest 2a51bb06dc8b 3 days ago 132MB
richxsl/rhel7 latest 9c7b3825758a 3 years ago 245MB
【3】镜像管理
docker search image_name #在镜像库中搜索名字中包含image_name的镜像。
docker pull image_name #从镜像库中拉取镜像image_name。
docker push image_name #将本地的镜像image_name上传到镜像库。
docker images #查看本地的镜像列表。
docker save -o image_name.tar image_name #将本地的镜像image_name保存为image_name.tar文件。
docker rmi image_name #删除镜像image_name,删除后通过docker images将不能看到image_name。
【4】容器管理
创建容器
docker run --name=con_name images #--name后面接docker容器的名称,自己根据习惯起,最后的images为本地的镜像,也就是可以通过docker images查看到的镜像。
docker run 后面常用的参数及说明:
-d # 指定容器运行于前台还是后台,默认为false
-i #打开STDIN,用于控制台交互。
-t #分配tty设备,该可以支持终端登录,默认为false,常与-i一起使用。
-u #指定容器的用户
-w #指定容器的工作目录
-p #指定容器暴露的端口注:-p 参数说明
-p hostPort:containerPort #将容器端口映射到主机端口,如8080:80表示把容器的80端口映射为主机的8080端口,因此在主机的8080端口就可以访问到容器的服务。
-h # 指定容器的主机名
-v #给容器挂载存储卷,挂载到容器的某个目录
--net="bridge" #容器网络设置:
参数说明:
bridge #使用docker daemon指定的网桥
host #容器使用主机的网络
container:NAME_or_ID #使用其他容器的网路,共享IP和PORT等网络资源
none #容器使用自己的网络(类似--net=bridge),但是不进行配置--restart="no" #指定容器停止后的重启策略:
参数说明:
no #容器退出时不重启
on-failure #容器故障退出(返回值非零)时重启
always #容器退出时总是重启
通过docker run 运行容器后会用到的一些命令:
docker ps:
docker ps #查看运行的容器。
[root@random docker-ce]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 5381a6c11fb7 httpd "httpd-foreground" 2 hours ago Up 2 hours 0.0.0.0:8080->80/tcp my-apache-app
docker ps -a #显示所有的容器,包括未运行的容器。
docker ps -q #只显示容器ID。
[root@random docker-ce]# docker ps -q 5381a6c11fb7
docker ps -l #显示最近创建的容器。
docker port con_id #查看容器ID为con_id的容器端口映射情况。
[root@random docker-ce]# docker port 5381a6c11fb7 80/tcp -> 0.0.0.0:8080
docker logs -f con_name #动态查看容器日志。
[root@random docker-ce]# docker logs -f my-apache-app AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using 172.17.0.2. Set the 'ServerName' directive globally to suppress this message AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using 172.17.0.2. Set the 'ServerName' directive globally to suppress this message [Mon Nov 19 09:54:20.040538 2018] [mpm_event:notice] [pid 1:tid 139650001200320] AH00489: Apache/2.4.37 (Unix) configured -- resuming normal operations [Mon Nov 19 09:54:20.041124 2018] [core:notice] [pid 1:tid 139650001200320] AH00094: Command line: 'httpd -D FOREGROUND' 172.17.0.1 - - [19/Nov/2018:09:54:30 +0000] "GET / HTTP/1.1" 200 12 172.17.0.1 - - [19/Nov/2018:09:54:30 +0000] "GET /favicon.ico HTTP/1.1" 404 209
docker attach con_name #进入容器con_name。
docker commit将运行的镜像保存为另一个镜像:
docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]
options可以使用的参数:
-a :提交的镜像作者; -c :使用Dockerfile指令来创建镜像; -m :提交时的说明文字; -p :在commit时,将容器暂停。
docker history image_name #查看镜像操作历史,下面看一个例子:
通过docker commit保存镜像,-m指定描述为test,更改人为random,新容器名称为test,tag为1。 [root@random docker-ce]# docker commit -m "test" -a random 5381a6c11fb7 test:1 sha256:44b620d93d68a83e307560158ef592e6ae4ab51c0516a076d50805f160fb6425 查看本地镜像,可以看到镜像test的tag为1。 [root@random docker-ce]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE test 1 44b620d93d68 4 minutes ago 132MB httpd latest 2a51bb06dc8b 3 days ago 132MB richxsl/rhel7 latest 9c7b3825758a 3 years ago 245MB 查看镜像test的历史,可以看到最近的一次更改在5分钟前。 [root@random docker-ce]# docker history 44b620d93d68 IMAGE CREATED CREATED BY SIZE COMMENT 44b620d93d68 5 minutes ago httpd-foreground 2B test
docker inspect con_name 查看容器最基本的信息。
docker exec命令,在容器外运行容器命令:
命令格式为:
docker exec [options] con_name command [arg1,arg2,arg3.....]
options说明:
-d :分离模式: 在后台运行 -i :即使没有附加也保持STDIN 打开 -t :分配一个伪终端
容器的启动和关闭:
docker start con_name #启动容器。
docker restart con_name #重启容器。
docker stop con_anme #关闭容器。
docker create [options] image [command] [arg1,arg2,arg3....] 这个命令语法与docker run相同,但是它只创建容器,并不启动容器。
docker rm con_name #用来删除容器。
docker rm `docker ps -qa` #删除所有容器。