docker安装使用

一 Docker的安装过程

1、安装docker注意事项

  • Linux要求内核3.0以上
  • CentOS 需要是7版本的
  • 既然有官方提示的注意,那么我们如何查看系统内核呢?查看命令如下:
[root@docker-1 ~]# uname -r
3.10.0-1160.el7.x86_64

  

2、卸载已经安装docker(注:卸载已经安装的docker,重新安装主要是确保整体的环境一致)

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

3、安装docker

  • 安装yum工具包和存储驱动
yum install -y yum-utils
  • 设置镜像仓库
#这是国外镜像docker仓库
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

#国内阿里云docker镜像仓库
1、yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

2、yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
  • 查看docker安装的版本有哪些
# 查看有哪些版本
yum list docker-ce --showduplicates | sort -r

# 指定版本安装
 yum -y install docker-ce-版本号

# 示例:
 yum -y install docker-ce-20.10.9-3.el7

  

  • 安装docker
yum install docker-ce-19.03.* docker-ce-cli-19.03.* -y
  • 启动docker和添加开机启动命令
systemctl start docker
  • docker添加开机启动
systemctl enable docker

4、docker镜像加速设置

vim /etc/docker/daemon.json

{
    "exec-opts": ["native.cgroupdriver=systemd"],
    "registry-mirrors": ["https://registry.docker-cn.com", "https://hub-mirror.c.163.com"],
    "insecure-registries": ["192.168.3.110:8080"],  #添加这行内容,IP地址和端口修改成自己的
     "graph":"/opt/docker", #降到安装到指定的命令
}

配置好镜像加速后重启docker

systemctl restart docker

 5、docker指令

  • info 指令查看系统信息
[root@docker-1 ~]# docker info
Client:
 Context:    default
 Debug Mode: false
 Plugins:
  app: Docker App (Docker Inc., v0.9.1-beta3)
  buildx: Docker Buildx (Docker Inc., v0.8.2-docker)
  scan: Docker Scan (Docker Inc., v0.17.0)

Server:
 Containers: 1
  Running: 0
  Paused: 0
  Stopped: 1
 Images: 1
 Server Version: 20.10.17
 Storage Driver: overlay2
