Docker安装和基本命令

文章目录

一级目录

二级目录

三级目录

一、安装

1、移除系统自带Docker

sudo yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-engine

2、配置yum源

sudo yum install -y yum-utils
sudo yum-config-manager \
--add-repo \
http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

3、安装docker

sudo yum install -y docker-ce docker-ce-cli containerd.io
# docker-ce是Docker服务器
# docker-ce-cli是Docker命令工具
# containerd.io是Docker环境

# 安装其他版本
yum install -y docker-ce-20.10.7 docker-ce-cli-20.10.7  containerd.io-1.4.6

4、启动并开机启动

systemctl enable docker --Now

5、配置加速镜像

# 创建路径
sudo mkdir -p /etc/docker 
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://82m9ar63.mirror.aliyuncs.com"],
  "exec-opts": ["native.cgroupdriver=systemd"],
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "100m"
  },
  "storage-driver": "overlay2"
}
EOF
sudo systemctl daemon-reload
# 重启
sudo systemctl restart docker

二、Docker使用命令

1、镜像操作命令

(1)、查找:Docker Hub官网
(2)、下载:docker pull [OPTIONS] NAME[:TAG|@DIGEST]
注意:使用命令加上--help可以查看命令详细介绍,例如:docker pull --help

# 例如下载最新版Nginx
docker pull Nginx

# 例如下载指定版本Nginx
docker pull Nginx:1.20.1

(3)、查看下载的镜像:docker images [OPTIONS] [REPOSITORY[:TAG]]

# 查看所有下载的镜像
docker images

(4)、删除镜像:docker rmi [OPTIONS] IMAGE [IMAGE...]

# 删除Nginx镜像
docker rmi Nginx

2、容器操作命令

(1)、创建并启动容器:docker run [OPTIONS] IMAGE [COMMAND] [ARG...]

docker run --name=Nginx -d --restart=always -p 88:80 Nginx
# --name:启动容器的名称
# -d:后台运行
# -p  88:80将容器内部端口80映射到服务器88端口
# --restart=always: 开机自启
常用OPTIONS 说明作用
–name启动容器的名称
-d后台运行
–restart=always开机自启
-p 88:80将容器内部端口80映射到服务器88端口

启动之后访问http://139.198.42.140:88/,如果是云服务器需要在安全组开放88端口

在这里插入图片描述

(2)、查看容器:docker ps [OPTIONS]

# 查看正在运行的容器
docker ps
常用OPTIONS 说明作用
-a查看所有容器(认不展示未运行的容器)
-n查看最后启动的n个容器
-l查看最后一个启动的容器

(3)、停止容器:docker stop [OPTIONS] CONTAINER [CONTAINER...]

# 先用docker ps查看容器名称或者容器ID
docker stop 容器名称或者容器ID
#再次启动
docker start 容器名称或者容器ID

(4)、删除容器:docker rm [OPTIONS] CONTAINER [CONTAINER...]

# 删除停止的容器
docker rm 容器名称或者容器ID
# 强制删除正在运行中的
docker rm -f 容器名称或者容器ID

(5)、修改已经创建容器的参数:docker update [OPTIONS] CONTAINER [CONTAINER...],部分参数不可修改:例如-p-v

#修改--restart
docker update 容器名称或者容器ID --restart=no

3、进入容器内部修改文件

docker exec -it 容器名称或者容器ID  /bin/bash

在这里插入图片描述

Nginx为例,在Docker Hub可看到Nginx页面路径:/usr/share/Nginx/html,进入容器内部修改/usr/share/Nginx/html/index.html,新刷页面即可看到变化。

4、从容器创建一个新的镜像

docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]

常用OPTIONS 说明作用
-a提交作者
-m提交说明
-p提交时暂停容器
docker commit -a "wg"  -m "修改首页" f826b3307fe4 myNginx:1.0

在这里插入图片描述

5、共享镜像到其他主机

(1)、打包传输,然后解压,打包镜像:docker save -o myNginx.tar myNginx:1.0,把压缩包包传输到其他主机解压镜像:docker load -i myNginx.tar
(2)、将本地的镜像上传到镜像仓库(要先登陆到镜像仓库):
  a、在Docker Hub官网注册账号,用户名为studydocker88,并创建仓库,仓库名为myNginx
  b、docker login输入用户名和密码登录
  c、docker tag myNginx:1.0 studydocker88/myNginx:1.0 标记本地镜像myNginx:1.0,将其归入myimages仓库;
  d、docker push studydocker88/myNginx:1.0,推送镜像到远程仓库;
  e、其他主机即可拉取镜像:docker pull studydocker88/myNginx:1.0
  g、然后创建容器并启动:docker run -d -p 99:80 studydocker88/myNginx:1.0,打开99端口。

6、容器和主机文件挂载

注意:命令太长可以用“ \”换行

docker run --name=Nginx -d --restart=always \
-p 88:80 -v /data/html:/usr/share/Nginx/html Nginx

在这里插入图片描述

现在访问http://139.198.42.140:88/

在这里插入图片描述

原因是挂载的路径下面没有页面,在主机路径/data/html下创建一个index.html,内容如下:

<h1>Study Docker</h1>

然后再次访问

在这里插入图片描述

7、获取容器或者镜像的元数据

docker inspect [OPTIONS] NAME|ID [NAME|ID...]

8、查看容器日志

docker logs [OPTIONS] CONTAINER

常用OPTIONS 说明作用
-f跟踪日志输出
–since显示某个开始时间的所有日志
-t显示时间戳
–tail仅列出最新N条容器日志

9、容器与主机之间的数据拷贝

Nginx拷贝容器数据到主机

docker cp 5eff66eec7e1:/etc/Nginx/Nginx.conf  /data/conf/Nginx.conf
# 5eff66eec7e1是容器ID

Nginx拷贝主机数据到容器

ocker cp  /data/conf/Nginx.conf  5eff66eec7e1:/etc/Nginx/Nginx.conf
# 5eff66eec7e1是容器ID

相关文章

Docker是什么Docker是 Docker.Inc 公司开源的一个基于 LXC技...
本文为原创,原始地址为:http://www.cnblogs.com/fengzheng...
镜像操作列出镜像:$ sudo docker imagesREPOSITORY TAG IMA...
本文原创,原文地址为:http://www.cnblogs.com/fengzheng/p...
在 Docker 中,如果你修改了一个容器的内容并希望将这些更改...
在Docker中,--privileged 参数给予容器内的进程几乎相同的权...