1.安装配置
实验环境:
~]# cat /etc/redhat-release
CentOS Linux release 7.6.1810 (Core)
~]# uname -r
3.10.0-957.el7.x86_64
注:由于在内核2.6版本后才支持docker,请使用内核版本高于2.6的系统搭建
1.1 版本选择
yum安装的是1.13版本,我们这儿选择较新版本安装,最新版本安装包 docker-ce
~]# yum list docker
docker.x86_64 2:1.13.1-103.git7f2769b.el7.centos
~]# wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -P /etc/yum.repos.d/
~]# yum install -y docker-ce
...
Installed:
docker-ce.x86_64 3:19.03.3-3.el7
...
1.2 镜像加速
由于默认镜像仓库dockerhub在国外,设置镜像加速加快访问,可添加多个,用","隔开。且配置文件默认不存在,需要手动创建。国内镜像加速站点有很多,这儿使用阿里镜像加速
~]# mkdir -p /etc/docker
~]# cat /etc/docker/daemon.json
{
"registry-mirrors": ["https://nqq67ahg.mirror.aliyuncs.com"]
}
~]# systemctl start docker
~]# systemctl enable docker
查看版本信息:
~]# docker version
Client: Docker Engine - Community
Version: 19.03.3
API version: 1.40
Go version: go1.12.10
Git commit: a872fc2f86
Built: Tue Oct 8 00:58:10 2019
OS/Arch: linux/amd64
Experimental: false
Server: Docker Engine - Community
Engine:
Version: 19.03.3
API version: 1.40 (minimum version 1.12)
Go version: go1.12.10
Git commit: a872fc2f86
Built: Tue Oct 8 00:56:46 2019
OS/Arch: linux/amd64
Experimental: false
containerd:
Version: 1.2.10
GitCommit: b34a5c8af56e510852c35414db4c1f4fa6172339
runc:
Version: 1.0.0-rc8+dev
GitCommit: 3e425f80a8c931f88e6d94a8c831b9d5aa481657
docker-init:
Version: 0.18.0
GitCommit: fec3683
~]# docker info #可看到我们设置的加速站点
...
Registry Mirrors:
https://nqq67ahg.mirror.aliyuncs.com/
...
2.简单使用
docker在较新版本中引入了一类管理命令,但仍兼容了以前版本的命令,具体可help查看,为了适应新版本,我们以下都适用新版本的命令
2.1 镜像操作
~]# docker image --help #可help查看具体命令
...
Commands:
build Build an image from a Dockerfile
history Show the history of an image
import Import the contents from a tarball to create a filesystem image
inspect Display detailed information on one or more images
load Load an image from a tar archive or STDIN
ls List images
prune Remove unused images
pull Pull an image or a repository from a registry
push Push an image or a repository to a registry
rm Remove one or more images
save Save one or more images to a tar archive (streamed to STDOUT by default)
tag Create a tag TARGET_IMAGE that refers to SOURCE_IMAGE
1.拉取镜像
USAGE:
docker image pull [OPTIONS] [registry][:port]/[namespace/]NAME[:TAG|@DIGEST]
registry :使用什么镜像仓库,默认为dockerhub。
port :镜像仓库端口
namespace :不填写,默认为官方提供的镜像
name :镜像名称,必填
tag :标签,默认为latest(最新)
eg:
docker image pull busybox #拉取最新的busybox镜像
2.查看镜像
USAGE:
docker image ls [OPTIONS] [REPOSITORY[:TAG]]
eg:
docker image ls -a #查看本机所有镜像
3.删除镜像
USAGE:
docker image rm [OPTIONS] IMAGE [IMAGE...]
eg:
docker image rm busybox #删除busybox镜像,不带标签默认为latest
docker image rm -f busybox:latest #强制删除,即有容器在使用也删除该镜像
4.镜像打标
USAGE:
docker image tag SOURCE_IMAGE[:TAG] TARGET_IMAGE[:TAG]
eg:
docker image tag nginx:latest test/web:v0.1 #打标签
5.镜像导出
USAGE:
docker image save [OPTIONS] IMAGE [IMAGE...]
eg:
docker image save -o /tmp/nginx-latest.tar.gz nginx:latest #将镜像导出到本地/tmp目录下,可分发到其他服务器
6.镜像导入
USAGE:
docker image load [OPTIONS]
eg:
docker image load -i /tmp/nginx-latest.tar.gz #将本地镜像文件导入
7.查看镜像信息
USAGE:
docker image inspect [OPTIONS] IMAGE [IMAGE...]
eg:
docker image inspect nginx #查看nginx镜像信息
2.2容器操作
容器操作示意图:
~]# docker container --help
Commands:
attach Attach local standard input, output, and error streams to a running container
commit Create a new image from a container's changes
cp Copy files/folders between a container and the local filesystem
create Create a new container
diff Inspect changes to files or directories on a container's filesystem
exec Run a command in a running container
export Export a container's filesystem as a tar archive
inspect Display detailed information on one or more containers
kill Kill one or more running containers
logs Fetch the logs of a container
ls List containers
pause Pause all processes within one or more containers
port List port mappings or a specific mapping for the container
prune Remove all stopped containers
rename Rename a container
restart Restart one or more containers
rm Remove one or more containers
run Run a command in a new container
start Start one or more stopped containers
stats Display a live stream of container(s) resource usage statistics
stop Stop one or more running containers
top Display the running processes of a container
unpause Unpause all processes within one or more containers
update Update configuration of one or more containers
wait Block until one or more containers stop, then print their exit codes
1.运行容器
USAGE:
docker container run [OPTIONS] IMAGE [COMMAND] [ARG...]
OPTIONS:
-a : 指定标准输入输出内容类型,可选 STDIN/STDOUT/STDERR 三项
-d : 后台运行容器,并返回容器ID
-i : 以交互模式运行容器,通常与 -t 同时使用
-p : 端口映射,格式为:主机(宿主)端口:容器端口
-P : 开启镜像所有端口随机映射要宿主机
-t : 为容器重新分配一个伪输入终端,通常与 -i 同时使用
-h : 指定容器的hostname
-e : username="ritchie" 设置环境变量
-m : 设置容器使用内存最大值
-v : 绑定挂载目录
--name : --name="nginx-lb" 为容器指定一个名称
--dns : --dns=8.8.8.8 指定容器使用的DNS服务器,默认和宿主一致
--dns-search : 指定容器DNS搜索域名,默认和宿主一致
--env-file : 从指定文件读入环境变量;
--cpuset : --cpuset="0-2" or --cpuset="0,1,2": 绑定容器到指定CPU运行;
--net : --net="bridge": 指定容器的网络连接类型,支持 bridge/host/none/container 四种类型
--link : 添加链接到另一个容器
--expose : 开放一个端口或一组端口
eg:
#使用镜像nginx:latest以后台模式启动一个容器,并将容器命名为mynginx
docker container run --name mynginx -d nginx:latest
#使用镜像nginx:latest以后台模式启动一个容器,并将容器的80端口映射到主机随机端口
docker container run --name mynginx -P -d nginx:latest
#使用镜像nginx:latest,以后台模式启动一个容器,将容器的 80 端口映射到主机的 8080 端口,主机的目录 /usr/data 映射到容器的 /data
docker container run --name mynginx -p 127.0.0.1:8080:80 -v /usr/data:/data
#使用镜像nginx:latest以交互模式启动一个容器,在容器内执行/bin/bash命令
docker container run --name mynginx -it nginx:latest /bin/bash
2.创建容器
USAGE:
docker container create [OPTIONS] IMAGE [COMMAND] [ARG...]
eg:
docker container create --name mynginx nginx:latest #创建容器但不运行
3.启动容器
USAGE:
docker container start [OPTIONS] CONTAINER [CONTAINER...]
eg:
docker container start mynginx
4.停止容器
USAGE:
docker container stop [OPTIONS] CONTAINER [CONTAINER...]
eg:
docker container stop mynginx
5.重启容器
USAGE:
docker container restart [OPTIONS] CONTAINER [CONTAINER...]
eg:
docker container restart mynginx
6.杀掉容器
USAGE:
docker container kill [OPTIONS] CONTAINER [CONTAINER...]
OPTIONS:
-s :向容器发送一个信号
eg:
docker container kill -s KILL mynginx #杀掉运行中的容器mynginx
7.暂停容器
USAGE:
docker container pause CONTAINER [CONTAINER...]
eg:
docker container pause mynginx
8.恢复容器
USAGE:
docker container unpause CONTAINER [CONTAINER...]
eg:
docker container unpause mynginx
9.删除容器
USAGE:
docker container rm [OPTIONS] CONTAINER [CONTAINER...]
OPTIONS:
-f :通过SIGKILL信号强制删除一个运行中的容器
-l :移除容器间的网络连接,而非容器本身
-v :删除与容器关联的卷
eg:
docker container rm mynginx #删除mynginx容器,但容器在运行则删除失败
docker container rm -f mynginx #强制删除容器,运行中容器也能删除
10.查看容器
USAGE:
docker container ls|ps|list [OPTIONS]
OPTIONS:
-a :显示所有的容器,包括未运行的
-f :根据条件过滤显示的内容
-l :显示最近创建的容器
-n :列出最近创建的n个容器
-q :静默模式,只显示容器编号
-s :显示总的文件大小
--format :指定返回值的模板文件
--no-trunc :不截断输出
eg:
docker container ps #查看所有运行中的容器
docker container ps -a #查看所有容器,未运行的也显示
docker container ps -n 5 #查看最近创建的5个容器
docker container ps -a -q #显示所有容器编号
11.容器信息查询
USAGE:
docker container inspect [OPTIONS] CONTAINER [CONTAINER...]
OPTIONS:
-f :指定返回值的模板文件
-s :显示总的文件大小
--type :为指定类型返回JSON
eg:
docker container inspect mynginx
docker container inspect -f {{.NetworkSettings.IPAddress}} mynginx #显示ip,使用go模板
#"."表示根,NetworkSettings段下的IPAddress信息,从inspect信息中提取
12.容器运行进程信息
USAGE:
docker container top CONTAINER [ps OPTIONS]
eg:
docker container top mynginx
13.获取容器日志
USAGE:
docker container logs [OPTIONS] CONTAINER
OPTIONS:
-f : 跟踪日志输出
-t : 显示时间戳
--since :显示某个开始时间的所有日志
--tail :仅列出最新N条容器日志
eg:
docker container logs -f mynginx
docker container logs --since="2018-08-01" --tail=10 mynginx
14.查看端口映射
USAGE:
docker container port CONTAINER [PRIVATE_PORT[/PROTO]]
eg:
docker container port mynginx #查看mynginx容器开放的端口,前提是容器要开放端口才能查看到
15.容器与宿主机文件拷贝
USAGE:
docker container cp [OPTIONS] CONTAINER:SRC_PATH DEST_PATH
docker container cp [OPTIONS] SRC_PATH CONTAINER:DEST_PATH
eg:
docker container cp mynginx:/usr /tmp/ #将容器中的/usr目录拷贝到宿主机/tmp/下
16.进入容器
USAGE:
docker container exec [OPTIONS] CONTAINER COMMAND [ARG...]
OPTIONS:
-d: 以后台方式执行命令
-e: 设置环境变量
-i: 交互模式
-t: 设置TTY
-u: 用户名或UID,例如myuser:myusergroup
eg:
docker container exec -it mynginx sh #开启一个交互模式的终端
以上只是操作容器的一些入门操作,我小小总结了一下,有错误希望大家能指出,谢谢
更多的命令可参考: runoob