docker基础学习

1、docker安装

#yum -y install docker-ce

修改selinux的状态

#vim /etc/selinux/config
将selinux改为disabled  

重启

2、启动docker服务

#systemctl start docke

3、寻找centos镜像

#docker search centos

4、拉取centos镜像

#docker pull centos

5、查看docker镜像

#docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
docker.io/centos    latest              75835a67d134        6 weeks ago         200 MB

6、运行个应用程序

#docker run centos /bin/echo 'Hello world'
Hello world

7、查看容器运行的情况

#docker ps -a
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                     PORTS               NAMES
f65576fa690b        centos              "/bin/echo 'Hello ..."   2 minutes ago       Exited (0) 2 minutes ago                       optimistic_allen

8、建个centos容器并进行交互(-it 进行交互 --name 指定容器名字)

#docker run --name mydocker -it centos /bin/bash
[root@a5b47cb38807 /]# ls /
anaconda-post.log  etc   lib64  opt   run   sys  var
bin                home  media  proc  sbin  tmp
dev                lib   mnt    root  srv   usr
[root@a5b47cb38807 /]# ps aux
USER        PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root          1  0.0  0.1  11824  1904 ?        Ss   07:36   0:00 /bin/bash
root         14  0.0  0.0  51712  1708 ?        R+   07:37   0:00 ps aux
root@a5b47cb38807 /]# cd /tmp
[root@a5b47cb38807 tmp]# ls
ks-script-7RxiSx  yum.log
[root@a5b47cb38807 tmp]# mkdir hehe
[root@a5b47cb38807 tmp]# ls
hehe  ks-script-7RxiSx  yum.log
[root@a5b47cb38807 ~]# exit
exit
[root@localhost ~]# docker ps -a
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                       PORTS               NAMES
a5b47cb38807        centos              "/bin/bash"              4 minutes ago       Exited (127) 5 seconds ago                       mydocker
f65576fa690b        centos              "/bin/echo 'Hello ..."   10 minutes ago      Exited (0) 10 minutes ago                        optimistic_allen

9、交互方式一退出就应用程序就不继续运行

[root@localhost ~]# docker ps -a
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                       PORTS               NAMES
a5b47cb38807        centos              "/bin/bash"              4 minutes ago       Exited (127) 5 seconds ago                       mydocker
f65576fa690b        centos              "/bin/echo 'Hello ..."   10 minutes ago      Exited (0) 10 minutes ago                        optimistic_allen
[root@localhost ~]# docker start f65576fa690b
f65576fa690b
[root@localhost ~]# docker ps -a
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                            PORTS               NAMES
a5b47cb38807        centos              "/bin/bash"              5 minutes ago       Exited (127) About a minute ago                       mydocker
f65576fa690b        centos              "/bin/echo 'Hello ..."   11 minutes ago      Exited (0) 10 seconds ago                             optimistic_allen
[root@localhost ~]# docker run -d --name mydocker1 centos
c36ecd4ad9f8a453d2910139f0ba9e72fe8dae192f61083af699ba4786316d7f

10、运行个nginx应用程序

[root@localhost ~]# docker run -d --name mynginx nginx
Unable to find image 'nginx:latest' locally
Trying to pull repository docker.io/library/nginx ... 
latest: Pulling from docker.io/library/nginx
a5a6f2f73cd8: Pull complete 
67da5fbcb7a0: Pull complete 
e82455fa5628: Pull complete 
Digest: sha256:31b8e90a349d1fce7621f5a5a08e4fc519b634f7d3feb09d53fac9b12aa4d991
Status: Downloaded newer image for docker.io/nginx:latest
acc79954bda33943472a1d49eb98561260e5643b002e8918e18ad364cb2d9165
[root@localhost ~]# docker ps -a | grep nginx
acc79954bda3        nginx               "nginx -g 'daemon ..."   38 seconds ago      Up 36 seconds                80/tcp              mynginx
[root@localhost ~]# docker ps -l
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS               NAMES
acc79954bda3        nginx               "nginx -g 'daemon ..."   5 minutes ago       Up 5 minutes        80/tcp              mynginx
[root@localhost ~]# docker attach acc79954bda3
^C[root@localhost ~]# docker ps -l
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                     PORTS               NAMES
acc79954bda3        nginx               "nginx -g 'daemon ..."   7 minutes ago       Exited (0) 2 seconds ago                       mynginx
[root@localhost ~]# docker ps -l
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                     PORTS               NAMES
acc79954bda3        nginx               "nginx -g 'daemon ..."   9 minutes ago       Exited (0) 2 minutes ago                       mynginx
[root@localhost ~]# docker start acc79954bda3
acc79954bda3

