Docker容器

作者:泥泥
发布于:2020年3月17日 17:12
更新于:2020年3月18日 19:56

一.Docker镜象操作

1.1.安装

yum update -y
yum remove docker docker-common docker-selinux docker-engine docer-io
yum install -y yum-utils device-mapper-persistent-data lvm2
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
yum makecache fast
yum -y install docker-ce
systemctl start docker
systemctl enable docker
docker version

 

1.2.镜象基本操作

查找镜象

docker search centos

拉取镜象

docker pull centos

查看镜象信息

[root@ecs-x-large-4-linux-20200317144346 ~]# docker image ls
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
centos              latest              470671670cac        8 weeks ago         237MB

 

查看镜象清详细信息

docker image inspect 470671670cac

 

只查看镜象ID

[root@ecs-x-large-4-linux-20200317144346 ~]# docker image ls -q
470671670cac

 

镜象导出
    docker image save

[root@ecs-x-large-4-linux-20200317144346 ~]# docker image save centos:latest >/tmp/centos.0317.tar.gz
[root@ecs-x-large-4-linux-20200317144346 ~]# ll /tmp/centos.0317.tar.gz -lh
-rw-r--r-- 1 root root 234M Mar 17 17:56 /tmp/centos.0317.tar.gz

 

删除镜象

[root@ecs-x-large-4-linux-20200317144346 ~]# docker image ls
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
centos              latest              470671670cac        8 weeks ago         237MB
[root@ecs-x-large-4-linux-20200317144346 ~]# docker image rm 470671670cac
Untagged: centos:latest
Untagged: centos@sha256:fe8d824220415eed5477b63addf40fb06c3b049404242b31982106ac204f6700
Deleted: sha256:470671670cac686c7cf0081e0b37da2e9f4f768ddc5f6a26102ccd1c6954c1ee
Deleted: sha256:0683de2821778aa9546bf3d3e6944df779daba1582631b7ea3517bb36f9e4007
[root@ecs-x-large-4-linux-20200317144346 ~]# docker image ls
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE

 

导入进去

[root@ecs-x-large-4-linux-20200317144346 ~]# docker image load -i /tmp/centos.0317.tar.gz 
0683de282177: Loading layer [==================================================>]  244.9MB/244.9MB
Loaded image: centos:latest
[root@ecs-x-large-4-linux-20200317144346 ~]# docker image ls
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
centos              latest              470671670cac        8 weeks ago         237MB

 

批量删除所有镜象

docker image rm -f `docker image ls -q` 

 

二.docker容器管理

镜象启动起来.就变成容器

2.1.交互式启动第一个容器

docker container run -it centos:latest 

 

2.2.查看运行的容器

[root@ecs-x-large-4-linux-20200317144346 ~]# docker container ls
CONTAINER ID        IMAGE                   COMMAND                  CREATED              STATUS              PORTS               NAMES
4177caab110c        phpdockerio/php71-fpm   "/bin/sh -c /usr/bin…"   About a minute ago   Up About a minute   9000/tcp            php7.1
a91ee41c8e11        centos:latest           "/bin/bash"              48 minutes ago       Up 48 minutes                           pensive_rubin

 

2.3.启动容器时,设置名字

docker container run -it --name="php7.1"  phpdockerio/php71-fpm 

 

2.4.查看所有运行和没运行的容器

[root@ecs-x-large-4-linux-20200317144346 ~]# docker container ls -a
CONTAINER ID        IMAGE                   COMMAND                  CREATED             STATUS                       PORTS               NAMES
4177caab110c        phpdockerio/php71-fpm   "/bin/sh -c /usr/bin…"   6 minutes ago       Up 6 minutes                 9000/tcp            php7.1
a91ee41c8e11        centos:latest           "/bin/bash"              53 minutes ago      Exited (127) 2 seconds ago                       pensive_rubin

 

三.守护式容器

服务类的程序,需要一直在后台运行.

3.1.守护式容器

[root@ecs-x-large-4-linux-20200317144346 ~]# docker run -d --name "nginx" nginx:1.17
Unable to find image 'nginx:1.17' locally
1.17: Pulling from library/nginx
68ced04f60ab: Pull complete 
28252775b295: Pull complete 
a616aa3b0bf2: Pull complete 
Digest: sha256:2539d4344dd18e1df02be842ffc435f8e1f699cfc55516e2cf2cb16b7a9aea0b
Status: Downloaded newer image for nginx:1.17
369c355fdebcc716f7f236b303b8d82829b22ffdf30bb9d916ac724534ab1f6d

 

