Docker 命令教程(附中文解释)

2020-06-17 06:57:12易采站长站整理

[root@d4a75f165ce6 /]#

build Build an image from a Dockerfile
--通过Dockerfile创建镜像

commit Create a new image from a container's changes
--通过容器创建本地镜像
注意:如果是要push到docker hub中,注意生成镜像的命名
[root@localhost ~]# docker commit centos_v1 centos:v1
68ad49c999496cff25fdda58f0521530a143d3884e61bce7ada09bdc22337638
[root@localhost ~]# docker push centos:v1
You cannot push a "root" repository. Please rename your repository to <user>/<repo> (ex: <user>/centos)
用centos:v1就不行,因为它push到docker hub中时,是推送到相应用户下,必须指定用户名。譬如我的用户名是ivictor,则新生成的本地镜像命名为:
docker push victor/centos:v1,其中v1是tag,可不写,默认是latest

cp Copy files/folders from a container to a HOSTDIR or to STDOUT
--在宿主机和容器之间相互COPY文件
cp的用法如下:
Usage: docker cp [OPTIONS] CONTAINER:PATH LOCALPATH|-
docker cp [OPTIONS] LOCALPATH|- CONTAINER:PATH
需要注意的是-的用法,我在容器新建了两个文本文件,其中一个为test.txt,内容如下:
root@839866a338db:/# cat test.txt
456
另一个文件为test1,txt,内容为:
root@839866a338db:/# cat test1.txt
helloworld
用法一的结果如下:
[root@localhost ~]# docker cp mysqldb:/test.tar -
test.tar0100644000000000000000000002400012573523153010736 0ustar0000000000000000test.txt000064400000000000000000000000141257352311101 1267 0ustar rootroot123
789
test1.txt0000644000000000000000000000001312573523124011353 0ustar rootroothelloworld
用法二的结果如下:
[root@localhost ~]# cat test.tar |docker cp - mysqldb:/
[root@localhost ~]# docker exec -it mysqldb /bin/bash
root@839866a338db:/# ls
bin dev entrypoint.sh home lib64 mnt proc run selinux sys test.txt tmp var
boot docker-entrypoint-initdb.d etc lib media opt root sbin srv test.tar test1.txt usr
--容器内新增了两个文件,test.txt和test1.txt,而这正是test.tar里打包的文件

create Create a new container
--创建一个新的容器,注意,此时,容器的status只是Created

diff Inspect changes on a container's filesystem
--查看容器内发生改变的文件,以我的mysql容器为例
[root@localhost ~]# docker diff mysqldb
C /root
A /root/.bash_history
A /test1.txt
A /test.tar
A /test.txt
C /run
C /run/mysqld
A /run/mysqld/mysqld.pid
A /run/mysqld/mysqld.sock
不难看出,C对应的均是目录,A对应的均是文件