''''等
  • run

  -i:交互模式

  -t:分配一个终端

  -d:后台运行

  -p 绑定端口

  --name:指定容器的名称

[root@docker-1 ~]# docker run --name myweb -it nginx
/docker-entrypoint.sh: /docker-entrypoint.d/ is not empty, will attempt to perform configuration
/docker-entrypoint.sh: Looking for shell scripts in /docker-entrypoint.d/
/docker-entrypoint.sh: Launching /docker-entrypoint.d/10-listen-on-ipv6-by-default.sh
10-listen-on-ipv6-by-default.sh: info: Getting the checksum of /etc/nginx/conf.d/default.conf
10-listen-on-ipv6-by-default.sh: info: Enabled listen on IPv6 in /etc/nginx/conf.d/default.conf
/docker-entrypoint.sh: Launching /docker-entrypoint.d/20-envsubst-on-templates.sh
/docker-entrypoint.sh: Launching /docker-entrypoint.d/30-tune-worker-processes.sh
/docker-entrypoint.sh: Configuration complete; ready for start up
2022/07/29 11:05:24 [notice] 1#1: using the "epoll" event method

  注:这个命令在前台运行,终端连接断开会结束该运行。或者是Ctrl+c结束

 

#绑定一个端口运行nginx
[root@docker-1 ~]# docker run --name myweb -p 80:80 -itd nginx
5e1e8d9a30110ff9201b98e283b8fc81890649bf12536deab3e25a59e751b3ac

#查看绑定端口
[root@docker-1 ~]# docker port myweb
80/tcp -> 0.0.0.0:80
80/tcp -> :::80

  注:

    -p 80:80 : -p 本地机器端口:容器端口

 

[root@docker-1 ~]# docker run --name myweb -itd nginx
79e421d5ae7ac2fdbf4790ae6d0d8bcf1aa989c0b68a61c07c68042740678f75

  注:加上-d后台直接在后台运行,防止了连接终端断开后启动进行断开

 

  • pull下载镜像(docker pull 下载镜像的名称)
docker pull hello-word
  • search 查找镜像(docker search 需要查找的镜像名称)
docker search hello-word
  • images查看本地镜像(docker images)
docker images
  • ps查看容器进行(-a所有的:正在运行,已经停止)
#查看正常运行容器
docker ps

#添加参数 -a 查看正常运行和停止状态
docker ps -a

#根据状态status=exited查看已经停止的容器(获取的到的是停止容器ID号)
docker ps -aq -f status=exited 
  • rm( -f 强制删除)删除容器
#删除容器名称,容器名称指的是--name 后面命名的名称,或者是docker ps -a 查看到的NAMES这列名称
docker rm myweb

#删除容器id,这里的容器id指的是docker ps -a 查看到的CONTAINER ID这里下面的id

docker rm 容器id
  • start |stop|restart 对容器进行启动,关闭,重启  
#启动容器
docker start myweb

#启动所有停止的容器
docker start $(docker ps -aq -f status=exited)

#关闭容器
docker stop myweb

#重启容器
docker restart myweb

  

  注:这里的myweb 容器名称就是在docker run 启动镜像的时候--name 设置的命名。或通过docker ps 或docker ps -a 查看NAMES 这列

  • stats显示容器使用资源状态(docker stats 容器名称)  
docker stats myweb
  • logs( -f) 查看容器日志 docker logs -f 容器名称
docker logs myweb

  注:直接把查看的容器日志全部显示出来

docker logs -f myweb

  注:这里是实时刷新新的日志显示。使用中推荐添加 -f 使用

  •  pause(暂停容器)/unpause(取消暂停):  docker pause 容器名称
#pause暂停命令
docker pause myweb

#取消暂停命令
docker unpause myweb 

  注:运行此命令后可以使用docker ps 查看 STATUS 这列暂停的容器会添加括号(Paused)说明已经暂停

  • rename重命名 docker rename 现在运行的容器名称  新的容器名称
[root@docker-1 ~]# docker rename myweb web
[root@docker-1 ~]# docker ps 
CONTAINER ID   IMAGE     COMMAND                  CREATED          STATUS          PORTS     NAMES
79e421d5ae7a   nginx     "/docker-entrypoint.…"   45 minutes ago   Up 38 minutes   80/tcp    web

  注:原来运行的容器名称是myweb 重名为web,重名后可以利用docker ps 查看重名情况,查看NAMES这列

 

  • kill关闭容器进程(docker kill 容器名称或者容器id)
#开启一个nginx镜像容器后台运行,命名为myweb
[root@docker-1 ~]# docker run --name myweb -itd nginx
6a4c928dcddd01c548c860182d95e90a4b6caabb661ac6df5aa552259e7e6298

#结束myweb容器进行
[root@docker-1 ~]# docker kill myweb
myweb

#结束后查看运行状态
[root@docker-1 ~]# docker ps
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES
[root@docker-1 ~]# docker ps -a
CONTAINER ID   IMAGE     COMMAND                  CREATED          STATUS                        PORTS     NAMES
6a4c928dcddd   nginx     "/docker-entrypoint.…"   25 seconds ago   Exited (137) 10 seconds ago             myweb
  • top查看容器进程(docker top 容器名称或容器id)
docker top myweb

  根据容器进程pid进程查看(docker top 容器名称或容器id 容器进程pid)

docker top myweb 3258  
  • cp文件复制 
把当前目录下面的test.txt文件复制到 myweb容器/opt目录下面
[root@docker-1 ~]# docker cp test.txt myweb:/opt

#查看test.txt是否复制到了myweb:/opt目录下面
[root@docker-1 ~]# docker exec -it myweb ls -l /opt
total 0
-rw-r--r--. 1 root root 0 Jul 29 12:50 test.txt

#把复制到mywenb:/opt容器下面的test.txt文件复制到本地home目录下面
[root@docker-1 ~]# docker cp myweb:/opt/test.txt /home
[root@docker-1 ~]# ls -l /home/
总用量 0
-rw-r--r--. 1 root  root    0 7月  29 20:50 test.txt
  • diff容器文件系统发生的变化(doc diff 容器名称)
docker diff myweb
  • login/logout登录/退出 
# 用户登录
[root@docker-1 ~]# docker login
Login with your Docker ID to push and pull images from Docker Hub. If you don't have a Docker ID, head over to https://hub.docker.com to create one.
Username: 输入注册的docker用户
Password: 输入密码
WARNING! Your password will be stored unencrypted in /root/.docker/config.json.
Configure a credential helper to remove this warning. See
https://docs.docker.com/engine/reference/commandline/login/#credentials-store

#出现Login Successded代表登录成功
Login Succeeded

#用户退出登录
[root@docker-1 ~]# docker logout
Removing login credentials for https://index.docker.io/v1/
  • inspect命令显示容器的详细属性信息。这的的webserver指的是容器名称
docker inspect webserver

  

 

6、容器连接

  • exec进入容器执行命令(docker exec -it 容器名称 bash)
[root@docker-1 ~]# docker exec -it myweb bash
root@6a4c928dcddd:/# ls
bin   dev                  docker-entrypoint.sh  home  lib64  mnt  proc  run   srv  tmp  var
boot  docker-entrypoint.d  etc                   lib   media  opt  root  sbin  sys  usr
  • port显示容器绑定端口信息(docker port 容器名称)
[root@docker-1 ~]# docker port myweb
80/tcp -> 0.0.0.0:80
80/tcp -> :::80

7、镜像的操作命令

  • history查看镜像的更新操作
[root@docker-1 ~]# docker history nginx
IMAGE          CREATED       CREATED BY                                      SIZE      COMMENT
670dcc86b69d   9 days ago    /bin/sh -c #(nop)  CMD ["nginx" "-g" "daemon…   0B        
<missing>      9 days ago    /bin/sh -c #(nop)  STOPSIGNAL SIGQUIT           0B        
<missing>      9 days ago    /bin/sh -c #(nop)  EXPOSE 80                    0B        
<missing>      9 days ago    /bin/sh -c #(nop)  ENTRYPOINT ["/docker-entr…   0B        
<missing>      9 days ago    /bin/sh -c #(nop) COPY file:09a214a3e07c919a…   4.61kB    
<missing>      9 days ago    /bin/sh -c #(nop) COPY file:0fd5fca330dcd6a7…   1.04kB    
  • tag重命名

push上传镜像到镜像仓库 docker push 镜像名称(这里的镜像名称指的是利用docker images 查看到的REPOSITORY 这列下面的名称)

[root@docker-1 ~]# docker push 镜像名称

  

  • rmi (-f强制删除,会删除关联的镜像)删除镜像 docker rmi 删除的镜像名称/或者镜像id
docker rmi 镜像名称
  1. commit将容器改变为镜像
[root@docker-1 ~]# docker commit -a "author" -m"nginx run" myweb web:v1
sha256:48b29ac6d23bf54f360b5132aee329c1f5041e92b84e9075bde08df1800e130d

  注:

    -a:制定的作者

    -m:提交的信息

    myweb 是容器名称。这里需要主要的是在使用docker commit 的时候需要先 把容器启动

    web:v1 web指的是镜像名称,v1指的是tag(标签名称)。就是利用docker images查看的REPOSITORY和TAG列下面的名称

  docker -commit -a "作者名称" -m"提交的信息" 容器名称   镜像名称:tag(标签)  

  • build构建新镜像
创建一个构建镜像Dockerfile文件
vim /opt/Dockerfile

# 语法如下
FROM web:v1


[root@docker-1 ~]# docker build -t webserver -f /opt/Dockerfile .
Sending build context to Docker daemon  20.53kB
Step 1/1 : FROM web:v1
 ---> 48b29ac6d23b
Successfully built 48b29ac6d23b
Successfully tagged webserver:latest

  注:

    1、FROM web:v1

      web:指的是先有的镜像名称(docker images 查看的REPOSITORY这列下面的镜像名称)

      v1:指的是标签名称(docker images 查看的TAG这列下面的标签名称)

    docker build -t webserver -f /opt/Dockerfile .

      注: docker build -t 创建新的镜像名称 -f  Dockerfile所在路径 .

      其中 . 需要添加的  

 

posted @ 2023-02-21 22:07  点点滴滴的努力  阅读(107)  评论(0编辑  收藏  举报