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
搭建完这样子