11、获取容器的pid,并用nsenter进入nginx容器

[root@localhost ~]# docker inspect --format "{{.State.Pid}}" mynginx
6307
[root@localhost ~]# nsenter --target 6307 --mount --uts --ipc --net --pid
mesg: ttyname failed: No such file or directory
root@acc79954bda3:/# cd /etc/nginx/
root@acc79954bda3:/etc/nginx# cat nginx.conf

12、创建个进入容器的脚本

[root@localhost ~]# cat in.sh 
#/bin/bash
CNAME=$1
CPID=$(docker inspect --format "{{.State.Pid}}" $CNAME)
nsenter --target "$CPID" --mount --uts --ipc --net --pid
[root@localhost ~]# ./in.sh mynginx
root@acc79954bda3:/# 

13、随机个容器映射个端口

[root@localhost ~]# docker run -d -P --name mynginx1 nginx
6edc7407e39f3d65dffa1103c6d3bc2cc6c362351f7db661b8bc50c7cc980f1d
[root@localhost ~]# docker ps -l
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                   NAMES
6edc7407e39f        nginx               "nginx -g 'daemon ..."   9 seconds ago       Up 8 seconds        0.0.0.0:32768->80/tcp   mynginx1

14、指定端口映射

[root@localhost ~]# docker run -d -p 91:80 --name mynginx2 nginx
2d2e6c24a9bdf03f6b91816f46f63014d09c71c383a4a219c9f352407db59d7b

15、挂载本地目录 -v

[root@localhost ~]# docker run -it --name volume-test1 -h nginx -v /data centos

16、用inspect找到主机的存储位置,{.Volumes}报错用{.Config.Volumes}

[root@localhost ~]# docker inspect -f {{.Volumes}} volume-test1

