查看Docker 服务器的信息:
docker info
国内加速
使用阿里云的加速地址:
https://<你的ID>.mirror.aliyuncs.com
阿里云镜像获取地址:https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors,登陆后,左侧菜单选中镜像加速器就可以看到你的专属地址了:
在 /etc/docker/daemon.json
中写入如下内容(如果文件不存在请新建该文件)
{
"registry-mirrors": [
"https://<你的ID>.mirror.aliyuncs.com",
"https://dockerproxy.com",
"https://mirror.baidubce.com",
"https://docker.m.daocloud.io",
"https://docker.nju.edu.cn",
"https://docker.mirrors.sjtug.sjtu.edu.cn"
]
}
注:如果该文件不存在,有可能文件夹也不存在,需要先mkdir /etc/docker
之后重新启动服务:
systemctl daemon-reload
systemctl restart docker
根据Dockerfile创建镜像:
docker build <docker-file>
例:
docker build -t ubuntu-with-vi-dockerfile .
运行 docker build 命令,-t
将新镜像命名为 ubuntu-with-vi-dockerfile,命令末尾的 .
指明 build context 为当前目录。Docker 默认会从 build context 中查找 Dockerfile 文件,我们也可以通过 -f
参数指定 Dockerfile 的位置。
如果我们希望在构建镜像时不使用缓存,可以在 docker build 命令中加上 --no-cache
参数。
从 Registry 下载镜像:
docker pull
先下载镜像(如果本地没有),然后再启动容器:
docker run --name <容器名> -p <宿主端口>:<容器端口> -d <image_name>:<tag_name>
以交互模式启动一个容器,在容器内执行/bin/bash命令。
docker run -it nginx:latest /bin/bash
docker run的其他参数:
–net=<网络名> docker容器连接的网络名称
–ip 172.18.0.2 指定该容器分配的ip地址
查看本地已有的镜像:
docker images
显示正在运行的容器:
docker ps 或 docker container ls
显示所有容器:
docker ps -a
删除容器:
docker rm <NAME>
停止容器:
docker stop <CONTAINER_ID>
CONTAINER_ID为容器的id或容器的名称
启动容器:
docker start -i <CONTAINER_ID>
-i代表启动后进入容器中的交互界面
重启容器:
docker restart <CONTAINER_ID>
启动并进入容器:
docker run -it <image-name>
启动的容器如果没有正在执行的进程,会立即退回,即:通过docker ps无法查看。
退出容器内部
1.docker run -it 过后请别使用 CTRL+C 退出
2.使用 CTRL+P+Q
退出当前容器内部回话,就会后台运行了。
进入正在运行的容器
方法一
docker exec -it <容器id> /bin/bash
进入容器后,输入exit可以退出容器,容器不会停止运行
方法二
docker attach <容器id>
进入容器后,输入exit可以退出容器,容器会停止运行
方法三
安装nsenter
wget https://www.kernel.org/pub/linux/utils/util-linux/v2.24/util-linux-2.24.tar.gz --no-check-certificate
tar -xvf util-linux-2.24.tar.gz
cd util-linux-2.24
./configure –without-ncurses
make
cp nsenter /usr/local/bin/
查看当前正在运行的容器id
docker ps
找到容器的第一个进程的PID
docker inspect --format "{{ .State.Pid }}" <container-id>
连接到容器
nsenter --target <PID> --mount --uts --ipc --net --pid
创建新镜像:
docker commit <old-image-name> <new-image-name>
查看指定镜像的创建历史:
docker history <image-name>
为指定镜像打上TAG:
docker tag <image-name> <new-image-name>:<tag-name>
删除镜像(删除镜像前,先删除容器):
docker rmi <image-name>
删除镜像(通过IMAGE ID)
docker image rm <IMAGE-ID>
导出镜像为文件
docker save <image-name> > <save-path>
导入文件为镜像
docker load < <file-path>
镜像重命名
docker tag <old-name> <new-name>
修改容器中的系统时间
从另一台服务器上拷贝时区文件,放入Docker容器中,并将设置软链接起来。
容器中新建 /usr/share/zoneinfo/Asia/ 文件夹:
mkdir -p /usr/share/zoneinfo/Asia
复制(在主机中):
docker cp /usr/share/zoneinfo/Asia/Shanghai <容器ID>:/usr/share/zoneinfo/Asia/Shanghai
最后建立软链接:
ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
查看效果:
date
查看容器的IP
在宿主机查看
# 在宿主机执行:
docker inspect --format='{{.Name}} - {{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' $(docker ps -aq)
在容器中查看
# 进入容器后执行:
cat /etc/hosts
其他
Docker centos7 systemctl命令不能使用
通过以下命令构建则可以使用:
docker run -dit --privileged --name=centos7 daocloud.io/centos:latest /usr/sbin/init
docker exec -it centos7 /bin/bash