赞
踩
什么是Docker容器?
容器是基于镜像启动起来的,容器中可以运行一个或多个进程。我们可以认为,镜像是Docker生命周期中的构建或者打包阶段,而容器则是启动或者执行阶段。 容器基于镜像启动,一旦容器启动完成后,我们就可以登录到容器中安装自己需要的软件或者服务。
Docker 借鉴了标准集装箱的概念。标准集装箱将货物运往世界各地,Docker 将这个模 型运用到自己的设计中,唯一不同的是:集装箱运输货物,而 Docker 运输软件。和集装箱一样,Docker 在执行上述操作时,并不关心容器中到底装了什么,它不管是 web 服务器,还是数据库,或者是应用程序服务器什么的。所有的容器都按照相同的方式将 内容“装载”进去。
[root@docker2 opt]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
nginx latest 7e4d58f0e5f3 7 days ago 133MB
[root@docker2 opt]# docker create -it nginx:latest /bin/bash
d9850fa13e2e1422fc9e0ce690d30f6977852f8d6bb858d51e151ebe09d3e891
[root@docker2 opt]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
d9850fa13e2e nginx:latest "/docker-entrypoint.…" 14 seconds ago Created heuristic_mccarthy
[root@docker2 opt]# docker start d9850fa13e2e
d9850fa13e2e
[root@docker2 opt]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
d9850fa13e2e nginx:latest "/docker-entrypoint.…" 2 minutes ago Up 4 seconds 80/tcp heuristic_mccarthy
[root@docker2 opt]# docker stop f04aeae9e8d1
[root@docker2 opt]# docker search centos7
NAME DESCRIPTION
ansible/centos7-ansible Ansible on Centos7
flyceek/centos7-jdk centos7-jdk
ryanj/centos7-s2i-nodejs STOP RUNNING YOUR APP BUILDS AS ROOT
paigeeworld/centos7 Centos7 with apache, iperf3, nmap, s
[root@docker2 opt]# docker pull paigeeworld/centos7
Using default tag: latest
latest: Pulling from paigeeworld/centos7
Image docker.io/paigeeworld/centos7:latest uses outdated schema1 manifest format. Please upgrade to a schema2 image for better future compatibility. More information at https://docs.docker.com/registry/spec/deprecated-schema-v1/
a3ed95caeb02: Pull complete
[root@docker2 opt]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
nginx latest 7e4d58f0e5f3 7 days ago 133MB
paigeeworld/centos7 latest 4cbe7aa905e7 6 years ago 382MB
[root@docker2 opt]# docker create -it paigeeworld/centos7 /bin/bash
f04aeae9e8d172df5c1efcc5344516f31b4eabd2bc7b8b4ca3fb34535ec86b91
查看容器状态
[root@docker2 opt]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
f04aeae9e8d1 paigeeworld/centos7 "/bin/bash" 2 minutes ago Created distracted_ptolemy
d9850fa13e2e nginx:latest "/docker-entrypoint.…" 11 minutes ago Up 9 minutes 80/tcp heuristic_mccarthy
[root@docker2 opt]# docker start f04aeae9e8d1
f04aeae9e8d1
[root@docker2 opt]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
f04aeae9e8d1 paigeeworld/centos7 "/bin/bash" 3 minutes ago Up 3 seconds distracted_ptolemy
d9850fa13e2e nginx:latest "/docker-entrypoint.…" 12 minutes ago Up 10 minutes 80/tcp heuristic_mccarthy
[root@docker2 opt]# docker stop f04aeae9e8d1
f04aeae9e8d1
[root@docker2 opt]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
f04aeae9e8d1 paigeeworld/centos7 "/bin/bash" 4 minutes ago Exited (137) 3 seconds ago distracted_ptolemy
d9850fa13e2e nginx:latest "/docker-entrypoint.…" 13 minutes ago Up 11 minutes 80/tcp heuristic_mccarthy
[root@docker2 opt]# docker run paigeeworld/centos7 /usr/bin/bash -c ls / bin boot dev etc home lib lib64 lost+found media mnt opt proc root run sbin srv sys tmp usr var
相当于之前的docker run 命令 执行了 又创建了一个centos7 的容器,然后运行它,并查看了其根目录,然后又关闭了它 的操作
[root@docker2 opt]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
bb475fdf03ed paigeeworld/centos7 "/usr/bin/bash -c ls…" About a minute ago Exited (0) About a minute ago determined_borg
f04aeae9e8d1 paigeeworld/centos7 "/bin/bash" 8 minutes ago Exited (137) 3 minutes ago distracted_ptolemy
d9850fa13e2e nginx:latest "/docker-entrypoint.…" 16 minutes ago Up 14 minutes 80/tcp heuristic_mccarthy
docker run 命令 执行了 先自动下载镜像文件, 又创建了一个centos7 的容器,然后运行它,并查看了其根目录,然后又关闭了它 的操作
[root@SERVER 10 opt]# docker run paigeeworld/centos7 /usr/bin/bash -c ls / Unable to find image 'paigeeworld/centos7:latest' locally latest: Pulling from paigeeworld/centos7 Image docker.io/paigeeworld/centos7:latest uses outdated schema1 manifest format. Please upgrade to a schema2 image for better future compatibility. More information at https://docs.docker.com/registry/spec/deprecated-schema-v1/ a3ed95caeb02: Pull complete 7235103339cf: Pull complete c962e85f182c: Pull complete e945c72281a4: Pull complete bd558d66c6e0: Pull complete b6d31d07a319: Pull complete Digest: sha256:356b32d72680f0b9e0489af16961b2c3de74e18cbd391ffcf5ab085997fedf2b Status: Downloaded newer image for paigeeworld/centos7:latest bin boot dev etc home lib lib64 lost+found media mnt opt proc root run sbin srv sys tmp usr var [root@SERVER 10 opt]# docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 2c35c9b8be3b paigeeworld/centos7 "/usr/bin/bash -c ls…" 17 seconds ago Exited (0) 17 seconds ago dreamy_panini
docker exec -it ID 号 /bin/bash
(必须先运行容器,或容器已处于运行状态)
[root@docker2 opt]# docker start f04aeae9e8d1
f04aeae9e8d1
[root@docker2 opt]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
bb475fdf03ed paigeeworld/centos7 "/usr/bin/bash -c ls…" 24 minutes ago Exited (0) About a minute ago determined_borg
f04aeae9e8d1 paigeeworld/centos7 "/bin/bash" 30 minutes ago Up 2 seconds distracted_ptolemy
d9850fa13e2e nginx:latest "/docker-entrypoint.…" 39 minutes ago Up 37 minutes 80/tcp heuristic_mccarthy
进入容器
[root@docker2 opt]# docker exec -it f04aeae9e8d1 /bin/bash
bash-4.2# ls
bin boot dev etc home lib lib64 lost+found media mnt opt proc root run sbin srv sys tmp usr var
bash-4.2#
bash-4.2# exit
exit
[root@docker2 opt]# docker stop f04aeae9e8d1
f04aeae9e8d1
[root@docker2 opt]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
bb475fdf03ed paigeeworld/centos7 "/usr/bin/bash -c ls…" 26minutes ago Exited (0) 4 minutes ago determined_borg
f04aeae9e8d1 paigeeworld/centos7 "/bin/bash" 33 minutes ago Exited (137) 15 seconds ago distracted_ptolemy
d9850fa13e2e nginx:latest "/docker-entrypoint.…" 42minutes ago Up 40 minutes 80/tcp heuristic_mccarthy
通过设置死循环,让容器一直运行,-d 守护进程
[root@docker2 opt]# docker run -d paigeeworld/centos7 /bin/bash -c “while true;do echo hello;done”
c06add1ec27df716c02929b5edd893c3690247c1b0de1ac875598fffd4d78757
会发现容器一直处于运行状态
[root@docker2 opt]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
c06add1ec27d paigeeworld/centos7 “/bin/bash -c 'while…” 45 seconds ago Up 44 seconds jolly_chatterjee
9cae901fe6ed paigeeworld/centos7 “/bin/bash -c 'while…” 12 minutes ago Exited (1) 12 minutes ago fervent_feistel
bb475fdf03ed paigeeworld/centos7 “/usr/bin/bash -c ls…” 41 minutes ago Exited (0) 19 minutes ago determined_borg
f04aeae9e8d1 paigeeworld/centos7 “/bin/bash” 48 minutes ago Exited (137) 15 minutes ago distracted_ptolemy
d9850fa13e2e nginx:latest “/docker-entrypoint.…” 57 minutes ago Up 55 minutes 80/tcp heuristic_mccarthy
停止运行容器
[root@docker2 opt]# docker stop c06add1ec27d
c06add1ec27d
[root@docker2 opt]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
c06add1ec27d paigeeworld/centos7 "/bin/bash -c 'while…" 3 minutes ago Exited (137) 10 seconds ago joll
[root@docker2 opt]# ls
containerd nginx rh
[root@docker2 opt]# docker export d9850fa13e2e > nginx_c
[root@docker2 opt]# ls
containerd nginx nginx_c rh
[root@docker2 opt]# scp nginx_c root@192.168.100.10:/opt
root@192.168.100.10's password:
nginx_c 100% 129MB 130.9MB/s 00:00
[root@docker2 opt]#
[root@SERVER 10 opt]# cat nginx_c | docker import - nginx:web
sha256:b2732e94c331a809dbdac585bb8df86ec298e35a99db1f29200cdbc8d3c4d205
[root@SERVER 10 opt]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
nginx web b2732e94c331 5 seconds ago 131MB
[root@SERVER 10 opt]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
[root@SERVER 10 opt]# docker create -it nginx:web /bin/bash
95ab1d44b0c46b2f3a4ac4436b1b0236a5c6b67907fa87e78ea442907b95634e
[root@SERVER 10 opt]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
95ab1d44b0c4 nginx:web "/bin/bash" 10 secondsago Created practical_lichterman
[root@SERVER 10 opt]# docker start 95ab1d44b0c4
95ab1d44b0c4
[root@SERVER 10 opt]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
95ab1d44b0c4 nginx:web "/bin/bash" 4 minutes ago Up 3 minutes practical_lichterman
[root@docker2 opt]# docker ps -a | awk '{print "decker rm "$1}'
decker rm CONTAINER
decker rm c06add1ec27d
decker rm 9cae901fe6ed
decker rm bb475fdf03ed
decker rm f04aeae9e8d1
decker rm d9850fa13e2e
(在运行的容器不会删除,因为会报错提示,此命令用于批量删除未使用的容器)
[root@docker2 opt]# docker ps -a | awk '{print "docker rm "$1}' | bash
Error: No such container: CONTAINER
c06add1ec27d
9cae901fe6ed
bb475fdf03ed
f04aeae9e8d1
[root@docker1 apache]# docker run -v /var/www:/data1 --name web1 -it centos:7 /bin/bash
[root@443744cf30b3 /]# ls
anaconda-post.log data1 etc lib media opt root sbin sys usr
bin dev home lib64 mnt proc run srv tmp var
[root@443744cf30b3 /]# cd data1
[root@443744cf30b3 data1]# touch abc.txt
[root@443744cf30b3 data1]#
文件数据共享
[root@docker1 apache]# cd /var/www
[root@docker1 www]# ls
[root@docker1 www]# ls
[root@docker1 www]# ls
[root@docker1 www]# ls
abc.txt
[root@docker1 www]# touch cde.txt
[root@docker1 www]# ls
abc.txt cde.txt
[root@443744cf30b3 data1]# ls
abc.txt cde.txt
[root@443744cf30b3 data1]#
//数据卷容器
[root@docker2 ~]# docker run --name web100 -v /data1 -v /data2 -it centos /bin/bash Unable to find image 'centos:latest' locally latest: Pulling from library/centos 3c72a8ed6814: Pull complete Digest: sha256:76d24f3ba3317fa945743bb3746fbaf3a0b752f10b10376960de01da70685fbd Status: Downloaded newer image for centos:latest [root@bc0dbbdd3408 /]# ls bin data2 etc lib lost+found mnt proc run srv tmp var data1 dev home lib64 media opt root sbin sys usr [root@bc0dbbdd3408 /]# cd data1 [root@bc0dbbdd3408 data1]# echo "12345" > test1.txt [root@bc0dbbdd3408 data1]# cd ../ [root@bc0dbbdd3408 /]# ls bin data2 etc lib lost+found mnt proc run srv tmp var data1 dev home lib64 media opt root sbin sys usr [root@bc0dbbdd3408 /]# cd data2 [root@bc0dbbdd3408 data2]# echo "45678" > test2.txt [root@bc0dbbdd3408 data2]# ls test2.txt [root@bc0dbbdd3408 data2]# cd ../data1 [root@bc0dbbdd3408 data1]# ls test1.txt [root@bc0dbbdd3408 data1]# exit exit
[root@docker2 ~]# docker run -it --volumes-from web100 --name db1 centos /bin/bash
[root@0b152c50576d /]# ls
bin data2 etc lib lost+found mnt proc run srv tmp var
data1 dev home lib64 media opt root sbin sys usr
查看目录,发现数据已达到了同步的目的
[root@0b152c50576d /]# cd data1
[root@0b152c50576d data1]# ls
test1.txt
[root@0b152c50576d data1]# cd data2
bash: cd: data2: No such file or directory
[root@0b152c50576d data1]# cd data2
bash: cd: data2: No such file or directory
[root@0b152c50576d data1]# cd ../
[root@0b152c50576d /]# cd data2
[root@0b152c50576d data2]# ls
test2.txt
[root@docker2 apache]# docker run -itd -P --name web11 centos:7 /bin/bash
075e9cdd940e8a3a4d21694d1572f417c90d67bcfd60fab64f0f8a72e79b6aae
web11:web:11 名字和别名
[root@docker2 apache]# docker run -itd -P --name web22 --link web11:web11 centos:7/bin/bash
21db10af75fe22a48b47a259a260b7d6d69336e9a2a087a6255e9e508d4f33ee
[root@docker2 apache]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
21db10af75fe centos:7 "/bin/bash" 5 seconds ago Up 4 seconds web22
075e9cdd940e centos:7 "/bin/bash" About a minute ago Up About a minute web11
[root@docker2 apache]# docker exec -it 21db10af75fe /bin/bash
[root@21db10af75fe /]# ping web11
PING web11 (172.17.0.4) 56(84) bytes of data.
64 bytes from web11 (172.17.0.4): icmp_seq=1 ttl=64 time=0.077 ms
64 bytes from web11 (172.17.0.4): icmp_seq=2 ttl=64 time=0.043 ms
64 bytes from web11 (172.17.0.4): icmp_seq=3 ttl=64 time=0.044 ms
64 bytes from web11 (172.17.0.4): icmp_seq=4 ttl=64 time=0.122 ms
64 bytes from web11 (172.17.0.4): icmp_seq=5 ttl=64 time=0.081 ms
64 bytes from web11 (172.17.0.4): icmp_seq=6 ttl=64 time=0.178 ms
64 bytes from web11 (172.17.0.4): icmp_seq=7 ttl=64 time=0.044 ms
[root@docker2 ~]# docker exec -it web11 /bin/bash
[root@075e9cdd940e /]# ping web12
ping: web12: Name or service not known
[root@075e9cdd940e /]#
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。