Template parsing error: template: :1:2: executing "" at <.Volumes>: map has no entry for key "Volumes"
[root@localhost ~]# docker ps -l
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
7a5555a106f9        centos              "/bin/bash"         3 minutes ago       Up 3 minutes                            volume-test1
[root@localhost ~]# docker inspect -f {{.Config.Volumes}} volume-test1
map[/data:{}]
[root@localhost ~]# docker inspect volume-test1 | grep Mounts -A 10
        "Mounts": [
            {
                "Type": "volume",
                "Name": "158f7012d0bf8c4a3579b2edc99f1777a301666c34d5e72fbec8875940055f52",
                "Source": "/var/lib/docker/volumes/158f7012d0bf8c4a3579b2edc99f1777a301666c34d5e72fbec8875940055f52/_data",
                "Destination": "/data",
                "Driver": "local",
                "Mode": "",
                "RW": true,
                "Propagation": ""
            }

17、把本地目录挂载到容器内

[root@localhost ~]# docker run -it --name volume-test2 -h nginx -v /opt:/opt centos
[root@nginx /]# ls
anaconda-post.log  etc   lib64  opt   run   sys  var
bin                home  media  proc  sbin  tmp
dev                lib   mnt    root  srv   usr
[root@nginx /]# cd opt/
[root@nginx opt]# ls
rh
[root@nginx opt]# cd rh/
[root@nginx rh]# ls

18、挂载文件到容器内

[root@localhost ~]# docker run -it --name volume-tenginx -v /etc/hosts:/etc/hosts centos
[root@nginx /]# cat /etc/hosts
127.0.0.1   localhost localhost.localdomain localhoalhost4.localdomain4
::1         localhost localhost.localdomain localhoalhost6.localdomain6
[root@nginx /]# 

19、从另外个容器内挂载到容器内

[root@localhost ~]# docker run -it --name volume-test4 --volumes-from volume-test1 centos
[root@31e417a11b2b /]# ls
anaconda-post.log  etc    media  root  sys
bin                home   mnt    run   tmp
data               lib    opt    sbin  usr
dev                lib64  proc   srv   var
[root@31e417a11b2b /]# ls /data/
aa  bb

20、自己创建个容器,在容器内源码安装nginx

[root@localhost ~]# docker run --name nginx-man -it centos
[root@e2eb2fac87da /]# 
[root@e2eb2fac87da /]# yum install -y wget gcc gcc-c++ make openssl-devel
[root@e2eb2fac87da /]# wget http://nginx.org/download/nginx-1.15.6.tar.gz
[root@e2eb2fac87da /]# wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.42.tar.gz
[root@e2eb2fac87da nginx-1.15.6]# useradd -s /sbin/nologin -M www
[root@e2eb2fac87da nginx-1.15.6]# ./configure --prefix=/usr/local/nginx --user=www --group=www --with-http_ssl_module --with-http_stub_status_module --with-pcre=/usr/local/src/pcre-8.42
[root@e2eb2fac87da nginx-1.15.6]# make
[root@e2eb2fac87da nginx-1.15.6]# make install

[root@e2eb2fac87da nginx-1.15.6]# vi /usr/local/nginx/conf/nginx.conf
daemon off;
[root@e2eb2fac87da nginx-1.15.6]# vi /etc/rc.local
/usr/local/nginx/sbin/nginx
[root@e2eb2fac87da ~]# exit;               
exit
[root@localhost ~]# docker ps -l
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                      PORTS               NAMES
e2eb2fac87da        centos              "/bin/bash"         22 minutes ago      Exited (0) 10 seconds ago                       nginx-man

21、创建自定义镜像,nginx不能在后台运行,只能用

docker run ......+ /usr/local/nginx/sbin/nginx
[root@localhost ~]# docker commit -m "my nginx" e2eb2fac87da hhh/my-nginx:v1
sha256:d6f97deea553b9be73bd03269bab7a0e408495aa96a652cd8e1cdbf7ca38e3e6
[root@localhost ~]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
hhh/my-nginx        v1                  d6f97deea553        28 seconds ago      421 MB
docker.io/nginx     latest              e81eb098537d        4 days ago          109 MB
docker.io/centos    latest              75835a67d134        6 weeks ago         200 MB
[root@localhost ~]# docker run -d -p 92:80 hhh/my-nginx:v1
e90770c69f7ef31b5af43f45f3b0b138ff32fca7e6e7700d28d065c2b313ef3c
[root@localhost ~]# docker ps -l
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                      PORTS               NAMES
e90770c69f7e        hhh/my-nginx:v1     "/bin/bash"         21 seconds ago      Exited (0) 19 seconds ago                       affectionate_bassi
[root@localhost ~]# docker run -it hhh/my-nginx:v1
[root@23798c07f13b /]# vi /etc/rc.local 
[root@23798c07f13b /]# exit;
exit
[root@localhost ~]# docker ps -l
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                      PORTS               NAMES
23798c07f13b        hhh/my-nginx:v1     "/bin/bash"         2 minutes ago       Exited (0) 52 seconds ago                       laughing_mestorf
[root@localhost ~]# docker commit -m "v2" 23798c07f13b hhh/my-nginx:v2
sha256:2399963591df59409a1f35c1f9e107e2a53757c4a9bfad7a6df44486143c80a0
[root@localhost ~]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
hhh/my-nginx        v2                  2399963591df        7 seconds ago       421 MB
hhh/my-nginx        v1                  d6f97deea553        6 minutes ago       421 MB
docker.io/nginx     latest              e81eb098537d        4 days ago          109 MB
docker.io/centos    latest              75835a67d134        6 weeks ago         200 MB
[root@localhost ~]# docker run -d -p 99:80 hhh/my-nginx:v2 /usr/local/nginx/sbin/nginx
2d7b444f98254329f594c75883b8d51290a73a673d9fa45322bbc2d742024444
[root@localhost ~]# docker ps -l
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                NAMES
2d7b444f9825        hhh/my-nginx:v2     "/usr/local/nginx/..."   9 seconds ago       Up 8 seconds        0.0.0.0:99->80/tcp   heuristic_minsky

22、用Dockerfile创建镜像

[root@localhost ~]# mkdir /opt/docker-file
[root@localhost ~]# cd /opt/docker-file/
[root@localhost docker-file]# mkdir nginx
[root@localhost docker-file]# cd nginx/
[root@localhost nginx]# pwd
/opt/docker-file/nginx
[root@localhost nginx]# 
[root@localhost nginx]# cat Dockerfile 
# This is My first Dockerfile
# Version 1.0
# Author: Hhh

# Base images
FROM centos

#MAINTAINER
MAINTAINER Hhh

#ADD
ADD pcre-8.42.tar.gz /usr/local/src
ADD nginx-1.15.6.tar.gz /usr/local/src

#RUN
RUN yum install -y wget gcc gcc-c++ make openssl-devel
RUN useradd -s /sbin/nologin -M www

#WORKDIR
WORKDIR /usr/local/src/nginx-1.15.6

RUN ./configure --prefix=/usr/local/nginx --user=www --group=www --with-http_ssl_module --with-http_stub_status_module --with-pcre=/usr/local/src/pcre-8.42 && make && make install

RUN echo "daemon off;">> /usr/local/nginx/conf/nginx.conf

ENV PATH /usr/local/nginx/sbin:$PATH
EXPOSE 80

CMD ["nginx"]
[root@localhost nginx]# docker build -t nginx-file:v1 /opt/docker-file/nginx/
[root@localhost nginx]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
nginx-file          v1                  fb1c4448bc67        35 seconds ago      418 MB
hhh/my-nginx        v2                  2399963591df        About an hour ago   421 MB
hhh/my-nginx        v1                  d6f97deea553        About an hour ago   421 MB
docker.io/nginx     latest              e81eb098537d        4 days ago          109 MB
docker.io/centos    latest              75835a67d134        6 weeks ago         200 MB

23、用stress工具来测试下容器

[root@localhost ~]# cd /opt/docker-file/
[root@localhost docker-file]# 
[root@localhost docker-file]# ls
nginx
[root@localhost docker-file]# mkdir stress
[root@localhost docker-file]# ls
nginx  stress
[root@localhost docker-file]# cd stress/
[root@localhost stress]# wget http://mirrors.aliyun.com/repo/epel-6.repo
[root@localhost stress]# cat Dockerfile 
FROM centos
ADD epel-6.repo /etc/yum.repos.d/
RUN yum -y install stress && yum clean all
ENTRYPOINT ["stress"]
[root@localhost stress]# docker build -t stress .
[root@localhost ~]# docker images
REPOSITORY           TAG                 IMAGE ID            CREATED              SIZE
stress               latest              81385a040eba        About a minute ago   223 MB
nginx-file           v1                  fb1c4448bc67        2 hours ago          418 MB
hhh/my-nginx         v2                  2399963591df        4 hours ago          421 MB
hhh/my-nginx         v1                  d6f97deea553        4 hours ago          421 MB
docker.io/nginx      latest              e81eb098537d        5 days ago           109 MB
docker.io/centos     latest              75835a67d134        6 weeks ago          200 MB
docker.io/registry   latest              2e2f252f3c88        2 months ago         33.3 MB

[root@localhost ~]# docker run -it --rm stress --cpu 1
[root@localhost ~]# docker run -it -c 512 stress --cpu 1
[root@localhost ~]# docker run -it --rm -m 128m stress --vm 1 --vm-bytes 120m --vm-hang 0

24、创建私有仓库

[root@localhost ~]# docker pull registry
[root@localhost ~]# docker run -d -p 5001:5000 registry
[root@localhost ~]# docker tag elasticsearch 192.168.65.137:5001/test/es:v1
[root@localhost ~]# docker push 192.168.65.137:5001/test/es:v1

从另外台服务器拉镜像

[root@localhost ~]# docker pull 192.168.65.137:5001/test/es:v1

25、docker web界面管理平台搭建

参考https://www.cnblogs.com/kevingrace/p/6867820.html

搭建完这样子

 

 

 

 

 

原文地址:https://www.cnblogs.com/guantou1992/p/10002614.html