docker常用命令

查看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

发表评论

邮箱地址不会被公开。 必填项已用*标注