![centos7安裝docker](http://p2.ttnews.xyz/loading.gif)
1.把yum包更新到最新(生產環境謹慎)
yum update
2.安裝需要的軟件包, yum-util 提供yum-config-manager功能,另外兩個是devicemapper驅動依賴的
yum install -y yum-utils device-mapper-persistent-data lvm2
3. 設置yum源
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
Loaded plugins: fastestmirror
adding repo from: https://download.docker.com/linux/centos/docker-ce.repo
grabbing file https://download.docker.com/linux/centos/docker-ce.repo to /etc/yum.repos.d/docker-ce.repo
repo saved to /etc/yum.repos.d/docker-ce.repo
4,可以查看所有倉庫中所有docker版本,並選擇特定版本安裝
yum list docker-ce --showduplicates | sort -r
5.安裝Docker,命令:yum install docker-ce-版本號,我選的是18.03.1.ce-1.el7.centos,如下
yum install docker-ce-18.03.1.ce-1.el7.centos
6. 啟動Docker,命令:
systemctl start docker
然後加入開機啟動,如下:
systemctl start docker
systemctl enable docker
7,驗證安裝是否成功(有client和service兩部分表示docker安裝啟動都成功了)
docker version
Client:
Version: 18.03.1-ce
API version: 1.37
Go version: go1.9.5
Git commit: 9ee9f40
Built: Thu Apr 26 07:20:16 2018
OS/Arch: linux/amd64
Experimental: false
Orchestrator: swarm
Server:
Engine:
Version: 18.03.1-ce
API version: 1.37 (minimum version 1.12)
Go version: go1.9.5
Git commit: 9ee9f40
Built: Thu Apr 26 07:23:58 2018
OS/Arch: linux/amd64
Experimental: false
8.docker常用命令
(1)啟動docker
systemctl start docker.service
(2)停止docker
systemctl stop docker
(3)查看當前docker狀態
systemctl status docker
(4) 拉取鏡像
從 docker hub 拉取
https://hub.docker.com/
下面的例子將從Docker Hub 倉庫下載一個 Tomcat 7 版本的服務器鏡像。
docker pull tomcat:7
這是docker默認的公用倉庫,不過缺點是國內下載會比較慢。
(5)鏡像加速 :從 ustc 拉取(建議使用)
vi /etc/docker/daemon.json
請在該配置文件中加入(沒有該文件的話,請先建一個):
{
"registry-mirrors":["https://docker.mirrors.ustc.edu.cn"]
}
"registry-mirrors":["https://j8i75uxu.mirror.aliyuncs.com"] 阿里雲
最後,需要重啟 docker 服務
systemctl restart docker
docker search tomcat
(6)刪除鏡像
docker rmi hello-world
docker rmi -f hello-world 強制
docker rmi -f$(docker image -q)
(7)啟動交互式容器
docker run -it --name centos (centos 為鏡像名稱)
docker run -it --name 0f3e07c01...(鏡像ID) -
(8)啟動後臺守護容器
docker run -d --name 0f3e07c01...(鏡像ID)
docker run -d centos /bin/sh -c "while true;do echo hello world;sleep 2;done"
docker logs -t -f 容器id
(9)退出容器 exit
(10)其他
docker inspect 容器id
docker exec -it 容器id /bin/bash
docker exec -it 容器id ls -l /tmp
docker ps 查看運行中的容器
docker start/stop/kill 容器名稱 或id
docker cp 容器id:/tmp/yum.log /root
docker run -it -p 8888:8080 centos
進入交互 docker exec -it 容器id /bin/bash
(11)容器數據卷
命令添加 dockerfile
1.docker run -it -v /myData:/myDockerdata centos
2.dockerfile
from centos
VOLUME ["/myData1","/myData2"]
CMD echo “finished,------success1”
CMD /bin/bash
dockerfile 創建容器
docker build -f /mydocker/Dockerfile -t tanchao/centos .
docker run -it --name dc01 zzyy/centos
volumes-from容器間傳遞共享
docker run -it --name dc02 --volumes-from dc01 tanchao/centos
dockerfile 樣例
保留字
RUN RUN groupadd -r -g 999 redis && useradd -r -g redis -u 999 redis
EXPOSE 端口
CMD / ENTRYPOINT
centos
FROM scratch
ADD centos-7-x86_64-docker.tar.xz /
LABEL org.label-schema.schema-version="1.0" \\
org.label-schema.name="CentOS Base Image" \\
org.label-schema.vendor="CentOS" \\
org.label-schema.license="GPLv2" \\
org.label-schema.build-date="20191001"
CMD ["/bin/bash"]
FROM scratch
ADD centos-7-docker.tar.xz /
LABEL org.label-schema.schema-version = "1.0" \\
org.label-schema.name="CentOS Base Image" \\
org.label-schema.vendor="CentOS" \\
org.label-schema.license="GPLv2" \\
org.label-schema.build-date="20180531"
CMD ["/bin/bash"]
redis
FROM debian:buster-slim
# add our user and group first to make sure their IDs get assigned consistently, regardless of whatever dependencies get added
RUN groupadd -r -g 999 redis && useradd -r -g redis -u 999 redis
# grab gosu for easy step-down from root
# https://github.com/tianon/gosu/releases
ENV GOSU_VERSION 1.11
RUN set -eux; \\
# save list of currently installed packages for later so we can clean up
savedAptMark="$(apt-mark showmanual)"; \\
apt-get update; \\
apt-get install -y --no-install-recommends \\
ca-certificates \\
dirmngr \\
gnupg \\
wget \\
; \\
rm -rf /var/lib/apt/lists/*; \\
\\
dpkgArch="$(dpkg --print-architecture | awk -F- '{ print $NF }')"; \\
wget -O /usr/local/bin/gosu "https://github.com/tianon/gosu/releases/download/$GOSU_VERSION/gosu-$dpkgArch"; \\
wget -O /usr/local/bin/gosu.asc "https://github.com/tianon/gosu/releases/download/$GOSU_VERSION/gosu-$dpkgArch.asc"; \\
\\
# verify the signature
export GNUPGHOME="$(mktemp -d)"; \\
gpg --batch --keyserver hkps://keys.openpgp.org --recv-keys B42F6819007F00F88E364FD4036A9C25BF357DD4; \\
gpg --batch --verify /usr/local/bin/gosu.asc /usr/local/bin/gosu; \\
gpgconf --kill all; \\
rm -rf "$GNUPGHOME" /usr/local/bin/gosu.asc; \\
\\
# clean up fetch dependencies
apt-mark auto '.*' > /dev/null; \\
[ -z "$savedAptMark" ] || apt-mark manual $savedAptMark > /dev/null; \\
apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false; \\
\\
chmod +x /usr/local/bin/gosu; \\
# verify that the binary works
gosu --version; \\
gosu nobody true
ENV REDIS_VERSION 4.0.14
ENV REDIS_DOWNLOAD_URL http://download.redis.io/releases/redis-4.0.14.tar.gz
ENV REDIS_DOWNLOAD_SHA 1e1e18420a86cfb285933123b04a82e1ebda20bfb0a289472745a087587e93a7
RUN set -eux; \\
\\
savedAptMark="$(apt-mark showmanual)"; \\
apt-get update; \\
apt-get install -y --no-install-recommends \\
ca-certificates \\
wget \\
\\
gcc \\
libc6-dev \\
make \\
; \\
rm -rf /var/lib/apt/lists/*; \\
\\
wget -O redis.tar.gz "$REDIS_DOWNLOAD_URL"; \\
echo "$REDIS_DOWNLOAD_SHA *redis.tar.gz" | sha256sum -c -; \\
mkdir -p /usr/src/redis; \\
tar -xzf redis.tar.gz -C /usr/src/redis --strip-components=1; \\
rm redis.tar.gz; \\
\\
# disable Redis protected mode [1] as it is unnecessary in context of Docker
# (ports are not automatically exposed when running inside Docker, but rather explicitly by specifying -p / -P)
# [1]: https://github.com/antirez/redis/commit/edd4d555df57dc84265fdfb4ef59a4678832f6da
grep -q '^#define CONFIG_DEFAULT_PROTECTED_MODE 1$' /usr/src/redis/src/server.h; \\
sed -ri 's!^(#define CONFIG_DEFAULT_PROTECTED_MODE) 1$!\\1 0!' /usr/src/redis/src/server.h; \\
grep -q '^#define CONFIG_DEFAULT_PROTECTED_MODE 0$' /usr/src/redis/src/server.h; \\
# for future reference, we modify this directly in the source instead of just supplying a default configuration flag because apparently "if you specify any argument to redis-server, [it assumes] you are going to specify everything"
# see also https://github.com/docker-library/redis/issues/4#issuecomment-50780840
# (more exactly, this makes sure the default behavior of "save on SIGTERM" stays functional by default)
\\
make -C /usr/src/redis -j "$(nproc)"; \\
make -C /usr/src/redis install; \\
\\
# TODO https://github.com/antirez/redis/pull/3494 (deduplicate "redis-server" copies)
serverMd5="$(md5sum /usr/local/bin/redis-server | cut -d' ' -f1)"; export serverMd5; \\
find /usr/local/bin/redis* -maxdepth 0 \\
-type f -not -name redis-server \\
-exec sh -eux -c ' \\
md5="$(md5sum "$1" | cut -d" " -f1)"; \\
test "$md5" = "$serverMd5"; \\
' -- '{}' ';' \\
-exec ln -svfT 'redis-server' '{}' ';' \\
; \\
\\
rm -r /usr/src/redis; \\
\\
apt-mark auto '.*' > /dev/null; \\
[ -z "$savedAptMark" ] || apt-mark manual $savedAptMark > /dev/null; \\
apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false; \\
\\
redis-cli --version; \\
redis-server --version
RUN mkdir /data && chown redis:redis /data
VOLUME /data
WORKDIR /data
COPY docker-entrypoint.sh /usr/local/bin/
ENTRYPOINT ["docker-entrypoint.sh"]
EXPOSE 6379
CMD ["redis-server"]
編寫
FROM centos
ENV MYPATH /usr/local
WORKDIR $MYPAHT
RUN yum -y install vim
RUN yum -y install net-tools
EXPOSE 80
CMD echo $MYPATH
CMD echo "success ---------ok"
CMD /bin/bash
提交鏡像
1.docker commit -a ='zhuozhe' -m="shuoming" 容器id at xxx/tomcat:1.2
2.push
阿里雲
https://cr.console.aliyun.com/cn-hangzhou/instances/repositories
公網地址 registry.cn-hangzhou.aliyuncs.com/tanchao/mydocker
專有網絡registry-vpc.cn-hangzhou.aliyuncs.com/tanchao/mydocker
經典網絡registry-internal.cn-hangzhou.aliyuncs.com/tanchao/mydocker
閱讀更多 幸福不會扯淡 的文章