docker search centos # 查找源中镜像
docker pull centos:6 # 从官方下载centos的docker镜像
docker images # 查看docker镜像
docker ps # 查看docker启动的容器
docker ps -a # 查看docker所有容器 包括未启动的
docker run -d -t -i centos:6 /bin/bash # 启动docker隔离的容器 -t 让Docker分配一个伪终端,并绑定到容器的标准输入上. -i 则让容器的标准输入保持打开. -d 守护进程
docker attach ID # 进入后台的容器 指定容器ID # util-linux 也可以进入容器
docker logs ID # 获取容器内输出信息
docker stop ID # 停止已启动的容器
docker start ID # 启动已停止的容器
docker restart ID # 重启容器
docker export 7691a814370e > centos_a.tar # 导出容器快照到本地
cat centos_a.tar | docker import - test/centos_a:v1.0 # 从容器快照文件中再导入为镜像
docker save -o centos.6.tar centos:6 # 保存镜像到文件
docker load --input centos.6.tar # 载入镜像文件
docker rm 容器ID # 删除终止状态的容器 加-f强制终止运行中的容器
docker rmi test/centos_a:v1.0 # 移除本地镜像 在删除镜像之前要先用 docker rm 删掉依赖于这个镜像的所有容器
brctl show # 查看网桥
docker pull library/nginx
docker run --name some-nginx -v /some/content:/usr/share/nginx/html:ro -d nginx
mkdir testa # 创建静态资源目录
vim testa/a.txt
aaaaaa
vim Dockerfile # 创建 Dockerfile 文件
FROM nginx
COPY testa /usr/share/nginx/html # 拷贝前面创建的静态资源目录
# Dockerfile用来创建一个自定义的image,包含了用户指定的软件依赖等。当前目录下包含Dockerfile,使用命令build来创建新的image,并命名为 some-content-nginx
docker build -t some-content-nginx .
docker run --name some-nginx -d some-content-nginx
docker run --name some-nginx-test1 -d -p 8080:80 some-content-nginx # 暴漏端口的方式
docker run -d --name db training/postgres
docker run -d -P --name web --link db:db training/webapp python app.py # 新建立容器,并连接db容器 --link name:alias
docker search mysql --搜索镜像
docker pull docker.io/mysql --下载镜像
docker images --查看下载的镜像
docker tag docker.io/mysql mysql8:new --给镜像加标签
docker inspect d06c3c789716 --查看镜像的详细信息
docker rmi mysql8:new --删除镜像,注意如果用容器使用这个镜像,先删除容器,再删除镜像
在已有的镜像上面添加新内容
docker run -ti docker.io/centos /bin/bash 先进入容器,记住容器的id
[root@localhost ~]# docker run -ti docker.io/centos /bin/bash
[root@fafd0c8100ce /]#
[root@fafd0c8100ce /]# touch my.txt
[root@fafd0c8100ce /]# echo 1111111>my.txt
bash: 1111111: Bad file descriptor
[root@fafd0c8100ce /]# echo "1111111">my.txt
[root@fafd0c8100ce /]#
[root@fafd0c8100ce /]# exit
exit
在容器里面创建一个文件,并输入1111111
[root@localhost ~]# docker commit -m "create a new file" -a "dandh" fafd0c8100ce centos:new
sha256:d7ed49fd9b7df6692ffff18c7bc21faa5509e425804d9dd441a0d3936d25e42a
[root@localhost ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
centos new d7ed49fd9b7d 41 seconds ago 274 MB
docker.io/mysql latest d06c3c789716 28 hours ago 477 MB
docker.io/centos latest 1e1148e4cc2c 6 weeks ago 202 MB
这里可以看出多了一个镜像,第一行,我们可以运行下容器看下,看下里面的文件还在不在
[root@localhost ~]# docker run -ti d7ed49fd9b7d /bin/bash
[root@15f188d20362 /]# ls
anaconda-post.log bin dev etc home lib lib64 media mnt my.txt opt proc root run sbin srv sys tmp usr var
[root@15f188d20362 /]# cat my.txt
1111111
[root@15f188d20362 /]#
这样看来没有问题
镜像的导入和导出
[root@localhost ~]# docker save -o mysql.tar docker.io/mysql:latest
[root@localhost ~]# ll
总用量 470748
-rw-------. 1 root root 1258 1月 22 17:26 anaconda-ks.cfg
-rw-------. 1 root root 482041344 1月 23 10:25 mysql.tar
我先删除mysql镜像,再从mysql.tar导入试下,记录镜像id
[root@localhost ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
centos new d7ed49fd9b7d 17 minutes ago 274 MB
docker.io/mysql latest d06c3c789716 29 hours ago 477 MB
docker.io/centos latest 1e1148e4cc2c 6 weeks ago 202 MB
[root@localhost ~]#
[root@localhost ~]# docker rmi d06c3c789716
Untagged: docker.io/mysql:latest
Deleted: sha256:d06c3c789716edfe9bf07bca224741bc61d096068753c57b2bf9ac9e6e37ce0c
Deleted: sha256:32e2321f2dfd47d088f46a0162cf1349cd787a2b81e7623df191d67daf62afbb
Deleted: sha256:7bcb817b23dcb5b87062cf2386413bc043a52c9b814ba82f748278243ece3df1
Deleted: sha256:07048bf3471f3b68a7ad81f3bbc851165996c4ee639c12934198298b7e898dd3
Deleted: sha256:6f8adf09b7c4323c8fc1c26887bab159688aa66543e951c3115c12601e821e67
Deleted: sha256:b5b2c699cca2c5cc6adf56db40d0dce427099c69189daf267c7563ec27db8bf5
Deleted: sha256:e4e5e2c13bfc19ea0b7931fe111b490026c943d49b9b0fc658134bc168f8f4f0
Deleted: sha256:6cc2a43de520c5c2fb3308ecc23cb93e5ca4e40c2c5c781825572f1dcfc12010
Deleted: sha256:41a87a1b83603cb4cbd7b95fe803ab3c37f5cf1fda058361a89108f5ae6f33cb
Deleted: sha256:fb70646553d25ffeca12296dd9ef69cc6a61567d4636adf41c195ceaa7d91bba
Deleted: sha256:044ab08434546e6569ed9ac43200e0c696c38751e1eb88748063256183beecf9
Deleted: sha256:8de920f11cbdc968c39f60866eaea7e60b3f60e76fca76d585a11ee5a872322d
Deleted: sha256:7b4e562e58dcb7fbe1e27bb274f0ff8bfeb2fd965203380436e159df9f218900
[root@localhost ~]#
导入镜像
[root@localhost ~]# docker load <mysql.tar
7b4e562e58dc: Loading layer [==================================================>] 58.44 MB/58.44 MB
f01f1a2037eb: Loading layer [==================================================>] 338.4 kB/338.4 kB
b718c6b527ab: Loading layer [==================================================>] 10.44 MB/10.44 MB
6680e06777c4: Loading layer [==================================================>] 4.471 MB/4.471 MB
047cc8a3632b: Loading layer [==================================================>] 1.536 kB/1.536 kB
9c976f26b06d: Loading layer [==================================================>] 46.15 MB/46.15 MB
31c1ae796cfa: Loading layer [==================================================>] 30.72 kB/30.72 kB
fbe94c6b114f: Loading layer [==================================================>] 3.584 kB/3.584 kB
36ceffc9bf1e: Loading layer [==================================================>] 362.1 MB/362.1 MB
bfa4bad6b620: Loading layer [==================================================>] 5.632 kB/5.632 kB
d8e5a8556c8a: Loading layer [==================================================>] 9.728 kB/9.728 kB
a41846c12aba: Loading layer [==================================================>] 1.536 kB/1.536 kB
Loaded image: docker.io/mysql:latest
[root@localhost ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
centos new d7ed49fd9b7d 21 minutes ago 274 MB
docker.io/mysql latest d06c3c789716 29 hours ago 477 MB
docker.io/centos latest 1e1148e4cc2c 6 weeks ago 202 MB
[root@localhost ~]#
ok,完美实现镜像的导入和导出
docker push --上传自己的镜像到仓库,要先登录仓库
2,容器
创建一个空的容器
docker create -ti centos:7 --创建容器
docker ps -a 查看所有容器
docker ps --正在运行的容器
docker logs 15f188d20362 --查看容器日志
docker stop 15f188d20362 --终止容器
docker start 15f188d20362 --启动容器
docker restart 15f188d20362 --重启容器
docker attach 183f23fe4772 --进入容器
docker rm dfc0cca8fe24 --删除容器
docker exec -ti 183f23fe4772 /bin/bash --进入容器
导入和导入容器
[root@localhost ~]# docker export 18 >centis.run.tar
[root@localhost ~]# ll
总用量 723696
-rw-------. 1 root root 1258 1月 22 17:26 anaconda-ks.cfg
-rw-r--r--. 1 root root 259016192 1月 23 11:10 centis.run.tar
-rw-------. 1 root root 482041344 1月 23 10:25 mysql.tar
[root@localhost ~]#
[root@localhost ~]# docker export 15 >centis.stop.tar
[root@localhost ~]# ll
总用量 976644
-rw-------. 1 root root 1258 1月 22 17:26 anaconda-ks.cfg
-rw-r--r--. 1 root root 259016192 1月 23 11:10 centis.run.tar
-rw-r--r--. 1 root root 259016192 1月 23 11:12 centis.stop.tar
-rw-------. 1 root root 482041344 1月 23 10:25 mysql.tar
[root@localhost ~]#
导入容器
[root@localhost ~]# cat centis.stop.tar |docker import - centos/7
sha256:0c99ed1dff937157e38a96bd955e9ed5ef26bc704296a84b5053902b499cda7c
[root@localhost ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
centos/7 latest 0c99ed1dff93 36 seconds ago 250 MB
centos new d7ed49fd9b7d About an hour ago 274 MB
docker.io/mysql latest d06c3c789716 29 hours ago 477 MB
docker.io/centos 7 1e1148e4cc2c 6 weeks ago 202 MB
docker.io/centos latest 1e1148e4cc2c 6 weeks ago 202 MB
容器导入导出ok了
3,仓库
创建一个私有仓库
docker run -d -p 5000:5000 registry
4,数据管理
数据库卷的使用类似与linux的mount
先查看mysql镜像的信息
docker inspect docker.io/mysql:latest --查看到镜像里面mysql的data目录是/var/lib/mysql
先创建mysql的配置文件目录和数据目录
[root@localhost /]# mkdir /data
[root@localhost /]# mkdir /mysqlconf
启动mysql容器
[root@localhost /]# docker run -p 3306:3306 --name mysql8.0 -v /mysqlconf:/etc/mysql/conf.d -v /mysqldata:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=654321 -d d06c3c789716
48bfb6060a7e4178280873e24295aa7611e75ef4412f601d2c4830250a967a0e
[root@localhost /]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
48bfb6060a7e d06c3c789716 "docker-entrypoint..." 6 seconds ago Up 6 seconds 0.0.0.0:3306->3306/tcp, 33060/tcp mysql8.0
09e7e5bc28f0 registry "/entrypoint.sh /e..." 41 minutes ago Up 41 minutes 0.0.0.0:5000->5000/tcp hungry_austin
183f23fe4772 d7ed49fd9b7d "/bin/bash" About an hour ago Up About an hour infallible_brattain
[root@localhost /]# ls /mysqldata/
auto.cnf binlog.000002 ca-key.pem client-cert.pem ib_buffer_pool ib_logfile0 ibtmp1 mysql performance_schema public_key.pem server-key.pem undo_001
binlog.000001 binlog.index ca.pem client-key.pem ibdata1 ib_logfile1 #innodb_temp mysql.ibd private_key.pem server-cert.pem sys undo_002
进入容器
[root@localhost mysqldata]# docker exec -it 48bfb6060a7e /bin/bash
root@48bfb6060a7e:/#
root@48bfb6060a7e:/# mysql -u root -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 8
Server version: 8.0.14 MySQL Community Server - GPL
Copyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql>
授权外部链接
create database mydb default charset utf8;
ok,测试没有问题
[root@localhost ~]# cd /mysqldata/
[root@localhost mysqldata]# ll
总用量 179196
-rw-r-----. 1 polkitd input 56 1月 23 11:58 auto.cnf
-rw-r-----. 1 polkitd input 3073845 1月 23 12:00 binlog.000001
-rw-r-----. 1 polkitd input 199 1月 23 12:07 binlog.000002
-rw-r-----. 1 polkitd input 359 1月 23 12:28 binlog.000003
-rw-r-----. 1 polkitd input 48 1月 23 12:07 binlog.index
-rw-------. 1 polkitd input 1680 1月 23 11:58 ca-key.pem
-rw-r--r--. 1 polkitd input 1112 1月 23 11:58 ca.pem
-rw-r--r--. 1 polkitd input 1112 1月 23 11:58 client-cert.pem
-rw-------. 1 polkitd input 1676 1月 23 11:58 client-key.pem
-rw-r-----. 1 polkitd input 5949 1月 23 12:00 ib_buffer_pool
-rw-r-----. 1 polkitd input 12582912 1月 23 12:28 ibdata1
-rw-r-----. 1 polkitd input 50331648 1月 23 12:28 ib_logfile0
-rw-r-----. 1 polkitd input 50331648 1月 23 11:56 ib_logfile1
-rw-r-----. 1 polkitd input 12582912 1月 23 12:02 ibtmp1
drwxr-x---. 2 polkitd input 187 1月 23 12:02 #innodb_temp
drwxr-x---. 2 polkitd input 6 1月 23 12:28 mydb
drwxr-x---. 2 polkitd input 143 1月 23 11:58 mysql
-rw-r-----. 1 polkitd input 31457280 1月 23 12:28 mysql.ibd
drwxr-x---. 2 polkitd input 4096 1月 23 11:58 performance_schema
-rw-------. 1 polkitd input 1680 1月 23 11:58 private_key.pem
-rw-r--r--. 1 polkitd input 452 1月 23 11:58 public_key.pem
-rw-r--r--. 1 polkitd input 1112 1月 23 11:58 server-cert.pem
-rw-------. 1 polkitd input 1680 1月 23 11:58 server-key.pem
drwxr-x---. 2 polkitd input 28 1月 23 11:59 sys
-rw-r-----. 1 polkitd input 12582912 1月 23 12:02 undo_001
-rw-r-----. 1 polkitd input 10485760 1月 23 12:28 undo_002
其他命令
docker run :创建一个新的容器并运行一个命令
docker run --name mynginx -d nginx:latest
docker kill -s KILL mynginx --杀掉运行中的容器mynginx
docker pause :暂停容器中所有的进程。
docker unpause :恢复容器中所有的进程
docker pause db01 --暂停容器db01
docker unpause db01 --恢复容器db01
docker create --name myrunoob nginx:latest --使用docker镜像nginx:latest创建一个容器,并将容器命名为myrunoob
docker exec -it mynginx /bin/sh /root/runoob.sh --在容器 mynginx 中以交互模式执行容器内 /root/runoob.sh 脚本
docker ps --列出所有运行的容器
docker ps -a --列出所有容器(包含没有运行的)
docker inspect mysql:5.6 --获取镜像mysql:5.6的元信息。
docker top mymysql --查看容器mymysql的进程信息。
docker attach --sig-proxy=false mynginx --容器mynginx将访问日志指到标准输出,连接到容器查看访问信息。
docker events --since="1467302400" --显示docker 2016年7月1日后的所有事件。
docker logs -f mynginx --跟踪查看容器mynginx的日志输出。
docker export -o mysql-`date +%Y%m%d`.tar a404c6c174a2 --将id为a404c6c174a2的容器按日期保存为tar文件
docker port mymysql --查看容器mynginx的端口映射情况。
docker commit -a "runoob.com" -m "my apache" a404c6c174a2 mymysql:v1 --将容器a404c6c174a2 保存为新的镜像,并添加提交人信息和说明信息
docker cp /www/runoob 96f7f14e99ab:/www/ --将主机/www/runoob目录拷贝到容器96f7f14e99ab的/www目录下
docker diff mymysql --查看容器mymysql的文件结构更改
docker login -u 用户名 -p 密码 --登陆到Docker Hub
docker tag ubuntu:15.10 runoob/ubuntu:v3 --将镜像ubuntu:15.10标记为 runoob/ubuntu:v3 镜像
docker build -t runoob/ubuntu:v1 . --使用当前目录的 Dockerfile 创建镜像,标签为 runoob/ubuntu:v1
docker history runoob/ubuntu:v3 --查看本地镜像runoob/ubuntu:v3的创建历史
docker save -o my_ubuntu_v3.tar runoob/ubuntu:v3 --将镜像 runoob/ubuntu:v3 生成 my_ubuntu_v3.tar 文档
docker load < busybox.tar.gz
docker load --input fedora.tar
docker import my_ubuntu_v3.tar runoob/ubuntu:v4 --从镜像归档文件my_ubuntu_v3.tar创建镜像,命名为runoob/ubuntu:v4