3.2.查询容器的详细命令

docker container inspect nginx

 

3.3.交互式容器,退出后,删除掉容器

docker container inspect nginx

 

3.4.守护式容器映射端口

docker container run -d --name="nginx_80to80" -p 80:80 nginx:1.17

 

3.5.已经停止容器重新启动,交互式

docker container start -i a91ee41c8e11

交互式,直接CTRL+D,就退出来了

 

3.6.停止守护运行容器

docker container stop 369c355fdeb

 

3.7.交互式容器重新连接

attach,连接已经在后台的容器

docker container attach pensive_rubin

在已有容器中,以子进程方式登陆,可以进容器的调式,退出时也不会影响当前容器.比如说,给Nginx修改配置文件,改完后退出来

 

3.8.把一个容器放后台永生运行4种方式

第一种:一直占用bash窗口

第二种:使用快捷键Ctrl+p+q 

第三种:启容器时,一直运行死循环.sleep 10000

第四种:让服务一直在前台运行(常用),在制作守护式容器时,常用的方法

重新连接在后台的容器.使用attach命令.

 

3.9.强制删除所有容器方法

docker container rm -f `docker container ls -a -q`

 

3.10.进一个正在运行的守护式容器

通过开启子进程的方法

docker container exec -it 7d4bec0203da /bin/bash

 

3.11.端口映射

宿主机所有IP地址指定端口号

docker container run -d --name="n1" -p 8080:80 nginx:1.17

宿主机指定IP和端口

docker container run -d -p 192.168.0.122:8081:80 --name="n2" nginx:1.17

结果

[root@ecs-x-large-4-linux-20200317144346 ~]# ss -lnt|grep 80
LISTEN     0      1024   192.168.0.122:8081                     *:*                  
LISTEN     0      1024      [::]:8080                  [::]:*      

映射多个端口

docker container run -d -p 8082:80 -p 443:443 --name="n3" nginx:1.17 

 

3.12.查看docker进程

[root@ecs-x-large-4-linux-20200317144346 ~]# docker container top 5ac3b49b59b9
UID                 PID                 PPID                C                   STIME               TTY                 TIME                CMD
root                27626               27609               0                   10:22               ?                   00:00:00            nginx: master process nginx -g daemon off;
101                 27652               27626               0                   10:22               ?                   00:00:00            nginx: worker process

 

3.13.查看容器日志

docker container logs ce1078c20f51 
docker container logs -t --tail=10 ce1078c20f51  

 

四.容器数据卷使用

所有的数据变更.都是在容器生命周期里.容器一销毁,所有数据都没了.镜象是只读了文件系统

4.1.宿主机和容器的数据拷贝

可以宿主机-->容器,也能容器--->宿主机

docker container cp index.html n1:/usr/share/nginx/htm

命令用法

[root@ecs-x-large-4-linux-20200317144346 ~]# docker container cp --help

Usage:  docker container cp [OPTIONS] CONTAINER:SRC_PATH DEST_PATH|-
        docker cp [OPTIONS] SRC_PATH|- CONTAINER:DEST_PATH

 

4.2.volume实现宿主机的数据共享

法一.挂载时,使用-v参数

docker container run -d --name="nginx_v1_80" -v /data/www/:/usr/share/nginx/html -p80:80 nginx:1.17

法二.挂容器

使用专门用来挂载的容器,当中间媒介,把所有的需要挂载的数据卷挂上.其它服务类的容器,在来挂载这个容器.避免命令过长,过多问题.适应集群.

先运行挂载容器

docker container run -it --name="volume docker" -v /data/www/a:/opt/a -v /data/www/b:/opt/b centos:latest                  

其它容器在挂上面的数据卷容器

docker container run -d -p 80:80 --volumes-from volume_docker --name="nginx_80_80" nginx:1.17

 

五.镜象制作

5.1.基于容器制作镜象

容器优化后,把当前在状态保存下来

A.启动基础镜象容器.

docker container run -it --name="volume docker" -v /data/www/a:/opt/a -v /data/www/b:/opt/b centos:latest   

B.安装所需的软件包

C.制作镜象

docker container run -it --name="volume docker" -v /data/www/a:/opt/a -v /data/www/b:/opt/b centos:latest   

 

 

 

1
0

评论提问