Docker常用命令
小明 Lv6

🔧 如题

修改启动后容器的配置

首先关闭docker

1
systemctl stop docker

如果执行后提示

1
2
Warning: Stopping docker.service, but it can still be activated by: docker.socket

这表示docker在关闭状态下会被访问自动唤醒机制,很人性化,即这时再执行任意docker命令会直接启动。
如果不希望docker被访问自动唤醒,需要再执行(或者直接执行)

1
systemctl stop docker.socket

接下来修改配置,先进入docker的container里面:

1
cd /var/lib/docker/containers/AAA

这里 AAA 是 container ID,然后修改指定的配置即可

1
vim config.v2.json

docker常用命令

linux 安装

1
yum update ;yum -y install docker  ; yum install docker-io;

启动和开机启动service docker startchkconfig docker on

  • 查看所有镜像docker images

  • 获取镜像
    docker pull

  • 查看所有容器docker ps -a

  • 查看正在运行的容器docker ps

  • 进入正在运行的容器docker exec -t -i 容器id /bin/bash

  • 退出ctrl+d

  • 应用场景:可以在里面重启应用程序

  • 执行容器中的脚本

    1
    docker exec -it 容器id /bin/bash -c 'echo $PATH'
  • 查看容器的网络配置docker inspect 容器名

  • 查看容器的IP地址

    1
    docker inspect -f '{{.NetworkSettings.IPAddress}}' 容器名
  • 修改镜像名称和标签名称

    1
    docker tag eb40dcf64078 django:latest

     eb40dcf64078为images id

  • 运行镜像docker run –name mynginx -d nginx:latest

  • 运行镜像并保持后台运行

1
docker run -itd --name containerName imageId
  • 端口映射
    docker run -it -p 外部端口:容器端口 –name 起个名字 镜像名称

  • 运行之前启动过的容器docker start 容器 id,容器名等

  • 重启
    docker restart 容器id

  • 停止正在运行的容器* docker stop 容器,容器名id等
    停止指定容器

    1
    docker stop $(docker ps | grep  'screenshot'| awk '{print $1}')
  • docker镜像和容器删除注意:1. 删除前需要保证容器是停止的  stop2. 需要注意删除镜像和容器的命令不一样。 docker rmi ID  ,其中 容器(rm)  和 镜像(rmi)3. 顺序需要先删除容器

  • docker rm CONTAINER_ID//先删除容器

  • docker rmi IMAGE_ID //再删除镜像

  • 常用命令

  • 复制e.g. -> docker cp config_inc.php mantis_mantisbt_1:/var/www/html/config/

  • 应用场景docker cp 可以解决因docker容器内部配置文件出现问题而无法通过docker exec -i -t 容器名 /bin/bash进入的状况,比如容器内部无限重启时。

  • 可以将正在运行的容器commit成镜像

  • docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]OPTIONS说明:-a :提交的镜像作者;-c :使用Dockerfile指令来创建镜像;-m :提交时的说明文字;-p :在commit时,将容器暂停。e.g. docker commit -m=”comment” -a=”author” cd1ce3371224 java8:1.0

  • 在docker之间导出导入镜像的方法http://www.jb51.net/article/119038.htm

    1. 导出 export - 导入 import
  • 导出格式:docker export CONTAINER(容器)docker export docker_mantisbt_1 > ./docker_mantisbt.tar

  • 导入格式:docker import CONTAINER(容器)docker import - docker_mantisbt < docker_mantisbt.tar

  • 2.保存save - 加载 load相当于镜像的备份和恢复

  • 保存格式:docker save IMAGE(镜像)docker save 9610cfc68e8d > /home/myubuntu-save-1204.tar

  • 加载格式:docker load IMAGE(镜像)docker load < /home/myubuntu-save-1204.tar

  • 3.导出 export 与 保存 save 的区别

  • (1)export导出的镜像文件大小 小于 save保存的镜像

  • (2)export 导出(import导入)根据容器拿到的镜像,再导入时会丢失镜像所有的历史,所以无法进行回滚操作(docker tag );而save保存(load加载)的镜像,没有丢失镜像的历史,可以回滚到之前的层(layer)。(查看方式:docker images –tree)

  • 注:导入加载进来觉得不合适可以使用 docker rm 容器ID 、 docker rmi 镜像ID 来删掉。

  • 移除所有的容器和镜像(大扫除)docker kill $(docker ps -q) ; docker rm $(docker ps -a -q) ; docker rmi $(docker images -q -a)    -q, –quiet           Only display numeric IDs

  • 移除孤立的容器

    1
    docker container prune
  • 清理镜像
    我们在使用 Docker 一段时间后,系统一般都会残存一些临时的、没有被使用的镜像文件,可以通过以下命令进行清理:

    1
    docker image prune

docker制作

在一个空白目录中,建立一个文本文件,并命名为 Dockerfile,注意.表示上下文。

1
docker build -t {imageName:imageVersion} .

docker上传仓库

1
docker login {registry_address} -u {用户名} -p {密码} && docker push {imageName:imageVersion}

修改容器配置文件(env等)

配置文件位置:/var/lib/docker/containers/容器ID/config.v2.json
容器ID 有点长,所以在容器关闭前记录下容器ID
修改,确保docker服务关闭!!!
vim config.v2.json

 评论