简单使用容器,有下面的命令就够了。
1.启动docker服务
systemctl start docker.servicesystemctl enable docker.service
2. 查找镜像
docker search nginx
3. 拉取镜像
docker pull centosdocker pull daocloud.io/library/nginx
4. 查看镜像
[root@localhost ~]# docker imagesREPOSITORY TAG IMAGE ID CREATED SIZEdocker.io/hello-world latest f2a91732366c 5 weeks ago 1.848 kBdaocloud.io/centos 7 196e0ce0c9fb 3 months ago 196.6 MB
5. 运行一个带标签的镜像
[root@localhost ~]# docker run -t -i --name mydocker daocloud.io/centos:7 bin/bash[root@fb5b9e9601a1 ]# unameLinux[root@fb5b9e9601a1 ]# uname -aLinux fb5b9e9601a1 3.10.0-693.el7.x86_64 #1 SMP Thu Jul 6 19:56:57 EDT 2017 x86_64 x86_64 x86_64 GNU/Linux
如果没有镜像会先从网络下载,然后再运行
[root@localhost ~]# docker run --name mydocker -d daocloud.io/centos:7 bin/bash # -d 放入后台执行8d71876eb3c78958c3f87a3b4d7023604d16ddca734e9f2f98cd0c29048eae7f
6. 查看正在运行的容器 docker ps
[root@localhost ~]# docker psCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMESedd796847a66 daocloud.io/ubuntu:14.04 "/bin/bash" 36 minutes ago Up 36 minutes ubuntu
7. 查看所有容器
[root@localhost ~]# docker ps -aCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMESfb02f9cedb52 hello-world "/hello" 41 minutes ago Exited (0) 41 minutes ago furious_williams8d71876eb3c7 daocloud.io/centos:7 "/bin/bash" 51 minutes ago Exited (0) 51 minutes ago mydockerfb5b9e9601a1 daocloud.io/centos:7 "/bin/bash" About an hour ago Exited (0) About an hour ago new_containerd028e1886484 hello-world "/hello" 18 hours ago Exited (0) 18 hours ago modest_bose
8. 停止所有容器
docker kill $(docker ps -a -q)
9. 删除已停止的容器
[root@localhost ~]# docker rm mydockermydocker[root@localhost ~]# docker rm fb02f9cedb52fb02f9cedb52[root@localhost ~]# docker rm fb5b9e9601a1fb5b9e9601a1[root@localhost ~]# docker ps -aCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMESd028e1886484 hello-world "/hello" 19 hours ago Exited (0) 19 hours ago modest_bose
10. 删除所有已停止的容器
docker rm $(docker ps -a -q)
11. 进入容器 docker attach
[root@localhost ~]# docker run -itd --name mycentos daocloud.io/centos:724dc0e0140a392168f2157189d0410754448540079ea751008f087a01b204d32[root@localhost ~]#[root@localhost ~]# docker ps -aCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES24dc0e0140a3 daocloud.io/centos:7 "/bin/bash" 5 seconds ago Up 4 seconds mycentosd028e1886484 hello-world "/hello" 19 hours ago Exited (0) 19 hours ago modest_bose[root@localhost ~]# docker attach mycentos[root@24dc0e0140a3 ]#
12. 进入容器docker exec (推荐)
[root@localhost ~]# docker exec -it ubuntu bashroot@edd796847a66:/#root@edd796847a66:/#root@edd796847a66:/# pwd/root@edd796847a66:/# lsa.txt bin boot dev etc home lib lib64 media mnt opt proc root run sbin srv sys tmp usr varroot@edd796847a66:/# whoamirootroot@edd796847a66:/# exitexit
13. 宿主机和容器进行文件拷贝
[root@localhost ~]# docker attach ubunturoot@edd796847a66:/#root@edd796847a66:/# vi a.txtroot@edd796847a66:/#root@edd796847a66:/# ls -ltotal 24-rw-r--r--. 1 root root 9 Dec 26 08:56 a.txtdrwxr-xr-x. 2 root root 4096 Dec 7 23:04 bindrwxr-xr-x. 2 root root 6 Apr 10 2014 bootroot@edd796847a66:/#root@edd796847a66:/# pwd/root@edd796847a66:/#[root@localhost ~]#[root@localhost ~]# docker cp ubuntu:/a.txt .[root@localhost ~]# ls -ltotal 1376-rw-r--r--. 1 root root 9 Dec 26 16:56 a.txt[root@localhost ~]# cat a.txtasfasdf
14.容器重命名
[root@bogon ~]# docker psCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMESe8b3cfa6491e ubuntu "bash" 5 seconds ago Up 3 seconds suspicious_lewinf0557d6ec248 ubuntu "bash" 18 minutes ago Up 18 minutes loving_noyce[root@bogon ~]# docker rename suspicious_lewin test1[root@bogon ~]# docker rename loving_noyce test2[root@bogon ~]#[root@bogon ~]#[root@bogon ~]# docker psCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMESe8b3cfa6491e ubuntu "bash" 35 seconds ago Up 34 seconds test1f0557d6ec248 ubuntu "bash" 19 minutes ago Up 19 minutes test2[root@bogon ~]#
15.容器互联(link方式)
# 创建一个mysql容器docker run -d -e MYSQL_ROOT_PASSWORD=password --name mysqldb1 mysql:5.6# 创建一个web容器docker run -d -p 8000:80 --name php1 --link mysqldb1:mysqldb abiosoft/caddy:php# mysqldb是mysqldb1 这个容器的一个别名# abiosoft/caddy:php 镜像
--link name:alias,其中name是要链接的容器名称,alias是这个连接的名称,可以多次使用,php服务器可以连接多个数据库
# 进入容器ping数据库容器[root@bogon ~]# docker exec -it php1 sh/srv #/srv # cat etc/hosts127.0.0.1 localhost::1 localhost ip6-localhost ip6-loopbackfe00::0 ip6-localnetff00::0 ip6-mcastprefixff02::1 ip6-allnodesff02::2 ip6-allrouters172.17.0.4 mysqldb c3967506ef66 mysqldb1172.17.0.5 b344f7345d44/srv #/srv # ping mysqldb1PING mysqldb1 (172.17.0.4): 56 data bytes64 bytes from 172.17.0.4: seq=0 ttl=64 time=0.451 ms64 bytes from 172.17.0.4: seq=1 ttl=64 time=0.199 ms64 bytes from 172.17.0.4: seq=2 ttl=64 time=0.199 ms/srv #/srv # ping mysqldbPING mysqldb (172.17.0.4): 56 data bytes64 bytes from 172.17.0.4: seq=0 ttl=64 time=0.225 ms64 bytes from 172.17.0.4: seq=1 ttl=64 time=0.323 ms64 bytes from 172.17.0.4: seq=2 ttl=64 time=0.268 ms环境变量也发生了变化[root@bogon ~]# docker exec -it php1 envPATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/binHOSTNAME=b344f7345d44TERM=xtermMYSQLDB_PORT=tcp://172.17.0.4:3306MYSQLDB_PORT_3306_TCP=tcp://172.17.0.4:3306MYSQLDB_PORT_3306_TCP_ADDR=172.17.0.4MYSQLDB_PORT_3306_TCP_PORT=3306MYSQLDB_PORT_3306_TCP_PROTO=tcpMYSQLDB_NAME=/php1/mysqldbMYSQLDB_ENV_MYSQL_ROOT_PASSWORD=passwordMYSQLDB_ENV_GOSU_VERSION=1.7MYSQLDB_ENV_MYSQL_MAJOR=5.6MYSQLDB_ENV_MYSQL_VERSION=5.6.38-1debian8HOME=/root
16. 导出和导入镜像
有时候不希望镜像发布到互联网,而且内网主机无法从仓库拉取镜像,那么可以使用下面的命令把镜像进行导出,然后再导入导出镜像到本地文件系统
[root@host01 ~]# docker save haoxy/oracle > oracle19c.tar[root@host01 ~]# ls -lhtotal 6.3G-rw-------. 1 root root 1.3K Nov 13 09:12 anaconda-ks.cfgdrwxr-xr-x. 4 root root 64 Nov 13 12:51 oracle-rw-r--r--. 1 root root 6.3G Nov 19 14:52 oracle19c.tar
或者
[root@host01 ~]# docker save -o oracle19c.tar haoxy/oracle
从本地文件系统导入镜像
docker load -i oracle19c.tar或者docker load < oracle19c.tar
17.卷的使用(相当于U盘)
# 运行一个容器 宿主机的/vol目录挂载到容器的/vol下(宿主机和容器的/vol不需要存在)[root@bogon ~]# docker run -itd -v vol:/vol --name test_ubuntu ubuntu shaccf11ec48c6ca2ec6fa4663a998cc5b59ab7ede2d08386a1895d7b269d2566b# 或者 不加挂载点默认容器中的挂载目录就是/voldocker run -itd -v /vol --name test_ubuntu ubuntu sh# 或者 指定 容器的挂载目录docker run -itd -v /vol:/data --name test_ubuntu ubuntu sh# 进入容器内部[root@bogon ~]# docker exec -it test_ubuntu sh# dfFilesystem 1K-blocks Used Available Use% Mounted onoverlay 17811456 4301616 13509840 25% /tmpfs 65536 0 65536 0% /devtmpfs 499848 0 499848 0% /sys/fs/cgroup/dev/mapper/centos-root 17811456 4301616 13509840 25% /volshm 65536 0 65536 0% /dev/shmtmpfs 499848 0 499848 0% /proc/scsitmpfs 499848 0 499848 0% /sys/firmware# exit# 在宿主机的容器内创建文件[root@bogon ~]#[root@bogon ~]# df -hFilesystem Size Used Avail Use% Mounted on/dev/mapper/centos-root 17G 4.2G 13G 25% /devtmpfs 478M 0 478M 0% /devtmpfs 489M 0 489M 0% /dev/shmtmpfs 489M 13M 476M 3% /runtmpfs 489M 0 489M 0% /sys/fs/cgroup/dev/sda1 1014M 125M 890M 13% /boottmpfs 98M 0 98M 0% /run/user/0overlay 17G 4.2G 13G 25% /var/lib/docker/overlay2/6b2c6c0b2299aa68c36ce21d173b92ae5ddf427929e2271adbd7c8691a86411b/mergedshm 64M 0 64M 0% /var/lib/docker/containers/accf11ec48c6ca2ec6fa4663a998cc5b59ab7ede2d08386a1895d7b269d2566b/shm[root@bogon ~]# cd /vol/[root@bogon vol]# lltotal 0[root@bogon vol]# touch test_vol.txt[root@bogon vol]# echo "Hello World!!" >> test_vol.txtecho "Hello Worldtouch test_vol.txt" >> test_vol.txt[root@bogon vol]# cat test_vol.txtHello Worldtouch test_vol.txt# 进入容器可见[root@bogon vol]# docker exec -it test_ubuntu sh# dfFilesystem 1K-blocks Used Available Use% Mounted onoverlay 17811456 4301460 13509996 25% /tmpfs 65536 0 65536 0% /devtmpfs 499848 0 499848 0% /sys/fs/cgroup/dev/mapper/centos-root 17811456 4301460 13509996 25% /volshm 65536 0 65536 0% /dev/shmtmpfs 499848 0 499848 0% /proc/scsitmpfs 499848 0 499848 0% /sys/firmware# cd /vol# ls -ltotal 4-rw-r--r--. 1 root root 30 Jan 4 12:37 test_vol.txt# cat test*Hello Worldtouch test_vol.txt## 创建个文件夹# mkdir vol# ls -ltotal 4-rw-r--r--. 1 root root 30 Jan 4 12:37 test_vol.txtdrwxr-xr-x. 2 root root 6 Jan 4 12:37 vol# exit# 容器内在挂载点上创建的文件夹在宿主机上也能看到[root@bogon vol]# lltotal 4-rw-r--r--. 1 root root 30 Jan 4 20:37 test_vol.txtdrwxr-xr-x. 2 root root 6 Jan 4 20:37 vol[root@bogon vol]## 删除容器,数据不会丢失[root@bogon vol]# docker kill test_ubuntutest_ubuntu[root@bogon vol]#[root@bogon vol]# docker ps -aCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMESaccf11ec48c6 ubuntu "sh" 20 minutes ago Exited (137) 6 seconds ago test_ubuntu[root@bogon vol]# docker rm test_ubuntutest_ubuntu[root@bogon vol]# docker ps -aCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES[root@bogon vol]# lltotal 4-rw-r--r--. 1 root root 30 Jan 4 20:37 test_vol.txtdrwxr-xr-x. 2 root root 6 Jan 4 20:37 vol
最后修改时间:2019-12-17 13:15:11
文章转载自运维笔记本,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




